Code Monkey home page Code Monkey logo

chionographis's People

Contributors

furfurylic avatar

Stargazers

 avatar

Watchers

 avatar  avatar

chionographis's Issues

Make Transform filters can share the compiled stylesheet themselves

As of now, Transform filters can participate sharing of external parsed entities, XPath document function results, and xsl:includes and xsl:imports. But they cannot share the compiled stylesheets themselves.

There can be a scenario in which two or more Transform filters with an identical stylesheet appear in an Chionographis task because they have other parameter sets.

Add documents about usage

Documents about usage of Chionographis task and its child elements are required. It shall be supplied as independent documents from Javadoc comments.

Relax some constraints

I would think there are some unnecessary constraints:

  • Output sinks cannot have multiple file mappers, but there is no need to forbid to do so, and it seems useful if multiple files can be written at once.
  • Chionographis drivers cannot have multiple meta-information whose names (= targets of processing instructions) are identical. But if the driver guarantee the document order of the PIs, multiple PIs with an identical name are referred safely.

Original input source's meta information folding

Make Chionographis driver capable of set the original sources' meta information into its destination documents.

Supported meta information are file names, file paths, and file titles (file name minus extension).

Setting them is done as adding processing instructions as the document elements children.

Meta: relative URI support

So far, <meta> can provide URIs only in their absolute forms. I would think that it is not very useful because almost any time I would like to write stylesheets without any knowledge of their absolute location. So in my opinion <meta> should support relative URIs.

Add "force" attributes

Chionographis has an ordinary skipping mechanism in which the original source files are not not processed when the destination file is not older than the original.

Adding "force" attributes enables bypassing this mechanism and forcing processing.

This attribute shall be added to all of the drivers and sinks.

Make Snip filters "force"able

In #12, the source document contents became accessible for sink in prior to start sink's operation for that tree. So, there are no reason left not to make Snip filters "force"able.

Output sink: lazy compilation of XPath

As of now, Output sinks compile XPath expressions in their refer attributes in Output.init() method. Compiled XPath expressions are needed only when input sources are included into the process, so there is a chance to save the processor time.

Usage of URIResolver

Note again:

  • URIResolver is for <xsl:import/>, <xsl:include/> and document(). Not for source document's external entity. (What about external entities of documents loaded by document() function? I don't know.)
  • If we want to resolve source document's external entities, StreamSource is of no use. Use SAXSource instead.
  • For identity transformers, URIResolvers are no use.

Multithreading

As of now, Chionographis's execution uses no other threads than the main one. It would be good introduce multithreading. There's, however, no specific idea...

Improve exception reporting

As of now, Chionographis reports caught exceptions by Ant task's log method, but this method seems not to print track traces.This serves little help to find the cause of the issue.

Caching of documents referred by xsl:include, xsl:import, and document() function

Transform filter shall cache documents using URIResolver.

It seems that Xalan XSLTC fails on processing the document() function when a resolver registered by setURIResolver(), which wrongly change the context node onto a node in the resolved document. So we shall require a workaround, possibly which is an option to Transform filter with which the caching mechanism can be disabled.

Perhaps it is the best that the cached form of a documents is a DOM tree. This cache shall be shared by all Transform objects.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.