xalan-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From zong...@apache.org
Subject cvs commit: xml-xalan/java/samples/CompiledServlet README.servlet
Date Tue, 04 Feb 2003 16:21:25 GMT
zongaro     2003/02/04 08:21:25

  Modified:    java/samples/CompiledServlet Tag: XSLTC_DTM README.servlet
  Log:
  Revised documentation to drop references to XSLTC Native API.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.2.12.1  +1 -144    xml-xalan/java/samples/CompiledServlet/README.servlet
  
  Index: README.servlet
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/samples/CompiledServlet/README.servlet,v
  retrieving revision 1.2
  retrieving revision 1.2.12.1
  diff -u -r1.2 -r1.2.12.1
  --- README.servlet	19 Jul 2001 12:49:46 -0000	1.2
  +++ README.servlet	4 Feb 2003 16:21:25 -0000	1.2.12.1
  @@ -3,7 +3,6 @@
   
     o) HOW TO PROVIDE XSL TRANSFORMATIONS AS A WEB SERVICE
     o) HOW TO INVOKE TRANSLETS FROM A SERVLET
  -  o) BUILDING YOUR OWN DOM CACHE
   
   -----------------------------------------------------------------------
   HOW TO PROVIDE XSL TRANSFORMATIONS AS A WEB SERVICE
  @@ -22,149 +21,7 @@
       TransformServlet.java
   
   This file contains a minimal implementation of an XSL transformation 
  -servlet. It utilizes a cache to store the DOM trees for frequently 
  -accessed XML documents. These are not W3C DOM objects; They are 
  -specialized DOMs, native to XSLTC and optimzed for use with compiled 
  -translets. In addition to the initial input XML documents, the cache 
  -may contain DOMs for other XML input documents the translet requires 
  -at runtime, when the xsl:document() function is used in the stylesheet.
  -
  -Here's the essential code in the servlet for doing the transformation:
  -
  -    // Get a reference to the translet class
  -    Class cls = Class.forName(transletName);
  -
  -    // Instanciate a translet object (inherits AbstractTranslet)
  -    AbstractTranslet translet = (AbstractTranslet)cls.newInstance();
  -
  -    // The translet needs a reference to the cache in case
  -    // in needs to load additional XML documents.
  -    translet.setDOMCache(cache);
  -
  -    // Get the DOM from the DOM cache if current, otherwise
  -    // build and cache the DOM first
  -    DOMImpl dom = cache.retrieveDocument(documentURI, 0, translet);
  -
  -    // Create output handler (you can plug in your own)
  -    DefaultSAXOutputHandler saxHandler;
  -    saxHandler = new DefaultSAXOutputHandler(out);
  -
  -    // Start the transformation
  -    translet.transform(dom, new TextOutput(saxHandler));
  -
  ------------------------------------------------------------------------
  -BUILDING YOUR OWN DOM CACHE
  -
  -The interface for the DOM cache consists of a single method,
  -and its definition can be found in:
  -
  -    org/apache/xalan/xsltc/DOMCache.java
  -
  -The method contained in the interface is:
  -
  -    public DOMImpl retrieveDocument(String uri,
  -                                    int mask,
  -                                    Translet translet);
  -
  -The responsibilities of this method are:
  -
  - A) Build new a DOMImpl and DTDMonitor for XML documents
  -    that are not already in the cache:
  -
  -        // Instanciate a DOMImpl object
  -        Parser  parser = new Parser();
  -        DOMImpl dom = new DOMImpl();
  -        // Set URI for imports, includes, and document() functions
  -        dom.setDocumentURI(uri);
  -        parser = factory.newSAXParser();
  -        reader = parser.getXMLReader();
  -        reader.setContentHandler(dom.getBuilder());
  -
  -        // Use a DTDMonitor to track ID references in DTD
  -        DTDMonitor dtdMonitor = new DTDMonitor();
  -        dtdMonitor.handleDTD(reader);
  -
  -        // Parse the input document and build DOM
  -        reader.parse(uri);
  -
  -    At this point the DOMImpl and DTDMonitor objects are
  -    populated with the necessary data. The two objects
  -    are ready to be put in the cache (using the URI as
  -    the lookup key).
  -
  - B) For each time a new document is requested by a translet:
  -
  -        // Expand translet's index array to fit this DOM
  -        translet.setIndexSize(dom.getSize());
  -
  -        // Build indices for this DOM's DTD's ID references
  -        dtdMonitor.buildIdIndex(dom, mask, translet);
  -
  -        // Pass unparsed entity URIs to the translet
  -        translet.setUnparsedEntityURIs(dtd.getUnparsedEntityURIs());
  -
  -Step A) must be done every time a document is read into the
  -cache, and step B) every time a document is given to a
  -translet.
  -
  -The XSLTC package contains an example implementation of a
  -DOM cache, based on a very simple round-robin caching
  -algorithm:
  -
  -    org/apache/xalan/xsltc/dom/DocumentCache.java
  +servlet.
   
   -----------------------------------------------------------------------
  -DOING TRANSFORMATIONS WITHOUT A DOM CACHE
  -
  -Alternatively, you can program a servlet to perform the same basic
  -steps as the XSLTC command-line tool
  -
  -    org.apache.xalan.xsltc.cmdline.Transform
  -
  -as follows:
  -
  -
  -    // Obtain a reference to the translet class
  -    Class cls = Class.forName(transletName);
  -    // Instanciate a translet object (inherits AbstractTranslet)
  -    AbstractTranslet translet = (AbstractTranslet)cls.newInstance();
  -
  -    // Prepare the internal DOM tree
  -    final DOMImpl dom = new DOMImpl();
  -    dom.setDocumentURI(inputURI);
  -
  -    // Create a parser for the input document
  -    // org.apache.xalan.xsltc.runtime.Constants sets NAMESPACE_FEATURE
  -    final SAXParserFactory facory = SAXFactory.newInstance();
  -    try {
  -      factory.setFeature(NAMESPACE_FEATURE,true);
  -    }
  -    catch (Exception e) {
  -      factory.setNamespaceAware(true);
  -    }
  -    parser = factory.newSAXParser();
  -    reader = parser.getXMLReader();
  -    reader.setContentHandler(dom.getBuilder());
  -
  -    // Create a DTDMonitor for handling ID references in the DTD
  -    DTDMonitor dtdMonitor = new DTDMonitor();
  -    dtdMonitor.handleDTD(reader);
  -
  -    // Create output handler (you can plug in your own)
  -    DefaultSAXOutputHandler saxHandler;
  -    saxHandler = new DefaultSAXOutputHandler(out);
  -
  -    // Parse the document and build the internal DOM
  -    reader.parse(inputURI);
  -
  -    // Pass information on id/key indicies to the translet
  -    translet.setIndexSize(dom.getSize());
  -    dtdMonitor.buildIdIndex(dom, 0, translet);
  -    translet.setUnparsedEntityURIs(dtdMonitor.getUnparsedEntityURIs());
  -
  -    // Start the transformation
  -    translet.transform(dom, new TextOutput(saxHandler));
  -
  -
  -------------------------------------------------------------
   END OF README
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org


Mime
View raw message