dleslie     01/08/15 10:32:41

  Modified:    c/xdocs/sources/xalan extensions.xml readme.xml
                        usagepatterns.xml
  Log:
  Updates for 1.2 per Dave Bertoni's review.
  
  Revision  Changes    Path
  1.15      +3 -3      xml-xalan/c/xdocs/sources/xalan/extensions.xml
  
  Index: extensions.xml
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/xdocs/sources/xalan/extensions.xml,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- extensions.xml    2001/08/10 19:16:43     1.14
  +++ extensions.xml    2001/08/15 17:32:40     1.15
  @@ -158,10 +158,10 @@
   }</source>   
   </s2><anchor name="install"/>
   <s2 title="Installing an extension function">
  -<p><jump href="apdidocs/class_xalantransformer.html">XalanTransformer</jump> 
provides methods for installing and unistalling external functions:</p>
  +<p><jump href="apidocs/class_xalantransformer.html">XalanTransformer</jump> 
provides methods for installing and unistalling external functions:</p>
   <ul>
   <li>installExternalFunction() makes the function available in the current 
instance of XalanTransformer. Use uninstallExternalFunction() to remove the 
function.<br/><br/></li>
  -<li>installExternalFunctionGlobal() makes the function available globally. 
Use uninstallExternalFunctionGlobal() to remove the function. The global 
functions are static.</li>
  +<li>installExternalFunctionGlobal() makes the function available globally. 
Use uninstallExternalFunctionGlobal() to remove the function. The global 
functions are static; they are not thread-safe!</li>
   </ul>
   <p>These methods include arguments for the namespace, the function name, and 
the function implementation.</p>
   <p>When you install an extension function, the function inhabits the 
namespace you designate. For information about XML namespaces, see <jump 
href="http://www.w3.org/TR/REC-xml-names/";>Namespaces in XML</jump>.</p>
  @@ -227,7 +227,7 @@
   <p>Please keep in mind that <em>all</em> LocationPath expressions return a 
node-set, even if the expression only 
   returns a single attribute or a text node (node-sets with one member). You 
can use the XSLT string() function 
   to convert a node-set value to string, and the number() function to convert 
a node-set value to number (a double).</p>
  -<p>If you want to pass a node-set to an extension function, set up the 
function to accept a <jump 
href="apidocs/class_xnodeset.html">XNodeSet</jump>.</p>
  +<p>If you pass a node-set to an extension function, be sure to set up the 
function to process a node-set.</p>
   <p>Suppose, for example, you have a ProcessNodes function class that 
uses<br/><br/> 
   <code>const NodeRefListBase&amp; theNodeList = 
args[0]->nodeset();</code><br/><br/>
   in the execute() method to get a reference to the node-set.</p>
  
  
  
  1.29      +10 -7     xml-xalan/c/xdocs/sources/xalan/readme.xml
  
  Index: readme.xml
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/xdocs/sources/xalan/readme.xml,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- readme.xml        2001/08/10 19:16:43     1.28
  +++ readme.xml        2001/08/15 17:32:40     1.29
  @@ -81,9 +81,12 @@
       <p>Major updates since version 1.1 include:</p>
        <ul>
         <li><link idref="extensionslib">Introduction of a library of extension 
functions</link></li>
  -      <li></li>      
  -      <li></li>
  -      <li></li>
  +      <li>Support for pre-parsed source documents and pre-compiled 
stylesheets in 
  +      <jump 
href="apidocs/class_xalantransformer.html">XalanTransformer</jump> and the C 
API.</li>
  +      <li>Support for stylesheet params in <jump 
href="apidocs/class_xalantransformer.html">XalanTransformer</jump> 
  +      and the C API</li>
  +      <li>Support for extension functions in <jump 
href="apidocs/class_xalantransformer.html">XalanTransformer</jump></li>
  +      <li>Performance enhancements</li>
         </ul>
      </s3>  
        <anchor name="bugs"/>
  @@ -173,7 +176,7 @@
         &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>chmod +x 
conf*</code><br/><br/></li>
         <li>Run the runConfigure utility with at least the platform flag 
(Linux) or the platform, C compilier, and C++ compiler flags (AIX) as indicated 
below.<br/><br/>
         <ref>Linux:</ref>&nbsp;&nbsp;<code>runConfigure -p linux</code><br/>
  -      <ref>AIX:</ref>&nbsp;&nbsp;&nbsp;&nbsp;<code>runConfigure -p aix -c 
xlc_r -x xlC_r</code><br/><br/>
  +      <ref>AIX:</ref>&nbsp;&nbsp;&nbsp;&nbsp;<code>runConfigure -p aix -c 
xlc -x xlC</code><br/><br/>
         <ref>HP-UX 11:</ref>&nbsp;&nbsp;<code>runConfigure -p hp-11 -c cc -x 
aCC</code><br/><br/>
         <ref>Solaris:</ref>&nbsp;&nbsp;<code>runConfigure -p solaris -c cc -x 
CC</code><br/><br/>            
         To see the other runConfigure flags you may include, use the help 
flag:<br/><br/>
  @@ -185,13 +188,13 @@
         or<br/>
         &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>make 
<ref>targ</ref></code><br/><br/>
         where <ref>targ</ref> is ommitted or is <code>all</code> (rebuild 
all), <code>lib</code> (the XSLT libary), or
  -      <code>TestXSLT</code> (the TestSXSLT executable). ICUBridge is 
included in the build of TestXSLT if XALAN_USE_ICU is
  +      <code>testXSLT</code> (the testSXSLT executable). ICUBridge is 
included in the build of TestXSLT if XALAN_USE_ICU is
         defined.<br/><br/></li>
       </ol>
       <note>The command you use for setting environment variables depends on 
the shell you are
        using.<br/>
  -     For Bourne Shell, K Shell, or Bash use <em>export</em> ENVAR "val"<br/>
  -     For C Shell, use <em>setenv</em> ENVAR="val"<br/>
  +     For Bourne Shell, K Shell, or Bash use <em>export</em> ENVAR="val"<br/>
  +     For C Shell, use <em>setenv</em> ENVAR "val"<br/>
        where ENVAR is the environment variable name and val is the environment 
variable
        setting. You can check the setting of an environment variable with 
<em>echo</em> $ENVAR</note>
      </s3><anchor name="samples"/>
  
  
  
  1.29      +22 -13    xml-xalan/c/xdocs/sources/xalan/usagepatterns.xml
  
  Index: usagepatterns.xml
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/xdocs/sources/xalan/usagepatterns.xml,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- usagepatterns.xml 2001/08/09 20:10:36     1.28
  +++ usagepatterns.xml 2001/08/15 17:32:40     1.29
  @@ -74,15 +74,15 @@
   </ul><anchor name="intro"/>
   
   <s2 title="Introduction">  
  -<p>To perform a transformation, use one of the <jump 
href="apdidocs/class_xalantransformer.html">XalanTransformer</jump> transform() 
methods. The transformation requires an XML source document and an XSL 
stylesheet. Both of these objects may be represented by instances of <jump 
href="apidocs/class_xsltinputsource.html">XSLTInputSource</jump>. You can 
construct an XSLTInputSource with a string (the system ID for a file or URI), 
an input stream, or a DOM.</p>
  +<p>To perform a transformation, use one of the <jump 
href="apidocs/class_xalantransformer.html">XalanTransformer</jump> transform() 
methods. The transformation requires an XML source document and an XSL 
stylesheet. Both of these objects may be represented by instances of <jump 
href="apidocs/class_xsltinputsource.html">XSLTInputSource</jump>. You can 
construct an XSLTInputSource with a string (the system ID for a file or URI), 
an input stream, or a DOM.</p>
   <p>If you are using an XSL stylesheet to perform a series of 
transformations, you can improve performance by calling transform() with a 
compiled stylesheet, an instance of <jump 
href="apidocs/class_xalancompiledstylesheet.html">XalanCompiledStylesheet</jump>.
 If you are transforming an XML source more than once, you should call 
transform() with a parsed XML source, an instance of <jump 
href="apidocs/class_xalanparsedsource">XalanParsedSource</jump>. See <link 
anchor="compiled">Performing a series of transformations</link>.</p>
   <p>If you XML source document contains a stylesheet Processing Instruction 
(PI), you do not need to include a stylesheet object when you call 
transform().</p>
  -<p>The transformation output is represented by an <jump 
href="apdidocs/class_xsltresulttarget.html">XSLTResultTarget</jump>, which you 
can set up to refer to an output stream, the system ID for a file or URI, or a 
DOM.</p>
  +<p>The transformation output is represented by an <jump 
href="apidocs/class_xsltresulttarget.html">XSLTResultTarget</jump>, which you 
can set up to refer to an output stream, the system ID for a file or URI, or a 
DOM.</p>
   <p>For detailed API documentation, see <jump 
href="apidocs/index.html">&xslt4c; API</jump>. For an overview of the
   command-line utility, see <link idref="commandline">Command-Line 
Utility</link>.</p>
   </s2><anchor name="cpp"/>
   <s2 title="Basic usage patten with the XalanTransformer C++ API">
  -<p>Using <jump 
href="apdidocs/class_xalantransformer.html">XalanTransformer</jump> and the C++ 
API, you can perform one or more transformations as described in the following 
steps.</p>
  +<p>Using <jump 
href="apidocs/class_xalantransformer.html">XalanTransformer</jump> and the C++ 
API, you can perform one or more transformations as described in the following 
steps.</p>
   <note>For a working sample that illustrates these steps, see the <link 
idref="samples" anchor="xalantransform">XalanTransform</link> sample.</note>
   <s3 title="1. Include the required header files.">
   <p>Always start with Include/PlatformDefinitions.hpp, the &xslt4c; base 
header file. Also include util/PlatformUtils.hpp, 
XalanTransformer/XalanTransformer.hpp, and any other header files your 
particular application requires.</p>
  @@ -100,7 +100,7 @@
     <source>XalanTransformer theXalanTransformer;</source>
     </s3>
     <s3 title="4. Perform each transformation">
  -    <p>You can explicitly instantiate <jump 
href="apidocs/class_xsltinputsource.html">XSLTInputSource</jump> objects for 
the XML source document and XSL stylesheet, and an <jump 
href="apidocs/class_xsltresulttarget.html">XSLTResultTarget</jump> object for 
the output, and then call <jump 
href="apdidocs/class_xalantransformer.html">XalanTransformer</jump> transform() 
with those objects as parameters. For example:</p>
  +    <p>You can explicitly instantiate <jump 
href="apidocs/class_xsltinputsource.html">XSLTInputSource</jump> objects for 
the XML source document and XSL stylesheet, and an <jump 
href="apidocs/class_xsltresulttarget.html">XSLTResultTarget</jump> object for 
the output, and then call <jump 
href="apidocs/class_xalantransformer.html">XalanTransformer</jump> transform() 
with those objects as parameters. For example:</p>
   <source>XSLTInputSource xmlIn("foo.xml");
   XSLTInputSource xslIn("foo.xsl");
   XSLTResultTarget xmlOut("foo-out.xml");
  @@ -145,7 +145,7 @@
   </s2><anchor name="params"/>
   <s2 title="Setting stylesheet parameters">
   <p>An XSL stylesheet can include parameters that are set at run time before 
a transformation takes place. When we generate the HTML documents that make up 
the Xalan doc set, for example, we send the stylesheet an id parameter along 
with each XML source document. The id identifies that document and enables the 
stylesheet to integrate it into the overall doc set.</p>
  -<p>To set a stylesheet parameter, use the <jump 
href="apdidocs/class_xalantransformer.html">XalanTransformer</jump> 
setStylesheetParam() method. The setStytlesheetParam() method takes two 
arguments: the parameter name and the expression. For example:</p>
  +<p>To set a stylesheet parameter, use the <jump 
href="apidocs/class_xalantransformer.html">XalanTransformer</jump> 
setStylesheetParam() method. The setStytlesheetParam() method takes two 
arguments: the parameter name and the expression. For example:</p>
   <source>const XalanDOMString&amp; key="param1";
   const XalanDOMString&amp; expression="'Hello World'";
   theXalanTransformer.setStylesheetParam(key, expression);
  @@ -159,7 +159,7 @@
   <p>The <link idref="samples" 
anchor="usestylesheetparam">UseStylesheetParam</link> sample application also 
uses a command-line parameter.</p>
   </s2><anchor name="incremental"/>
   <s2 title="Processing output incrementally">
  -<p><jump href="apdidocs/class_xalantransformer.html">XalanTransformer</jump> 
provides a transform() method that sends the output in blocks to a callback 
function, which enables you to begin processing the output while the 
transformation is still in process:</p>
  +<p><jump href="apidocs/class_xalantransformer.html">XalanTransformer</jump> 
provides a transform() method that sends the output in blocks to a callback 
function, which enables you to begin processing the output while the 
transformation is still in process:</p>
   <source>int
   transform(const XSLTInputSource&amp; xmlIn,
             const XSLTInputSource&amp; xslIn,
  @@ -169,8 +169,8 @@
   <p>For an example, see <link idref="samples" 
anchor="xalantransformercallback">XalanTransformerCallback</link>.</p>
   </s2><anchor name="compiled"/>
   <s2 title="Performing a series of transformations">
  -<p>Before Xalan performs a standard transformation, it must parse the XML 
document and compile the XSL stylesheet into binary representations. If you 
plan to use the same XML document or stylesheet in a series of transformations, 
you can improve performance by parsing the XML document or compiling the 
styleheet once and using the binary representation when you call 
transform().</p>
  -<p><jump href="apdidocs/class_xalantransformer.html">XalanTransformer</jump> 
includes methods for creating compiled stylesheets and parsed XML documents: 
the compileStylesheet() method returns a pointer to a <jump 
href="apdidocs/class_xalancompiledstylesheet.html">XalanCompiledStylesheet</jump>;
 the parseSource() method returns a pointer to a <jump 
href="apdidocs/class_xalanparsedsource.html">XalanParsedSource</jump>.</p>
  +<p>Before Xalan performs a standard transformation, it must parse the XML 
document and compile the XSL stylesheet into binary representations. If you 
plan to use the same XML document or stylesheet in a series of transformations, 
you can improve performance by parsing the XML document or compiling the 
stylesheet once and using the binary representation when you call 
transform().</p>
  +<p><jump href="apidocs/class_xalantransformer.html">XalanTransformer</jump> 
includes methods for creating compiled stylesheets and parsed XML documents: 
the compileStylesheet() method returns a pointer to a <jump 
href="apidocs/class_xalancompiledstylesheet.html">XalanCompiledStylesheet</jump>;
 the parseSource() method returns a pointer to a <jump 
href="apidocs/class_xalanparsedsource.html">XalanParsedSource</jump>.</p>
   <note>In the case of failure, both methods return 0.</note>
   <p>Example using a XalanCompiledStylesheet to perform multiple 
transformations:</p>
   <source>XalanCompiledStylesheet* compiledStylesheet = 0;
  @@ -199,12 +199,15 @@
   #include &lt;dom/DOM_Node.hpp&gt;
   
   DOMParser  theParser;
  +// You MUST instruct the Xerces DOMParser NOT to create a DOM_XMLDecNode
  +// in the DOM to represent the XML declaration. See "Limitations" below.
  +DOMParser::setToCreateXMLDeclTypeNode(false);
   theParser.parse("foo.xml");
   const DOM_Document theDOM = theParser.getDocument();
   
   // Set up a XercesParserLiaison and use it to wrap the DOM_Document
   // in a XalanDocument.
  -DOMSupportDefault   theDOMSupport;
  +XercesDOMSupport   theDOMSupport;
   XercesParserLiaison  theParserLiaison(theDOMSupport);
   XalanDocument* theDoc = theParserLiaison.createDocument(theDOM);
   
  @@ -221,6 +224,12 @@
   // the output.
   // You can also convert the XalanDocument to a Xerces DOM_Document.
   DOM_Document domOut = theParserLiaison.mapXercesDocument(docOut)</source>
  +<s3 title="Limitations">
  +<p>Performance is much better when &xslt4c; uses native source tree handling 
rather than interacting with the Xerces DOMParser.</p>
  +<p>By default, the Xerces DOMParser creates a DOM_XMLDecNode in the DOM tree 
to represent the XML declaration. The
  +Xalan bridge for the Xerces DOM does not support this non-standard node 
type. Accordingly, you must call DOMParser::setToCreateXMLDeclTypeNode(false) 
<em>before</em> you parse the XML file. If not, the behavior is undefined, and 
  +your application may crash.</p>
  +</s3>
   </s2><anchor name="xpath"/>
   <s2 title="Working with XPath expressions">
   <p>XSL stylesheets use XPath expressions to select nodes, specify 
conditions, and generate text for the result tree. 
  @@ -239,7 +248,7 @@
     <li>Result tree generation events</li>
    </ul>
   <p>To construct a TraceListener with TraceListenerDefault, you need a 
PrintWriter and a boolean for each of these four tracing options. You can then 
use the XSLTEngimeImpl setTraceSelects and addTraceListener methods to add the 
TraceListener to an XSLTProcessor. See the <link idref="samples" 
anchor="tracelisten">TraceListen</link> sample application.</p>
  -<p>The <link idref="commandline">command-line utility (TextXSLT)</link> and 
TraceListen both use TraceListenerDefault to write events to the screen.</p>
  +<p>The <link idref="commandline">command-line utility (testXSLT)</link> and 
TraceListen both use TraceListenerDefault to write events to the screen.</p>
   </s2><anchor name="icu"/>
   <s2 title="Using the ICU">
       <p>You can use the <resource-ref idref="icu"/> to extend support for 
encoding, number
  @@ -349,10 +358,10 @@
   <p>The <jump href="apidocs/XalanCAPI.h.html">Xalan C API</jump> supports 
approximately the same set of options as the C++ API. In particular, you can</p>
   <ul>
   <li>Use stylesheet processing instructions (PI) to supply the stylesheet. 
Simply supply an empty string ("") for the XSL file name.<br/><br/></li>
  -<li>Set stylesheet parameters. Use the SetStylesheetParam() 
method.<br/><br/></li>
  -<li>Compile stylesheets. Use the CompileStylesheet() method to compile a 
stylesheet, and the TransformToFileCSS() or TransformToDataCSS() method to use 
the compiled stylesheet in a transformation.<br/><br/></li>
  +<li>Set stylesheet parameters. Use the SetStylesheetParam() 
function.<br/><br/></li>
  +<li>Compile stylesheets. Use the CompileStylesheet() method to compile a 
stylesheet, and the TransformToFileCSS() or TransformToDataCSS() function to 
use the compiled stylesheet in a transformation.<br/><br/></li>
   <li>Parse XML sources. Use the XalanParseSource() or 
XalanParseSouceUseXalan() method.<br/><br/></li>
  -<li>Place the transformation output in a character array. Use the 
TransformToData() or TransformToDataCSS() method. After you perform the 
transformation, use the XalanFreeData() method to free memory allocated for the 
output data.<br/><br/></li>
  +<li>Place the transformation output in a character array. Use the 
TransformToData() or TransformToDataCSS() function. After you perform the 
transformation, use the XalanFreeData() function to free memory allocated for 
the output data.<br/><br/></li>
   <li>Send the output to a callback function to process blocks of output data 
as they arrive.</li>
   </ul> 
   <p>For a sample that sends output in blocks to a callback function, see 
<link idref="samples" anchor="apachemodulexslt">ApacheModuleXSLT</link>.</p>
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to