You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by sh...@apache.org on 2012/06/16 06:28:16 UTC

svn commit: r1350859 [6/7] - in /xalan/c/trunk/xdocs: ./ html/ html/apiDocs/ sources/ sources/xalan-graphic/ sources/xalan/ sources/xslt-resources/ style/ style/dtd/

Added: xalan/c/trunk/xdocs/sources/xalan/secureweb.xml
URL: http://svn.apache.org/viewvc/xalan/c/trunk/xdocs/sources/xalan/secureweb.xml?rev=1350859&view=auto
==============================================================================
--- xalan/c/trunk/xdocs/sources/xalan/secureweb.xml (added)
+++ xalan/c/trunk/xdocs/sources/xalan/secureweb.xml Sat Jun 16 04:28:14 2012
@@ -0,0 +1,391 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE s1 SYSTEM "../../style/dtd/document.dtd">
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the  "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+-->
+
+<s1 title="XML Security Overview">
+<ul>
+<li><link anchor="xsov_xmlParser">XML Parser Threats</link></li>
+<li><link anchor="xsov_resolvEntity">Resolving External Entities</link></li>
+<li><link anchor="xsov_trustEntity">Trusted External Entities</link></li>
+<li><link anchor="xsov_piThreat">Processing Instruction (PI) Threats</link></li>
+<li><link anchor="xsov_soapThreat">SOAP Simple Object Access Protocol</link></li>
+<li><link anchor="xsov_wsdlThreat">WSDL Web Service Description Language</link></li>
+<li><link anchor="xsov_uriThreat">URI Uniform Resource Identifiers</link></li>
+<li><link anchor="xsov_urlThreat">URL Uniform Resource Locators</link></li>
+<li><link anchor="xsov_malUtfStrings">Malformed UTF-8 and UTF-16 Strings</link></li>
+<li><link anchor="xsov_canonicalXML">Canonical XML Issues</link></li>
+<li><link anchor="xsov_xhtmlWorkaround">XHTML Output Mode - Workaround</link></li>
+</ul>
+
+<br/>
+<p><em>This document goes well beyond XSLT. Use it as a general reference.</em>
+</p>
+<p>There are numerous security issues and problems that are 
+endemic to the XML architecture. 
+I will try to identify some of the most common issues and threats 
+and describe some mitigation strategies.
+</p>
+<p>The biggest threat issue is a matter of trust. 
+How well do you trust your sources of XML data? 
+What are the tools that can help increase the trust?
+</p>
+<p>Most Web Service communications uses HTTP over standard TCP ports. 
+The HTTP protocol on standard TCP ports has free access through business firewalls. 
+How well do your proxy servers handle the Web Service security issues 
+required for your applications?
+</p>
+<p>How well are your resource identifiers protected? 
+How well do your applications cope with resource identifier spoofing? 
+Can your resource identifiers be trusted by outside clients? 
+Can you trust the credentials of your clients?
+</p>
+<p>Will the SOAP interface for your Web Service send error messages 
+to an untrusted Web Service address?
+</p>
+<p>Is your WSDL interface description file readily available for download, 
+thus enabling persons with malicious intent to create targeted attacks on your Web Services?
+</p>
+<p>Can you trust the client credentials that use your Web Service application?
+</p>
+<p>There are numerous security issues that are not directly involved in 
+the markup of XML or its processing. 
+These issues relate to infrastructure.
+</p>
+<p>Can you trust your DNS (Domain Name Service) and reduce its vulnerability to hijacking?
+</p>
+<p>Are your web servers hardened against known application vulnerabilities?
+</p>
+<p>Are your applications hardened against 
+cross site scripting and SQL injection?
+</p>
+<p>Can your client applications trust the scripts 
+that are transmitted as web pages?
+</p>
+<p>Can your web server trust the scripts that are submitted?
+</p>
+<p>Is application data sanitized before being consumed by your applications?
+</p>
+
+<anchor name="xsov_xmlParser"/>
+<s2 title="XML Parser Threats">
+
+<p>This list will help you find the XML threat vectors that need to be addressed.  
+Some vectors cannot be easily resolved.
+</p>
+<ul>
+<li>Resolving External Entities</li>
+<li>Implicit Trust of Internal DTD</li>
+<li>Resource Identifier Spoofing</li>
+<li>Malformed UTF-8 and UTF-16</li>
+<li>Secure the trust of external DTD descriptions</li>
+<li>Secure the trust of external Schema definitions</li>
+<li>Secure the trust of entity import and include constructs</li>
+<li>Configuration of Entity Resolver Catalogs</li>
+</ul>
+</s2>
+
+<anchor name="xsov_resolvEntity"/>
+<s2 title="Resolving External Entities">
+
+<p>The XML1.0 and XML1.1 standards specify a <code>DOCTYPE</code> format. 
+The processing may uncover significant entity resolver deficiencies.
+</p>
+
+<p><code>&lt;!DOCTYPE name PUBLIC "public-id" "system-id" [internal-DTD]&gt;</code><br/>
+<code>&lt;!DOCTYPE name SYSTEM "system-id" [internal-DTD]&gt;</code>
+</p>
+<p>XML Parsers MUST process the <code>[internal-DTD]</code> if it exists.
+</p>
+<p>XML Parsers MAY process the external <code>"system-id"</code> if it can be found.
+</p>
+<p>XML Parsers MAY process the external <code>"public-id"</code> if it can be found.
+</p>
+<p>XML Parsers MAY prefer either the <code>"public-id"</code> or <code>"system-id"</code> 
+if both are specified.
+</p>
+<p>XML Parsers MAY ignore both the <code>"public-id"</code> and <code>"system-id"</code> 
+if present.
+</p>
+<p>Declaring a parameter entity notation <code>"%entity;"</code> 
+in the <code>[internal-DTD]</code> and expanding the content within the 
+<code>[internal-DTD]</code> will force the XML parser to import the content 
+referenced by the <code>"%entity;"</code> notation.
+</p>
+<p>Declaring a general entity notation <code>"&amp;entity;"</code> in the 
+<code>[internal-DTD]</code> and expanding the content within the body of 
+the XML document will force the XML parser to import the content referenced 
+by the <code>"&amp;entity"</code> notation.
+</p>
+<p>The default method of resolving external entities is by resolving entity 
+name strings relative to DNS named hosts and/or path names relative to the 
+local computer system.  When receiving XML documents from an outside source, 
+these entity reference locations may be unreachable, unreliable, or untrusted.
+</p>
+<p>Web Service SOAP XML documents MUST NOT have <code>DOCTYPE</code> definitions. 
+SOAP processors should not process DOCTYPE definitions. 
+The conformance is implementation dependent.
+</p>
+<p><jump href="http://www.w3.org/TR/soap">http://www.w3.org/TR/soap</jump>
+</p>
+</s2>
+
+<anchor name="xsov_trustEntity"/>
+<s2 title="Trusted External Entities">
+
+<p>The <ref>OASIS XML Catalogs</ref> specification, if implemented by an application, 
+can specify a set of external entities that can be trusted by mapping known 
+identifiers to local or trusted resources.  A secure application should 
+not trust entity identifiers whose resources cannot be localized and secured.
+</p>
+<p><jump href="http://www.oasis-open.org/committees/entity">http://www.oasis-open.org/committees/entity</jump>
+</p>
+<p>A similar method can be designed specifically for each application.
+</p>
+<p>A trusted application may need to pre-screen any entity definitions in XML 
+before passing the information into the core of the application.
+</p>
+<p>A trusted application should install some type of entity resolving catalog 
+or database that can be trusted.
+</p>
+</s2>
+
+<anchor name="xsov_piThreat"/>
+<s2 title="Processing Instruction (PI) Threats">
+
+<p>Processing instructions are a mechanism to send specific information 
+into an application.  A common processing instruction is a 
+stylesheet declaration.  
+This information is part of an XML document and comes usually 
+after the XML header and before the root element.
+</p>
+<p>A stylesheet declaration may cause an application to look for an 
+untrusted XSLT stylesheet to use for transformation of the 
+following root element.  A standard exists for associating style sheets with XML documents.
+</p>
+<p><jump href="http://www.w3.org/TR/xml-stylesheet">http://www.w3.org/TR/xml-stylesheet</jump>
+</p>
+<p>Examples in the xml-stylesheet recommendation describes how to use the 
+processing instruction to associate CSS stylesheets for XHTML.  
+Applications that use XSLT transformations will interpret the 
+xml-stylesheet processing instruction as the location of a 
+XSLT transformation stylesheet.
+</p>
+<p>As more processing instructions become standardized and in common use, 
+their threat of misuse increases.
+</p>
+</s2>
+
+<anchor name="xsov_soapThreat"/>
+<s2 title="SOAP Simple Object Access Protocol">
+
+<p>The SOAP specification explicitly forbids the transport of 
+DOCTYPE definitions and PI processing instructions.
+</p>
+<p>The SOAP specifies a transport envelope that encapsulates 
+an XML message for transport. SOAP can also handle various 
+transmission status indicators implying confirmation of delivery, 
+error messages, and queue status messages. 
+SOAP transports can be loosely coupled and intermittent. 
+SOAP is used extensively in the design and deployment of Web Service architectures. 
+A companion Web Service specification is WSDL, the Web Service Definition Language.
+</p>
+<p>The SOAP protocol as widely deployed by Microsoft and other vendors 
+is based on specifications that predate the adoption 
+by the <jump href="http://www.w3.org">World Wide Web Consortium (W3C)</jump>. 
+SOAP is not based on Microsoft technology. 
+It is an open standard drafted by UserLand, Ariba, Commerce One, Compaq, 
+Developmentor, HP, IBM, IONA, Lotus, Microsoft, and SAP. 
+<jump href="http://www.w3.org/TR/2000/NOTE-SOAP-20000508">SOAP 1.1</jump> 
+was presented to the W3C in May 2000 as an official Internet standard. 
+</p>
+<p>The original <jump href="http://www.w3.org/TR/soap11">SOAP 1.1</jump> standard 
+is associated with this URI namespace prefix.
+</p>
+<p><code>http://schemas.xmlsoap.org/soap/</code>
+</p>
+<p>There are significant changes in naming conventions since SOAP 1.1 
+was adopted by W3C as a recommended standard. 
+The current iteration is <jump href="http://www.w3.org/TR/soap12">SOAP 1.2</jump> 
+and is associated with this URI namespace prefix.
+</p>
+<p><code>http://www.w3.org/2003/05</code>
+</p>
+<p>The basic security threat to the SOAP architecture is 
+the ability to spoof Web Service addresses and telling a 
+SOAP server to respond to a rogue Web Service address 
+when a <code>mustUnderstand</code> attribute is processed 
+and an error indication is raised.
+</p>
+<p>Other intelligence that can be obtained might be the 
+location of a public accessible WSDL definition 
+of the messages being transported by SOAP, 
+thus allowing additional malware attacks to be automatically generated.
+</p>
+</s2>
+
+<anchor name="xsov_wsdlThreat"/>
+<s2 title="WSDL Web Service Description Language">
+
+<p>WSDL is known as the Web Service Description Language. 
+The WSDL XML document is a an interface description that can be transformed 
+into various programming languages. 
+Such transformed interface descriptions are recognized as 
+Java Interfaces and C++ Virtual Classes.
+</p>
+<p>The original <jump href="http://www.w3.org/TR/wsdl">WSDL 1.1</jump> standard 
+is associated with this URI namespace prefix.
+</p>
+<p><code>http://schemas.xmlsoap.org/wsdl/</code>
+</p>
+<p>The current <jump href="http://www.w3.org/TR/wsdl20">WSDL 2.0</jump> standard 
+is maintained by W3C in their namespace with prefix.
+</p>
+<p><code>http://www.w3.org/</code>
+</p>
+<p>The WSDL can provide a template for generating a compliant Web Service systems 
+for multiple and hetrogeneous platforms.
+</p>
+<p>A WSDL document that can benefit developers can also be used by malware 
+and hackers to taylor specific threats against targeted Web Services.
+</p>
+<p>The SOA (Service Oriented Architecure), 
+SAAS (Software As A Service), 
+PAAS (Platform As A Service) are families of 
+Web Services used as interfaces into what is 
+generally known as Cloud Computing.
+</p>
+</s2>
+
+<anchor name="xsov_uriThreat"/>
+<s2 title="URI Uniform Resource Identifiers">
+
+<p>The URI does not need to specify the location of a resource. 
+It merely provides a resource name. A catalog, database, 
+or other mechanism is used to map URIs to resource locations.
+</p>
+<p>The security issue here is that most URIs are used with a 
+DNS (Domain Name Service) to find a host and path to a resource. 
+The URI is then treated as a URL (Uniform Resource Locator).
+</p>
+<p>The mitigation of these threats requires diligence of the 
+application architects to ensure an appropriate level of trust 
+for the URIs and URLs used in their applications.
+</p>
+<p>The transmission media is inherently untrusted. 
+Often SOAP bindings and HTTP transports are used. 
+Web Service addressing is readily spoofed.
+</p>
+</s2>
+
+<anchor name="xsov_urlThreat"/>
+<s2 title="URL Uniform Resource Locators">
+
+<p>See: <link anchor="xsov_uriThreat">URI Uniform Resource Identifiers</link>
+</p>
+</s2>
+
+<anchor name="xsov_malUtfStrings"/>
+<s2 title="Malformed UTF-8 and UTF-16 Strings">
+
+<p>Public Key Infrastructure (X.509) certificates are leased from a 
+certificate authority or are self-signed. 
+The distinguished names and parts thereof are usually rendered in unicode.
+</p>
+<p>The value of zero is not a valid Unicode character. 
+It is possible to create non-zero UTF-8 and UTF-16 sequences that equate to zero, 
+which is not allowed. 
+Some rogue hackers have successfully obtained wild-card PKI (X.509) certificates 
+by prepending a UTF-8(zero) in a distinguished name when applying for a certificate. 
+Such a certificate could be used to successfully sign anything.
+</p>
+<p>Applications should not blindly accept UTF-8 and UTF-16 strings 
+without verifying the proper encoding for those strings. 
+Contents that equate to bad Unicode character values should be denied.
+</p>
+</s2>
+
+<anchor name="xsov_canonicalXML"/>
+<s2 title="Canonical XML Issues">
+
+<p>Canonical XML is a tranformation of an XML document into a 
+canonical form useful for signing. 
+This is used in some Web Service security implementations.
+</p>
+<p>There are several areas where Canonical XML will create XML documents 
+that have severe application problems.
+</p>
+<p>The number values are rendered in Base-10 as decimal fractions. 
+The computations performed by computers are usually in Base-2 floating point arithmetic. 
+You therefore have truncation or roundoff issues when converting between 
+decimal fractions and Base-2 fractions.
+</p>
+<p>The canonical process may collapse whitespace and transform 
+multi-character line endings to single-character line endings. 
+When whitespace is significant, the canonical issues for signing can cause problems.
+</p>
+<p>It is possible to create XHTML documents that will not work with some browsers. 
+The empty &lt;a/&gt; anchor element is not allowed by many browsers, 
+therefore &lt;a&gt;&lt;/a&gt; is required. 
+A standard XML canonical process may collapse elements with no content into empty elements. 
+The empty paragraph&lt;p/&gt; is disallowed.  The &lt;p&gt;&lt;/p&gt; is supported.
+</p>
+<p>The World Wide Web Consortium (W3C) has additional detailed discussion of 
+<jump href="http://www.w3.org/TR/C14N-issues/">canonicalization issues</jump>.
+</p>
+</s2>
+
+<anchor name="xsov_xhtmlWorkaround"/>
+<s2 title="XHTML Output Mode - Workaround">
+
+<p>The Xalan-C/C++ library currently has no XHTML output mode.
+Since XHTML is to be well-formed XML, the desire is to use the XML output method.
+</p>
+<p>XHTML is based on HTML version 4.
+</p>
+<p>Empty elements declared by HTML-4 should have a space before the 
+trailing '/&gt;' markup (i.e. &lt;br /&gt; and &lt;hr /&gt;). 
+XML output mode does not normally have this space when using 
+the &lt;xsl:element name="br" /&gt; in your stylesheet. 
+Most modern browsers are ok with no space, but viewing the 
+browser source shows a warning condition.
+</p>
+<p>Non-empty elements declared by HTML-4 should not be rendered as empty XML elements. 
+If there is no content, the elements should be rendered with both a start-tag and end-tag 
+(i.e. &lt;a name="xxx"&gt;&lt;/a&gt;) instead of an XML empty-element. 
+XSLT processors usually create an empty-element 
+(i.e. &lt;a name="xxx"/&gt;) when the element being defined has no content 
+other than attributes.
+</p>
+<p>For XSLT processors creating XML documents for XHTML, 
+you can create what looks like an element with no content by including 
+the &amp;#8204; character 
+(a zero-width non-joining character often known as &amp;zwnj;) 
+as the element text content. 
+This also allows transitional browsers the ability to find the end tag.
+</p>
+<p><source>  DTD    &lt;!ENTITY zwnj    "&amp;#8204;"&gt;
+
+  &lt;a name="marker"&gt;&amp;zwnj;&lt;/a&gt;</source>
+</p>
+<p>Transitional XHTML is not usually well-formed XML. 
+It becomes a mix of HTML version 4 and XML markup. 
+Strict XHTML is required to be well-formed XML.
+</p>
+</s2>
+</s1>
\ No newline at end of file

Added: xalan/c/trunk/xdocs/sources/xalan/test-faqs.xml
URL: http://svn.apache.org/viewvc/xalan/c/trunk/xdocs/sources/xalan/test-faqs.xml?rev=1350859&view=auto
==============================================================================
--- xalan/c/trunk/xdocs/sources/xalan/test-faqs.xml (added)
+++ xalan/c/trunk/xdocs/sources/xalan/test-faqs.xml Sat Jun 16 04:28:14 2012
@@ -0,0 +1,79 @@
+<?xml version="1.0" standalone="no"?> 
+
+<!--
+    This is a StyleBook XML test for <faqs> containing <group> constructs
+-->
+
+<!DOCTYPE faqs SYSTEM "../../style/dtd/faqs.dtd">
+
+<faqs title="Frequently asked questions">
+<group title="Faq-Group 1">
+<faq title="Faq #1">
+ <q>Test Question #1</q>
+ <a><p>Test Answer #1</p></a>
+</faq>
+<faq title="Faq #2">
+ <q>Test Question #2</q>
+ <a><p>Test Answer #2</p></a>
+</faq>
+<faq title="Faq #3">
+ <q>Test Question #3</q>
+ <a><p>Test Answer #3</p></a>
+</faq>
+</group>
+
+<group title="Faq-Group 2">
+<faq title="Faq #4">
+ <q>Test Question #4</q>
+ <a><p>Test Answer #4</p></a>
+</faq>
+<faq title="Faq #5">
+ <q>Test Question #5</q>
+ <a><p>Test Answer #5</p></a>
+</faq>
+</group>
+
+<group title="Faq-Group 3">
+<faq title="Faq #6 with Multiple Answers">
+ <q>Test Question #6</q>
+ <a><p>Test Answer #6</p></a>
+ <a><p>This item has more than one answer</p></a>
+</faq>
+</group>
+
+<group title="Faq-Group 4 = Empty">
+</group>
+
+<group title="Faq-Group 5">
+<faq title="Faq #7">
+ <q>Test Question #7</q>
+ <a><p>Test Answer #7</p></a>
+</faq>
+<faq title="Faq #8">
+ <q>Test Question #8</q>
+ <a><p>Test Answer #8</p></a>
+</faq>
+<faq title="Faq #9 with no Answer">
+ <q>Test Question #9</q>
+</faq>
+<faq title="Faq #10 with no Question">
+ <a><p>Test Answer #10</p></a>
+</faq>
+<faq title="Faq #11">
+ <q>Test Question #11</q>
+ <a><p>Test Answer #11</p></a>
+</faq>
+</group>
+
+<group title="Faq-Group 6">
+<faq title="Faq #12">
+ <q>Test Question #12</q>
+ <a><p>Test Answer #12</p></a>
+</faq>
+<faq title="Faq #13">
+ <q>Test Question #13</q>
+ <a><p>Test Answer #13</p></a>
+</faq>
+</group>
+
+</faqs>

Added: xalan/c/trunk/xdocs/sources/xalan/usagepatterns.xml
URL: http://svn.apache.org/viewvc/xalan/c/trunk/xdocs/sources/xalan/usagepatterns.xml?rev=1350859&view=auto
==============================================================================
--- xalan/c/trunk/xdocs/sources/xalan/usagepatterns.xml (added)
+++ xalan/c/trunk/xdocs/sources/xalan/usagepatterns.xml Sat Jun 16 04:28:14 2012
@@ -0,0 +1,541 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE s1 SYSTEM "../../style/dtd/document.dtd">
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the  "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+-->
+<s1 title="&xslt4c; Basic usage patterns">
+<ul>
+  <li><link anchor="intro">Introduction</link></li>
+  <li><link anchor="xalantransformer">Basic usage pattern with the XalanTransformer C++ API</link></li>
+  <li><link anchor="stylepi">Using a stylesheet processing instruction</link></li>
+  <li><link anchor="params">Setting stylesheet parameters</link></li>
+  <li><link anchor="incremental">Processing output incrementally</link></li>
+  <li><link anchor="compiled">Performing a series of transformations</link></li>
+  <li><link anchor="dom">Working with DOM input and output</link></li>
+  <li><link anchor="xercesdomwrapperparsedsource">Using a Xerces DOM as the source for a Xalan transformation</link></li>
+  <li><link anchor="xpath">Working with XPath expressions</link></li>
+  <li><link anchor="tracelistener">Using the TraceListener</link></li>
+  <li><link anchor="icu">Using the International Components for Unicode (ICU)</link></li>
+  <li><link anchor="capi">Basic usage pattern with the XalanTransformer C API</link></li>
+  <li><link anchor="cvar">Variations with the XalanTransformer C API</link></li>
+  <li>See also: <link idref="extensions">Creating and using extension functions</link></li>
+</ul>
+  
+<anchor name="intro"/>
+<s2 title="Introduction">  
+<p>To perform a transformation, use one of the <jump href="apiDocs/classXalanTransformer.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/classXSLTInputSource.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/classXalanCompiledStylesheet.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/classXalanParsedSource.html">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="apiDocs/classXSLTResultTarget.html">XSLTResultTarget</jump>, which 
+   you can set up to refer to an output stream, the system ID for a file or URI, or a Formatter for one of the various styles of 
+   DOM output.</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="xalantransformer"/>
+<s2 title="Basic usage patten with the XalanTransformer C++ API">
+<p>Using <jump href="apiDocs/classXalanTransformer.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 xalanc/Include/PlatformDefinitions.hpp, the &xslt4c; base header file. Also include xercesc/util/PlatformUtils.hpp, 
+   xalanc/XalanTransformer/XalanTransformer.hpp, and any other header files your particular application requires.</p>
+<source>
+#include &lt;xalanc/Include/PlatformDefinitions.hpp&gt;
+#include &lt;xercesc/util/PlatformUtils.hpp&gt;
+#include &lt;xalanc/XalanTransformer/XalanTransformer.hpp&gt;
+...
+</source>
+</s3>
+
+<s3 title="2. Define namespaces">
+<p>As of version 1.5, &xslt4c; now uses C++ namespaces for those platforms which support them.  A number of macros are provided to 
+   make using the &xslt4c; (and &xml4c;) namespaces easier.</p>
+<p>In the following example, the <em>XALAN_USING_XERCES</em> and <em>XALAN_USING_XALAN</em> macros are used to declare that the 
+   program is using <em>XMLPlatformUtils</em> and <em>XalanTransformer</em> from the &xml4c; and &xslt4c; namespaces respectively.</p>
+<source>
+XALAN_USING_XERCES(XMLPlatformUtils)
+XALAN_USING_XALAN(XalanTransformer)
+</source>
+
+<p>These macros can be used immediately after the included header files (for global applicability in a given source file) or within 
+   functions and methods for local applicability.</p>
+<note>Whilst you can use the standard C++ namespace syntax directly, the &xml4c; and &xslt4c; namespaces are linked to the version 
+      number.  For example, the Xalan namespace is currently <em>xalanc_1_11</em>.  The macros will automatically take care of this 
+      when code is re-compiled against a new version of the libraries.  Using the namespaces directly will require each namespace 
+      related statement be updated by hand.</note>
+</s3>
+
+<s3 title="3. Initialize Xerces and Xalan.">
+<p>Use the static initializers to initialize the &xslt4c; and &xml4c; platforms. You must initialize &xml4c; once per process. You 
+   may initialize and terminate &xslt4c; multiple times, but this is not recommended: it is inefficient and is not thread safe.</p>  
+<source>
+XMLPlatformUtils::Initialize();
+XalanTransformer::initialize();
+</source>
+</s3>
+
+<s3 title="4. Create a XalanTransformer.">
+<source>
+XalanTransformer theXalanTransformer;
+</source>
+</s3>
+
+<s3 title="5. Perform each transformation.">
+<p>You can explicitly instantiate <jump href="apiDocs/classXSLTInputSource.html">XSLTInputSource</jump> objects for the XML 
+   source document and XSL stylesheet, and an <jump href="apiDocs/classXSLTResultTarget.html">XSLTResultTarget</jump> object 
+   for the output, and then call <jump href="apiDocs/classXalanTransformer.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");
+int theResult =
+    theXalanTransformer.transform(xmlIn,xslIn,xmlOut)
+</source>
+
+<p>Alternatively, you can call transform() with the strings (system identifiers), streams, and/or DOMs that the compiler needs 
+   to implicitly construct the <jump href="apiDocs/classXSLTInputSource.html">XSLTInputSource</jump> and 
+   <jump href="apiDocs/classXSLTResultTarget.html">XSLTResultTarget</jump> objects. For example:</p>
+<source>
+const char* xmlIn = "foo.xml";
+const char* xslIn = "foo.xsl";
+const char* xmlOut = "foo-out.xml";
+int theResult =
+    theXalanTransformer.transform(xmlIn,xslIn,xmlOut)
+</source>
+<p>Keep in mind that <jump href="apiDocs/classXSLTInputSource.html">XSLTInputSource</jump> and 
+   <jump href="apiDocs/classXSLTResultTarget.html">XSLTResultTarget</jump> provide a variety of single-argument constructors that 
+   you can use in this manner:</p>
+<ul>
+  <li><code>XSLTInputSource(const char* systemID);</code></li>
+  <li><code>XSLTInputSource(const XMLCh* systemID);//Unicode chars</code></li>
+  <li><code>XSLTInputSource(istream* stream);</code></li>
+  <li><code>XSLTInputSource(XalanNode* node);</code><br/><br/></li>
+  <li><code>XSLTResultTarget(char* fileName);</code></li>
+  <li><code>XSLTResultTarget(XalanDOMString&amp; fileName);</code></li>
+  <li><code>XSLTResultTarget(ostream* stream);</code></li>
+  <li><code>XSLTResultTarget(ostream&amp; stream);</code></li>  
+  <li><code>XSLTResultTarget(Writer* characterStream);</code></li>
+  <li><code>XSLTResultTarget(XalanDocument* document);</code></li>
+  <li><code>XSLTResultTarget(XalanDocumentFragment* documentFragment);</code></li>
+  <li><code>XSLTResultTarget(XalanElement* element);</code></li>
+  <li><code>XSLTResultTarget(FormatterListener&amp; flistener);</code></li>
+</ul>
+<note>Each transform() method returns an integer code, 0 for success. If an error occurs, you can use the getLastError() method 
+      to return a pointer to the error message.</note>
+</s3>
+
+<s3 title="6. Shut down Xalan.">
+<p>When you shut down Xalan, you may also want to shut down Xerces and ICU support (if enabled). Keep the following considerations 
+   in mind:</p>
+<ul>
+  <li>Once you have shut down Xerces, you can no longer make Xalan or Xerces calls in the current process.<br/><br/></li>
+  <li>Shut down ICU support if you have enabled it (see <link anchor="icusupport">enabling ICU support</link>) and if the 
+      application is exiting or no longer requires the ICU. The <code>XMLPlatformUtils::Terminate()</code> call does nothing 
+      if ICU support has not been enabled.</li>
+  <li>Ensure that there are no &xslt4c; or &xml4c; objects extant at the point of termination.  Any deletion of objects after 
+      termination could cause errors.</li>
+</ul>
+<p>Use the static terminators.</p>
+<source>
+XalanTransformer::terminate();
+XMLPlatformUtils::Terminate();
+XalanTransformer::ICUCleanUp();
+</source>
+</s3>
+
+</s2>
+<anchor name="stylepi"/>
+<s2 title="Using a stylesheet processing instruction">
+<p>If you want to use the stylesheet referred to by a stylesheet processing instruction in the XML document, simply call 
+   transform() without the second XSLTInputSource argument. For example:</p>
+<source>
+// foo.xml contains a stylesheet PI
+const char* xmlIn = "foo.xml";
+const char* xmlOut = "foo-out.xml";
+int theResult =
+    theXalanTransformer.transform(xmlIn,xmlOut)
+</source>
+</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.  Traditionally, a top-level parameter value is of text string type.  The Xalan library now supports three types of top-level parameters that can be set.  One is a text string parameter.  Another is a number parameter of floating point type double.  The third is a nodeset (XalanNode *) parameter, usually implemented as a parsed document.</p>
+
+<p>Any XObject that is created outside of the transformation can be associated with a top-level parameter.  The XalanTransformer has an XObject factory whereby top-level parameters can be owned by the XalanTransformer object.</p>
+
+<p>To set a stylesheet parameter, use the 
+<jump href="apiDocs/classXalanTransformer.html">XalanTransformer</jump> setStylesheetParam() method. The setStylesheetParam() method takes two arguments: the parameter name and the value.  The value can be a string type, a number double type, an (XalanNode *) pointer to a nodeset or parsed document, or any XObjectPtr returned from an XObject factory.</p>
+
+<p>Top level parameters are sticky.  Once set to an instance of an XalanTransformer object, they can be used for multiple transformations.  The XalanTransformer reset() method prepares a transformer for a new transformation.  Use the clearStylesheetParams() method to release the top-level stylesheet parameters.</p>
+
+<p>The Xalan command line utility currently supports only a text string value for a top-level stylesheet parameter.  The single quotes are required to identify a text string value.</p>
+
+<p><code>Xalan -p param1 "'string expression'"foo.xml foo.xsl</code></p>
+
+<p>If the string expression includes spaces or other characters that the shell intercepts, first enclose the string in single quotes so Xalan-C++ interprets it as a string expression, and then enclose the resulting string in double quotes so the shell interprets it as a single argument.</p>
+
+<p>The <link idref="samples" anchor="usestylesheetparam">UseStylesheetParam</link> sample application supports all three types of top-level stylesheet parameters.</p>
+
+<p>The 'C' language interface XalanCAPI also supports the three types of top-level parameters.  The sample program TestCAPIparms.c shows how to use top-level parameters with 'C' language programs.</p>
+
+<note>The Xalan command line utility should be revised to accommodate the number and nodeset types of top-level stylesheet parameters. Only text string values are currently supported.</note>
+
+<p>Top-level stylesheet parameters of nodeset type (XalanNode *) are useful for the merging of multiple XML documents.</p>
+</s2>
+
+<anchor name="incremental"/>
+<s2 title="Processing output incrementally">
+<p><jump href="apiDocs/classXalanTransformer.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,
+          void* theOutputHandle,
+          XalanOutputHandlerType theOutputHandler,
+          XalanFlushHanderType theFlushHandler = 0);
+</source>
+<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 stylesheet once and using the binary representation when you call transform().</p>
+<p><jump href="apiDocs/classXalanTransformer.html">XalanTransformer</jump> includes methods for creating compiled stylesheets and 
+   parsed XML documents: the compileStylesheet() method returns a pointer to a <jump href="apiDocs/classXalanCompiledStylesheet.html">
+   XalanCompiledStylesheet</jump>; the parseSource() method returns a pointer to a <jump href="apiDocs/classXalanParsedSource.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;
+compiledStylesheet = theXalanTransformer.compileStylesheet("foo.xsl");
+assert(compiledStylesheet!=0);
+theXalanTransformer.transform("foo1.xml", *compiledStylesheet, "foo1.out.");
+theXalanTransformer.transform("foo2.xml", *compiledStylesheet, "foo2.out");
+...
+</source>
+<p>For a working sample, see the <link idref="samples" anchor="compilestylesheet">CompileStylesheet</link> sample.</p>
+<p>Example using a XalanParsedSource for multiple transformations:</p>
+<source>
+XalanParsedSource* parsedXML = 0;
+parsedXML = theXalanTransformer.parseSource("foo.xml");
+assert(parsedXML!=0);
+theXalanTransformer.transform(*parsedXML, "foo1.xsl", "foo-xsl1.out");
+theXalanTransformer.transform(*parsedXML, "foo2.xsl", "foo-xsl2.out");
+...
+</source>
+<p>For a sample that uses both a parsed XML source and a compiled stylesheet, see <link idref="samples" anchor="threadsafe">ThreadSafe
+</link>.</p>
+</s2>
+
+<anchor name="dom"/>
+<s2 title="Working with DOM input and output">
+<p>You can set up an <jump href="apiDocs/classXSLTResultTarget.html">XSLTResultTarget</jump> to produce a DOM when you perform a 
+   transformation. You can also use a DOM as input for a transformation.</p>
+<p>The following code fragment illustrates the procedures for working with DOM output :</p>
+<source>
+
+// Use the Xerces DOM parser to create a DOMDocument.
+
+#include &lt;xercesc/dom/DOMDocument.hpp&gt;
+#include &lt;xercesc/dom/DOMImplementation.hpp&gt;
+
+#include &lt;xalanc/XMLSupport/FormatterToXML.hpp&gt;
+#include &lt;xalanc/XMLSupport/XalanTransformer.hpp&gt;
+
+XALAN_USING_XERCES(DOMDocument)
+XALAN_USING_XERCES(DOMImplementation)
+
+XALAN_USING_XALAN(FormatterToXML)
+XALAN_USING_XALAN(XalanTransformer)
+
+
+    // If you want to produce DOM output, create an empty Xerces Document
+    // to contain the transformation output.
+    
+    DOMDocument * theDOM = 
+        DOMImplementation::getImplementation()->createDocument();    
+
+    // Now create a FormatterListener which can be used by the transformer
+    // to send each output node to the new Xerces document
+
+    FormatterToXercesDOM theFormatter(theDOM);
+
+    // Now do the transform as normal
+    XalanTransformer theXalanTransformer
+    int theResult = theXalanTransformer.transform(
+        "foo.xml", 
+        "foo.xsl", 
+        theFormatter);
+...
+
+    // After you perform the transformation, the DOMDocument contains
+    // the output.
+</source>
+<note>You can also follow the same process but use a <em>FormatterToDeprecatedXercesDOM</em> if you require a DOM_Document
+      output.  However this is discouraged, as support for the deprecated DOM may be removed in future releases of &xslt4c;</note>
+<p>If you want to use a Xerces DOM object as input for a transformation without wrapping the DOM in a XercesParserLiaison, see 
+   <link anchor="xercesdomwrapperparsedsource">passing in a Xerces DOM</link>.</p>
+
+<s3 title="Limitations">
+<p>Performance is much better when &xslt4c; uses native source tree handling rather than interacting with the Xerces DOMParser.</p>
+<p>If you are using the deprecated DOM, the Xerces DOMParser by default, 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>
+
+<anchor name="xercesdomwrapperparsedsource"/>
+<s3 title="Passing in a Xerces DOM to a transformation">
+<p>You may want to use a Xerces DOM that was created without using the XalanTransformer class. As the following code snippet 
+   illustrates, you can use <jump href="apiDocs/classXercesDOMWrapperParsedSource.html">XercesDOMWrapperParsedSource</jump> to 
+   pass in a Xerces DOM as the source for an XSL transformation.</p>
+<source>
+#include &lt;xercesc/parsers/DOMParser.hpp&gt;
+#include &lt;xalanc/XalanTransformer/XercesDOMWrapperParsedSource.hpp&gt;
+
+void parseWithXerces(XalanTransformer &amp;xalan, 
+                     const XSLTInputSource &amp;xmlInput,
+                     const XalanCompiledStylesheet* styleSheet,
+                     const XSLTResultTarget &amp;output,
+                     XMLFileReporter &amp;logFile)
+{
+    XercesDOMParser theParser;
+  
+    // Turn on validation and namespace support.
+    theParser.setDoValidation(true);
+    theParser.setDoNamespaces(true);
+
+    // Parse the document
+  
+    theParser.parse(xmlInput);
+    DOMDocument *theDOM = theParser.getDocument();
+    theDOM->normalize();
+
+    XercesDOMSupport theDOMSupport;
+    XercesParserLiaison theParserLiaison;
+  
+    // Use the DOM to create a XercesDOMWrapperParsedSource, 
+    // which you can pass to the transform method.
+    try
+    {
+        const XercesDOMWrapperParsedSource parsedSource(
+                                   theDOM,
+                                   theParserLiaison,
+                                   theDOMSupport,
+                                   XalanDOMString(xmlInput.getSystemId()));
+
+        xalan.transform(parsedSource, stylesheet, output);
+
+    }
+    catch (....)
+    {
+      ...
+    }
+}  
+</source>
+</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. XPath 
+   provides an API that you can call directly. For example, you may want to select nodes programmatically and do your own 
+   processing without a stylesheet. &xslt4c; provides an XPathEvaluator interface to simplify the process of executing XPath 
+   expressions.</p>
+<p>For an example that executes XPath expressions against XML source files, see <link idref="samples" anchor="simplexpathapi">
+   SimpleXPathAPI</link> (takes advantage of the XPathEvaluator interface) and <link idref="samples" anchor="xpathwrapper">
+   XPathWrapper</link>.</p>
+</s2>
+
+<anchor name="tracelistener"/>
+<s2 title="Using TraceListener">
+<p>TraceListener is a debugging abstract base class implemented by TraceListenerDefault. You can use TraceListener to trace 
+   any combination of the following:</p>
+<ul>
+  <li>Calls to templates</li>
+  <li>Calls to template children</li>
+  <li>Selection events</li>    
+  <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 TraceListen uses 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 formatting, and sorting.</p>
+<ul>
+  <li><em>Encoding</em>
+      <br/> &xml4c; and &xslt4c; use UTF-16 encoding to work with Unicode data.  If you integrate the ICU with &xml4c;, both 
+      &xml4c; and &xslt4c; use ICU support for input and output transcoding.<br/><br/></li>
+  <li><em>format-number()</em>
+      <br/>This XSLT function includes two or three arguments (the third is optional): number, format pattern, and decimal-format 
+      name. &xslt4c; ignores the format pattern and optional decimal-format name. If you install ICU support for format-number(), 
+      this function is fully supported with all its arguments.<br/><br/></li>
+  <li><em>xsl:sort</em>
+      <br/>If you install ICU support for xml:sort, &xslt4c; implements Unicode-style collation.</li>
+</ul>
+
+<p>If you choose to build Xalan with ICU, you will need to rebuild Xerces with ICU as well.</p>
+<p>To get the ICU:</p> 
+<ol>
+  <li>Download and unzip the <resource-ref idref="icu-download"/> from the IBM developerWorks open source zone.<br/><br/></li>
+  <li>Do an ICU build -- see the Windows NT or Unix build instructions in the build_instruct.html that accompanies the download.<br/>
+      <em>Important</em> For Windows, define the environment variable ICUROOT and then restart Visual C++ or Visual Studio .NET. 
+      in order for the ICUROOT variable to take effect.<br/><br/></li>
+</ol>
+
+<anchor name="icusupport"/>
+<s3 title="Enabling ICU support for encoding">
+<p>If you want to enable ICU support for encoding, you must integrate ICU with your &xml4c; build. &xml4c; uses ICU for input 
+   encoding. See <resource-ref idref="xerces-build-icu"/>.</p>
+<p>Once you have integrated the ICU with &xml4c;, &xslt4c; automatically uses ICU support for output encoding (the xsl:output 
+   encoding attribute).</p>
+</s3>
+
+<s3 title="Enabling ICU support for number formatting and sorting"> 
+<p>If you only want to use the ICU to support number formatting and sorting, you do not need to integrate the ICU with &xslt4c;, 
+   but you must do the following in the application where you want to enable ICU support:</p>
+<ol>
+  <li>Define the environment variable ICUROOT.<br/><br/></li>
+  <li>Substitute ICU support for format-number(), xsl:number, and/or xsl:sort.<br/><br/></li>
+  <li>Rebuild the Xalan library to include the ICUBridge.</li>
+</ol>
+<p><em>ICUBridge</em></p>
+<p>All &xslt4c; references to ICU are centralized in the ICUBridge module, which supplies the infrastructure for enabling ICU 
+   support for number formatting and sorting.</p>
+<source>
+#include &lt;xalanc/ICUBridge/ICUBridge.hpp&gt;
+#include &lt;xalanc/ICUBridge/FunctionICUFormatNumber.hpp&gt;
+#include &lt;xalanc/ICUBridge/ICUXalanNumberFormatFactory.hpp&gt;
+#include &lt;xalanc/ICUBridge/ICUBridgeCollationCompareFunctor.hpp&gt;
+</source>
+<p>For Windows, do a clean build of the Xalan library using the "XalanICU.dsw" workspace (for Visual C++ users) or 
+   "XalanICU.sln" solution (for Visual Studio .NET users).</p>
+<p>For UNIX:</p>
+<ol>
+  <li>Define the XALAN_USE_ICU environment variable.<br/><br/></li>
+  <li>Set the XALANROOT environment variable to the path to to the ICU root (unless you have copied the ICU library to
+      /usr/lib).<br/><br/></li> 
+  <li><link idref="build_instruct" anchor="unix">Rebuild the Xalan library</link> (&xslt4c-linuxlib; for Linux, &xslt4c-aixlib; for AIX,
+      &xslt4c-hplib; for HP-UX 11, and &xslt4c-solarislib; for Solaris).<br/><br/></li>
+  <li>Be sure the Xalan library is on the library path (LD_LIBRARY_PATH for Red Hat Linux, LIBPATH for AIX, SHLIB_PATH for 
+      HP-UX 11, LD_LIBRARY_PATH for Solaris).</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/>
+      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<br/>To define XALAN_USE_ICU, 
+      set its value to "1".
+</note>
+<p><em>Number formatting</em></p>
+<p>To enable ICU support for the XSLT format-number() function, do the following:</p>
+<source>
+// Install ICU support for the format-number() function.
+FunctionICUFormatNumber::FunctionICUFormatNumberInstaller theInstaller;
+</source>
+
+<p><em>Sorting</em></p> 
+<p>To enable ICU support for xsl:sort, do the following:</p>
+<source>
+// Set up a StylesheetExecutionContextDefaultobject
+// (named theExecutionContext in the following fragment),
+// and install the ICUCollationCompareFunctor.
+ICUBridgeCollationCompareFunctortheICUFunctor;
+theExecutionContext.installCollationCompareFunctor(&amp;theICUFunctor);
+</source>
+</s3>
+</s2>
+
+<anchor name="capi"/>
+<s2 title="Basic XalanTransformer usage pattern with the C API">
+<p>We also include a simple C interface for using the XalanTransformer class. See <jump href="apiDocs/XalanCAPI_8h.html">
+   XalanTransformer/XalanCAPI.h</jump>. The <link idref="samples" anchor="apachemodulexslt">ApacheModuleXSLT</link> sample 
+   illustrates the use of this C API.</p>
+<p>Basic strategy:</p>
+
+<s3 title="1. Include the XalanTransformer C API header">
+<source>#include &lt;XalanTransformer/XalanCAPI.h&gt;</source>
+</s3>
+<s3 title="2. Initialize Xalan and Xerces">
+<source>XalanInitialize();</source> 
+</s3>
+<s3 title="3. Create a Xalan transformer">
+<source>
+XalanHandle xalan = NULL;
+xalan = CreateXalanTransformer();
+</source>
+</s3>
+<s3 title="4. Perform each transformation">
+<p>  For example:</p>
+<source>
+const char * xmlfilename = "foo.xml";
+const char* xslfilename = "foo.xsl";
+const char* outfilename = "foo.out";
+int theResult = 0;
+theResult = XalanTransformToFile(xmlfilename,
+                                 xslfilename,
+                                 outfilename,
+                                 xalan);
+</source>
+<note>If the XML input file contains a stylesheet processing instruction that you want to use, use an empty XSLTInputSource 
+      for the stylesheet argument.</note>
+</s3>                             
+    
+<s3 title="5. Shut down Xalan">
+<source>XalanTerminate();</source>
+</s3>
+</s2>
+
+<anchor name="cvar"/>
+<s2 title="Variations with the XalanTransformer C API">
+<p>The <jump href="apiDocs/XalanCAPI_8h.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 indicate the URI of the stylesheet. Supply NULL for the stylesheet argument.<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() 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>
+</s2>
+
+</s1>

Added: xalan/c/trunk/xdocs/sources/xalan/whatsnew.xml
URL: http://svn.apache.org/viewvc/xalan/c/trunk/xdocs/sources/xalan/whatsnew.xml?rev=1350859&view=auto
==============================================================================
--- xalan/c/trunk/xdocs/sources/xalan/whatsnew.xml (added)
+++ xalan/c/trunk/xdocs/sources/xalan/whatsnew.xml Sat Jun 16 04:28:14 2012
@@ -0,0 +1,276 @@
+<?xml version="1.0" standalone="no"?> 
+<!DOCTYPE s1 SYSTEM "../../style/dtd/document.dtd"[
+<!--<!ENTITY done-c SYSTEM "DONE"> -->
+<!--<!ENTITY status-c SYSTEM "STATUS"> -->
+<!--<!ENTITY todo-c SYSTEM "BUGS"> -->
+<!ENTITY history-c SYSTEM "history.xml">]>
+
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the  "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+-->
+<s1 title="What's New in this Release">
+
+ <ul>
+  <li><link anchor="status">Status</link></li>
+  <li><link anchor="contact">Getting in Touch</link></li>
+  <li><link anchor="history">History of Software Changes</link></li>
+  <li><link anchor="bugfix11">Bug Fixes in Release 1.11</link></li>
+  <li><link anchor="bugfix10">Bug Fixes in Release 1.10</link></li>
+  <li><link anchor="bugs">Bug reporting</link></li>    
+  <li><link anchor="to-do">To-do tasks for future Xalan-C/C++ releases</link></li>
+ </ul>
+
+<anchor name="status"/>
+<s2 title="Status">
+
+<p><em>Release notes for Xalan-C/C++ Version 1.11</em>
+</p>
+<p>This is primarily a bug-fix release of version 1.10.  Support for number and
+nodeset types for stylesheet top-level parameters has been added. Xerces-C/C++
+versions 3.0 and newer are now supported. Xerces-C/C++ Version 3.1.1 is the
+preferred stable release.
+</p>
+<p>At present, the Xalan-C/C++ Version 1.11 has no binary releases. 
+When building Xalan-C/C++ from sources, 
+you should use the same platform that was used to 
+compile the companion Xerces-C/C++ library.
+</p>
+<p>Binary package releases for Microsoft Windows are being planned.
+</p>
+<p>If you are able to successfully create a new binary package and wish it
+to be included, then we welcome your participation on the 
+<jump href="mailto:xalan-dev@xml.apache.org">xalan-dev</jump> mail list.
+</p>
+<p>Xalan-C/C++ no longer supports Microsoft Studio (VC6).  The Microsoft Visual
+Studio .NET platforms (2003, 2005, 2008, and 2010) are supported.  This equates
+to compilers (VC71, VC8, VC9, and VC10).
+</p>
+
+</s2>
+
+<anchor name="contact"/>
+<s2 title="Getting in Touch">
+<p>Your feedback is more than welcome. Offers of help are even more so! 
+Perhaps you would like to contribute to the ongoing development, 
+testing, or documentation of &xslt4c;.
+</p> 
+<p>Please email your comments, questions, suggestions, bug reports, 
+and offers to help to <human-resource-ref idref="xalandev"/>.
+</p>
+<p>Your general user comments on &xslt4c; usage are also welcome on 
+<human-resource-ref idref="xalancusers"/>.
+</p>
+</s2>
+
+<anchor name="history"/>
+<s2 title="Cumulative history of software changes">
+<p>The following sections list the changes in each release since &xslt4c; version 0.40.0.</p>
+&history-c;
+</s2> 
+
+
+<anchor name="bugfix11"/>
+<s2 title="Bug Fixes in Release 1.11">
+<p>The bugs fixed in &xslt4c-current; include:</p>
+<ul>
+<li>XALANC-723 Add Top-Level parameter support for XalanCAPI and UseStylesheetParams sample</li>
+<li>XALANC-721: Upgrade support for MS VS 2010 (VC10)</li>
+<li>XALANC-719: Xerces Parser Liaison - errors on elements with no attributes</li>
+<li>XALANC-716: incorrect buffer-size calculation in XalanUTF16Writer.hpp</li>
+<li>XALANC-715: NULL pointer access crash</li>
+<li>XALANC-713: Build Xalan-C/C++ API Reference Manual using Doxygen 1.7 or newer</li>
+<li>XALANC-710: MS-Studio 2008 Debug Build sends Xalan-C_1D.lib to wrong directory</li>
+<li>XALANC-709: Doxygen bug in XalanQName.hpp</li>
+<li>XALANC-708: Including XalanCAPI.hpp does not import Xerces typedef XMLch</li>
+<li>XALANC-705:	Crash with pure virtual function call</li>
+<li>XALANC-703:	Compiler errors while building on AIX 5.3</li>
+<li>XALANC-700:	Broken output when serializing UTF16 surrogates</li>
+<li>XALANC-699:	Compile using Visual C++ 2010 (VC10)</li>
+<li>XALANC-698:	Buffer overflow from XalanMessageLoader::load()</li>
+<li>XALANC-690:	The document function does not handle fragment IDs in URLs correctly</li>
+<li>XALANC-689:	XalanC transformation of a 600 kb file takes 43 seconds</li>
+<li>XALANC-684:	XPath single quate-comma bug</li>
+<li>XALANC-683:	xsl:number with level any does not always count all of the preceeding nodes in the document</li>
+<li>XALANC-681:	NamedNodeMapAttributeList constructor asserts when the provided NamedNodeMap is empty</li>
+<li>XALANC-680:	Error in match pattern with // and abbreviated attribute node test</li>
+<li>XALANC-679:	Possible wrong evaluation of abbreviated XPath in template match</li>
+<li>XALANC-677:	Debug assertion switching to HTML mode when the outputter is producing a DOM</li>
+<li>XALANC-675:	No error is reported for an unknown key</li>
+<li>XALANC-675:	GCC-4.3 cleanup</li>
+<li>XALANC-673:	Assertion failed with XalanDOMString::substr</li>
+<li>XALANC-671:	Incorrect handling of default namespace in xsl:element</li>
+<li>XALANC-669:	XalanOtherEncodingWriter reports an incorrect error message</li>
+<li>XALANC-667:	setUseValidation doesn't work</li>
+<li>XALANC-664:	Testing harness writes strings to the output XML in the local code page.</li>
+<li>XALANC-661:	PlatformSupport/DoubleSupport.cpp compile error on AIX 5.3</li>
+<li>XALANC-660:	Compilation errors in Tests/Performance/TestHarness.hpp on some platforms</li>
+<li>XALANC-659:	Unnecessary casting in ReusableArenaBlock</li>
+<li>XALANC-658:	Misplaced assert in ReusableArenaAllocator::destroyObject()</li>
+<li>XALANC-657:	Add Windows x64 targets to the project files</li>
+<li>XALANC-655:	Boolean value incorrectly converted ot string in attribute value templates</li>
+<li>XALANC-653:	Xalan-C not including namespace declaration in output</li>
+<li>XALANC-650:	XPathProcessorImpl uses XalanDOMString copy constructor instead of referring to an existing instance</li>
+<li>XALANC-648:	XalanUTF8Writer::write(const XalanDOMChar*, XalanDOMString::size_type) does not handle surrogates properly</li>
+<li>XALANC-647:	XalanOtherEncodingWriter::writeNumericCharacterReference() is inefficient</li>
+<li>XALANC-646:	During transcoding XalanC fails to append '0' to the transcoded string </li>
+<li>XALANC-645:	Pluggin of DOMStringPrintWriter into FormatterToXML leads to assert</li>
+<li>XALANC-641:	Class used as exception needs accessible copy constructor</li>
+<li>XALANC-640:	Path problem in Makefile under cygwin</li>
+<li>XALANC-638:	Performance test program does not build on HP-UX</li>
+<li>XALANC-635:	Build fails on Solaris 2.8</li>
+<li>XALANC-634:	Build fails with VC6</li>
+<li>XALANC-633:	The processor should ignore xsl:fallback element in LRE </li>
+<li>XALANC-632:	@use-attribute-sets attribute has to have no effect on xsl:copy when the context item is a documen node.</li>
+<li>XALANC-631:	The next stylesheet crashes XalanC</li>
+<li>XALANC-630:	Incorrect cast in XalanUTF16Writer</li>
+<li>XALANC-629:	Performance improvements for text node stripping</li>
+<li>XALANC-628:	Inconsistent flusing of serializers</li>
+<li>XALANC-627:	Broken cast in ElemTemplateElement::findTemplateToTransformChild()</li>
+<li>XALANC-626:	Fix copyrights in Apache XalanC source</li>
+<li>XALANC-625:	Spurious (though harmless) assert failure in XPath::findNodeSet() when an expression contains an empty node-set enclosed in parenthesis</li>
+<li>XALANC-624:	The key() function does not work when the context node is the root node of a result tree fragment obtained through exsl:node-set()</li>
+<li>XALANC-623:	Compatibility issues with Xerces-C 3.0</li>
+<li>XALANC-621:	Selection of compiler definitions file fails on Linux PPC in client code</li>
+<li>XALANC-618:	uninstallExternalFunction can run past the end of the array</li>
+<li>XALANC-617:	Leak in XalanTransformer</li>
+<li>XALANC-616:	xsl:strip-space element doesn't work proprely</li>
+<li>XALANC-615:	Xalan resolves a namespace prefix when it should report an error</li>
+<li>XALANC-614:	MsgCreator Makefile needs link option</li>
+<li>XALANC-613:	Cannot pass value to stylesheet parameter if parameter name is namespace-qualified</li>
+<li>XALANC-609:	Template with built-in template rules for namespaces gives and assert</li>
+<li>XALANC-604:	ConstructWithNoMemoryManager has a bug which prevents proper default initialization of built-in types.</li>
+<li>XALANC-603:	Source does not compile properly on HP-UX with newer versions of the HP compiler</li>
+<li>XALANC-595:	EXSLT date-time function missing + or - before timezone offset</li>
+<li>XALANC-588:	Floating point exceptions in DoubleSupport::initialize() on Solaris 10 (x86)</li>
+<li>XALANC-570: Removal of compiler warnings from STLHelper.hpp</li>
+<li>XALANC-535:	If an error/warning message contains not-displayable character for the local encoding , no message is shown at all</li>
+<li>XALANC-527: Compiling on Xerces-3.0</li>
+<li>XALANC-480:	XML1.1 and Namespaces for XML1.1 support</li>
+<li>XALANC-478:	Add support for XMLEntityResolver</li>
+<li>XALANC-432:	Minor spelling problems in XalanMsg_en_US.xlf</li>
+<li>XALANC-430:	"StylesheetExecutionContext::getVariable(name)" crahes if variable "name" was not found.</li>
+<li>XALANC-421:	omit-xml-declaration ignored</li>
+<li>XALANC-416:	Wrong access to out-of-scope xsl:variable not detected in certain circumstances</li>
+<li>XALANC-415:	Encoding attribute is not returning properly in output XML header</li>
+<li>XALANC-413:	Crash while using transform method on MacOSX</li>
+<li>XALANC-412:	XalanEXSLTDateTime not threadsafe, crashing application</li>
+<li>XALANC-409:	compilation error on g++ on SunOS 2.8</li>
+<li>XALANC-408:	runConfigure help does not include new HP platform</li>
+<li>XALANC-407:	XalanC output format is not suitable as a document entity</li>
+<li>XALANC-376:	Result tree fragment attributes are created without proper namespace and local name </li>
+</ul>
+</s2>
+
+<anchor name="bugfix10"/>
+<s2 title="Bugs Fixed in Release 1.10">
+<p>The bugs fixed in the 1.10 release include:</p>
+<ul>
+  <li>XALANC-572: Compile failure on SuSE80AMD_64b_GCC322 </li>
+  <li>XALANC-569: Compile-time assert on 32-bit Solaris and HPUX due to IEEE754 issue </li>
+  <li>XALANC-568: Pattern "/" does not match the pseudo root document of a node-set obtained from a result-tree fragment via exsl:node-set </li>
+  <li>XALANC-511: Crash during XalanTransformer::initialize on AIX </li>
+  <li>XALANC-554: Xalan-C does not implement erratum 25 </li>
+  <li>XALANC-552: Problems with the new serializers with CDATA and unrepresentable or special characters </li>
+  <li>XALANC-558: Latest source code does not build with the Intel compiler on Windows </li>
+  <li>XALANC-555: XalanEXSLTDateTime.cpp has too many platform-specifc ifdefs </li>
+  <li>XALANC-421: omit-xml-declaration ignored </li>
+  <li>XALANC-529: Xalan-C sometimes creates empty text nodes in RTFs or sends empty characters() events to FormatterListeners </li>
+  <li>XALANC-530: Serializers filter attributes unnecessarily </li>
+  <li>XALANC-245: substring-before and substring-after </li>
+  <li>XALANC-115: Need to catch use of variables in xsl:key attributes </li>
+  <li>XALANC-540: XPath absolute location path does not work when the context node was obtained from a result tree fragment through exsl:node-set() </li>
+  <li>XALANC-544: Assert failure, then crash, during "variable undefined" error recovery in certain circumstances. </li>
+  <li>XALANC-543: Crash when calling a template that wrongly uses xsl:with-param instead of xsl:param to declare its parameter. </li>
+  <li>XALANC-539: XalanMap needs to compact buckets to prevent long search times and ever-increasing memory usage. </li>
+  <li>XALANC-542: XalanDocumentFragmentXNodeSetBaseProxy::dereferenced() is not implemented properly </li>
+  <li>XALANC-538: Better handling for non-existent node test </li>
+  <li>XALANC-541: Fixes for zOS build </li>
+  <li>XALANC-455: Problem when releasing InputSource obtained through an EntityResolver </li>
+  <li>XALANC-535: If an error/warning message contains not-displayable character for the local encoding , no message is shown at all </li>
+  <li>XALANC-532: FormatterToXMLUnicode does not serialize UTF-8 </li>
+  <li>XALANC-536: ElemNumber uses extra temporary strings </li>
+  <li>XALANC-537: XalanC source code quotes incorrectly license protected documents </li>
+  <li>XALANC-526: Use of undefined stricmp breaks compilation on Linux </li>
+  <li>XALANC-513: ICUFormatNumberFunctor has some MemoryManager issues </li>
+  <li>XALANC-507: Safety improvements for XalanVector::insert() </li>
+  <li>XALANC-506: Remove references to stlport directory in Makefile.incl.in </li>
+  <li>XALANC-505: DirectoryEnumerator.hpp will not build on Solaris 10 with Sun Workshop 10 </li>
+  <li>XALANC-502: XalanDOMStringCache has initializer list out of order </li>
+  <li>XALANC-501: Creation of comments and PIs needs to detect illegal values </li>
+  <li>XALANC-500: Remove old "diagnostic" output from StylesheetRoot and XSLTEngineImpl </li>
+  <li>XALANC-497: Local variables or parameters in EXSLT-functions are interpreted as global </li>
+  <li>XALANC-496: Glitches in header files </li>
+  <li>XALANC-493: Problem with XALAN_STATIC_CHECK on HP-UX IA64 </li>
+  <li>XALANC-492: Various pluggable memory management bugs. </li>
+  <li>XALANC-490: XalanFileReporter is inconsistent in its usage of pluggable memory management </li>
+  <li>XALANC-489: XalanMemMgrs has a thread-safety issue </li>
+  <li>XALANC-488: XSLTInputSource does not support pluggable memory management </li>
+  <li>XALANC-487: URISupport does not provide explicit MemoryManager </li>
+  <li>XALANC-485: GCC warns about order of members in initializer list </li>
+  <li>XALANC-484: Remove compiler warnings about placement delete for HP's aCC compiler </li>
+  <li>XALANC-483: XercesParserLiaison does not create Xerces-C DOM instances with namespaces support enabled. </li>
+  <li>XALANC-482: Remove compiler warnings </li>
+  <li>XALANC-470: runConfigure does not pass link options to Makefile for AIX platform </li>
+  <li>XALANC-465: Add alt tag to footer.html page under html/apiDocs tree. </li>
+  <li>XALANC-463: Transforming an XML DOM document encapsulated within an XercesDOMWrapperParsedSource object triggers an invalid heap pointer exception if XSL opens other XML document with 'document()' function. </li>
+  <li>XALANC-460: Linux/xlC port </li>
+  <li>XALANC-448: TestXSLT/process.cpp compilation fails, interface broken in FormatterToText.hpp </li>
+  <li>XALANC-445: generate-id() inserts periods into name which limits usage </li>
+</ul>
+</s2>
+
+
+<anchor name="bugs"/>
+<s2 title="Bug reporting">
+<p>All known &xslt4c; bugs are listed in <resource-ref idref="jira"/>. For a list of open bugs with links to each bug
+   report, see <resource-ref idref="buglist"/>. If you find a new bug, please enter a XalanC bug report in this
+   database.</p>
+<note>Before you can enter your first bug report, 
+  you must submit your email address to 
+  <jump href="https://issues.apache.org/jira">JIRA</jump> 
+  and receive a password.
+</note> 
+<p>We strongly encourage you write patches for problems you find and 
+  submit them to JIRA and the
+  <jump href="mailto:xalan-dev@xml.apache.org">xalan-dev</jump> mailing list. 
+  We review the patches we receive to make sure they do not break   something else, and (assuming they do not) 
+  include them in our next release. 
+  In the interest of fixing bugs, adding enhancements, and 
+  addressing outstanding design issues, we sincerely want
+  (and need!) your active participation in the ongoing development of Xalan.
+</p>
+</s2>
+
+<anchor name="to-do"/>
+<s2 title="To-do tasks for future Xalan-C/C++ releases">
+<p>Open bugs:</p>
+<ul>
+<li>The namespace axis does not return the default "xml" namespace.</li>
+<li>Does not support case-order and lang attributes in xsl:sort.</li>
+</ul>
+<p>Items to do:</p>
+<ul>
+<li>Add support for new specifications (XPath-20, XSLT-2.0)</li>
+<li>Add transcoding support using Xerces-C modules</li>
+<li>Add XSLT extension elements</li>
+<li>Add more EXSLT extension functions</li>
+<li>Add the EXSLT document extension function</li>
+<li>Add support for user-defined extension modules</li>
+<li>Add support for node-set to be declared as top-level XSLT parameter</li>
+</ul>
+</s2>
+</s1>

Added: xalan/c/trunk/xdocs/sources/xslt-resources/Xalan-Logo-tm.png
URL: http://svn.apache.org/viewvc/xalan/c/trunk/xdocs/sources/xslt-resources/Xalan-Logo-tm.png?rev=1350859&view=auto
==============================================================================
Binary file - no diff available.

Propchange: xalan/c/trunk/xdocs/sources/xslt-resources/Xalan-Logo-tm.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: xalan/c/trunk/xdocs/sources/xslt-resources/Xalan-Trademark.txt
URL: http://svn.apache.org/viewvc/xalan/c/trunk/xdocs/sources/xslt-resources/Xalan-Trademark.txt?rev=1350859&view=auto
==============================================================================
--- xalan/c/trunk/xdocs/sources/xslt-resources/Xalan-Trademark.txt (added)
+++ xalan/c/trunk/xdocs/sources/xslt-resources/Xalan-Trademark.txt Sat Jun 16 04:28:14 2012
@@ -0,0 +1,106 @@
+
+The XALAN Logo - Trademark Description
+--------------------------------------
+
+Prepared By:  
+
+	Steven J. Hathaway
+
+	(shathaway@apache.org)
+
+	September 3, 2011
+
+
+
+Prepared for:
+
+	The Apache Software Foundation
+
+--------------------------------------
+
+Graphic: A stylized version of the African Xalam instrument.
+
+Note: the difference in spelling.
+
+	Xalam is the African Musical Instrument
+	Xalan is the Apache Xalan Software Project
+
+
+TEXT FONTS SIZE AND STYLE:
+
+TM (trademark symbol)
+
+	Font: Arial
+	Size: 14pt
+	Style: Bold)
+
+XSLT
+
+	Font: Arial
+	Size: 22pt
+	Style: Bold
+
+Apache Software Foundation (trademark name)
+
+	Font: Arial
+	Size: 18pt
+	Style: Bold
+	Note: 2 space characters between words
+
+Xalan	(trademark name)
+
+	Font: Segoe Print
+	Size: 48pt
+	Style: Bold
+
+Xalan-C	(trademark name)
+
+	Font: Segoe Print
+	Size: 48pt
+	Style: Bold
+
+Xalan-J	(trademark name)
+
+	Font: Segoe Print
+	Size: 48pt
+	Style: Bold
+
+
+INSTRUMENT GRAPHIC (vector equations)
+
+	Vertical Width:		0.75 inch (3/4)
+	HorizontalLength:	3.667 inch (3 2/3)
+
+	Oval on the left,
+	neck and butt on the right.
+
+	Oval Width:		0.75 inch (3/4)
+	Oval Length:		1.583 inch (1 7/12)
+
+	Neck Width:		0.167 inch (1/6)
+
+	Butt Width:		0.25 inch (1/4)
+	Butt Length:		0.417 inch (5/12)
+
+
+Description of instrument logo
+
+	Oval: simulation of a gourd sound chamber
+	With orange gradation hues
+
+	Neck: rectangle simulating a round fingerboard
+	With yellow-green gradation hues
+
+	Butt: rounded rectangle simulating end of neck
+	With olive-green hue
+
+	String Anchor:  rounded rectangle on the gourd
+	With olive-green hue
+
+	2 strings: the full length from Anchor to Butt
+
+	2 strings: tied to neck, at 1/2 length from Anchor to Butt
+
+	3 Loose Tie Strings on the Butt, simulating tuning anchors
+
+	
\ No newline at end of file

Added: xalan/c/trunk/xdocs/sources/xslt-resources/XalanC-Logo-tm.png
URL: http://svn.apache.org/viewvc/xalan/c/trunk/xdocs/sources/xslt-resources/XalanC-Logo-tm.png?rev=1350859&view=auto
==============================================================================
Binary file - no diff available.

Propchange: xalan/c/trunk/xdocs/sources/xslt-resources/XalanC-Logo-tm.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: xalan/c/trunk/xdocs/sources/xslt-resources/apache-xalan.css
URL: http://svn.apache.org/viewvc/xalan/c/trunk/xdocs/sources/xslt-resources/apache-xalan.css?rev=1350859&view=auto
==============================================================================
--- xalan/c/trunk/xdocs/sources/xslt-resources/apache-xalan.css (added)
+++ xalan/c/trunk/xdocs/sources/xslt-resources/apache-xalan.css Sat Jun 16 04:28:14 2012
@@ -0,0 +1,414 @@
+/* Xalan-C/C++ Project Web Pages (css) Stylesheet */
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the  "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+/* This (css) stylesheet renders the xhtml web pages that were generated
+ * from StyleBook XML markup using the "xalan-book.xslt" transformation.
+*/
+
+html > bod  {left:0;}
+body {
+/*  background-color: white; */
+  background-color: #f8f8f0;
+  color: black;
+  padding: 0;
+  margin: 0;
+  font-family: arial, "lucida console", san-serif;
+}
+
+/* Emulate table align=center */
+div.centered, td.centered {
+  text-align: center;
+}
+
+div.centered table {
+  margin: 0 auto;
+  text-align: left;
+}
+
+/*
+ * ID Sections
+ */
+
+#content {
+  width: 80%;
+  float: left;
+  font-size: 12pt;
+  padding-top: 1em;
+  padding-left: 5px;
+  margin-left: 10px;
+  border-left: 1px solid #aaa;
+}
+
+#navLeft {
+  clear: left;
+  width: 15%;
+  float: left;
+  padding: 2px;
+  margin-left: 1%;
+  color: red;
+  position: relative;
+  left: 1px;
+  background-color: #eee;
+}
+
+.navGroup {
+  color: Black;
+  font-size: 14pt;
+}
+
+
+#title {
+  color: black;
+  background-color: #eee;
+  text-align: center;
+  border-bottom: 1px solid #aaa;
+  padding: 0;
+  vertical-align: middle;
+}
+
+table.HdrTitle {
+  font-size: 18pt;
+}
+
+table.HdrButtons {
+  font-size: 8pt;
+  background-color: #ccf;
+  align: "center";
+  border: "1";
+
+}
+
+#footer {
+    clear: both;
+    margin: 0 2em;
+    color: #444;
+    background-color: #ddd;
+    text-align: center;
+    padding: .5em 0;
+    font-size: 75%;
+    border-top: 1px solid #aaa;
+}
+
+/*
+ * Anchors
+ */
+
+a {
+  color: blue;
+  text-decoration: undedrline;
+}
+
+a img {
+  border: 0;
+}
+
+a:hover {
+  text-decoration: none;
+  background-color: #d7c9c9;
+}
+
+/*
+ * Headers
+ */
+
+h1 {}
+
+#title h1 {
+  padding: 1px 0;
+  margin: 0;
+  float: right;
+  width: 60%;
+  font-size: 20pt;
+  text-align: center;
+}
+
+#content h1 { background-color: #8af }
+
+h2 {}
+
+#title h2 {
+  font-size: 14pt;
+  width: 60%;
+  text-alignment: center;
+  padding: 1px 0;
+  margin: 0;
+}
+
+#content h2 { background-color: #9bf }
+
+#content h2.year {
+  background-color: #ddd;
+  text-align: center;
+}
+
+h3 {}
+
+#content h3.monthName {
+  background-color: #333;
+  text-align: center;
+}
+
+#content h3 { background-color: #acf }
+
+h4{}
+
+#content h4.eventTitle {
+  margin-left: 1%;
+  border-bottom: 1px solid blue;
+}
+
+#content h4 { background-color: #cdf }
+
+/*
+ * Tables
+ */
+
+th {}
+
+td {}
+
+th.content {background-color: #4BD }
+td.content {background-color: #AEF }
+
+/*
+ * Lists and navLeft
+ */
+
+ul {}
+
+#navLeft ul {
+  list-style-type: none;
+  margin: 0;
+  padding: 0;
+}
+
+#navLeft ul li {
+  margin: 0;
+}
+
+#navLeft ul li p {
+  margin: 0;
+}
+
+#navLeft ul li ul {
+  list-style-type: none;
+  font-size: 90%;
+  margin: 0 2em;
+}
+
+#navLeft ul li ul li {
+  margin: 0;
+}
+
+/*
+ * Paragraphs
+ */
+
+p {}
+
+#navLeft p {
+  text-align: center;
+  padding: 0 auto;
+  margin: 0;
+}
+
+#footer p {
+  padding: 0;
+}
+
+#content p.topalign {
+  vertical-align: middle;
+  height: 2em;
+  text-align: center;
+  width: 100%;
+  padding: .5em;
+  border: 1px solid #ddd;
+}
+
+#content p.topalign img {
+  vertical-align: middle;
+  text-align: text-middle;
+}
+
+#content p.quote {
+  color:black;
+  font-style: italic;
+  font-size: 110%;
+  margin-left: 10%;
+  margin-right: 10%;
+  padding 1em;
+  border: 1px solid #ddd;
+  text-align: center;
+}
+
+#content p.navbar {
+  font-size: 90%;
+  text-align: center;
+  border-top: 1px solid #ddd;
+  border-bottom: 1px solid #ddd;
+}
+
+blockquote {}
+
+blockquote.note {
+  font-size: 80%;
+  border: 1px solid #ddd;
+  background-color: #eee;
+}
+
+td.noteImg {
+  background-color: white;
+  border: 0;
+}
+
+td.noteTxt {
+  background-color: white;
+  font-size: 120%;
+  border: 2px solid #ddd;
+  background-color: #eee;
+}
+
+/**
+ ** UNSPECIFIED IN APACHE STYLEBOOK DTD
+ ** <caution>..</caution> and <warning>..</warning>
+ **
+ * 
+ * td.cautionImg {
+ *   background-color: white;
+ *   border: 0;
+ * }
+ * 
+ * td.cautionTxt {
+ *   background-color: white;
+ *   font-size: 120%;
+ *   border: 2px solid #ddd;
+ *   background-color: #eee;
+ * }
+ * 
+ * 
+ * td.warningImg {
+ *   background-color: white;
+ *   border: 0;
+ * }
+ * 
+ * td.warningTxt {
+ *   background-color: white;
+ *   font-size: 120%;
+ *   border: 2px solid #ddd;
+ *   background-color: #eee;
+ * }
+ * 
+**/
+
+
+blockquote.source {
+  font-size: 75%;
+}
+
+code {
+  font-size: 75%;
+}
+
+
+/*
+ * Special Table (note)
+ */
+
+#notediv div { background-color: white }
+
+table.note {
+  width: 90%;
+}
+
+td.noteImg {
+  background-color: white;
+  vertical-align: top;
+  border: 0;
+  width: 24;
+}
+
+td.noteTxt {
+  color: black;
+  background-color: #eee;
+  font-size: 90%;
+  border: 2px solid;
+  border-color: #ccc;
+}
+
+
+/*
+ * Images
+ */
+
+img {}
+
+
+#footer img {
+  border: 0;
+}
+
+
+/*
+ * Document Divisions
+ */
+
+div {}
+
+/*
+ * Pre
+ */
+
+pre {}
+
+
+/*
+ * Generic Classes
+ */
+
+.indented {
+  margin-left: 3%;
+}
+
+.topBanner {
+  float: right;
+  margin: 0;
+  border: 0;
+  vertical-align: middle;
+}
+
+.noborder {
+  border: 0;
+  margin: 0;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Added: xalan/c/trunk/xdocs/sources/xslt-resources/asf_logo.png
URL: http://svn.apache.org/viewvc/xalan/c/trunk/xdocs/sources/xslt-resources/asf_logo.png?rev=1350859&view=auto
==============================================================================
Binary file - no diff available.

Propchange: xalan/c/trunk/xdocs/sources/xslt-resources/asf_logo.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: xalan/c/trunk/xdocs/sources/xslt-resources/note.gif
URL: http://svn.apache.org/viewvc/xalan/c/trunk/xdocs/sources/xslt-resources/note.gif?rev=1350859&view=auto
==============================================================================
Binary file - no diff available.

Propchange: xalan/c/trunk/xdocs/sources/xslt-resources/note.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: xalan/c/trunk/xdocs/style/dtd/blocks.ent
URL: http://svn.apache.org/viewvc/xalan/c/trunk/xdocs/style/dtd/blocks.ent?rev=1350859&view=auto
==============================================================================
--- xalan/c/trunk/xdocs/style/dtd/blocks.ent (added)
+++ xalan/c/trunk/xdocs/style/dtd/blocks.ent Sat Jun 16 04:28:14 2012
@@ -0,0 +1,40 @@
+<?xml encoding='US-ASCII'?>
+
+<!-- BLOCKS ENTITY -->
+<!ENTITY % blocks "p|note|ul|ol|gloss|table|source|anchor">
+
+<!-- import the external markup.ent dtd -->
+<!ENTITY % markupEntity SYSTEM "markup.ent">
+%markupEntity;
+
+<!ENTITY % content "(#PCDATA|%markup;|%links;)*">
+
+<!ELEMENT p %content;>
+<!ELEMENT note %content;>
+
+<!ELEMENT ul (li|ol|ul)+>
+<!ELEMENT ol (li|ol|ul)+>
+<!ELEMENT li %content;>
+
+<!ELEMENT gloss (label|item)+>
+<!ELEMENT label %content;>
+<!ELEMENT item %content;>
+
+<!ELEMENT source (#PCDATA)>
+
+<!ELEMENT table (tr)+>
+
+<!ELEMENT tr (tn|th|td)+>
+
+<!ELEMENT tn EMPTY>
+<!ATTLIST tn colspan CDATA "1"
+             rowspan CDATA "1">
+
+<!ELEMENT th %content;>
+<!ATTLIST th colspan CDATA "1"
+             rowspan CDATA "1">
+
+<!ELEMENT td %content;>
+<!ATTLIST td colspan CDATA "1"
+             rowspan CDATA "1">
+             
\ No newline at end of file

Added: xalan/c/trunk/xdocs/style/dtd/book.dtd
URL: http://svn.apache.org/viewvc/xalan/c/trunk/xdocs/style/dtd/book.dtd?rev=1350859&view=auto
==============================================================================
--- xalan/c/trunk/xdocs/style/dtd/book.dtd (added)
+++ xalan/c/trunk/xdocs/style/dtd/book.dtd Sat Jun 16 04:28:14 2012
@@ -0,0 +1,56 @@
+<?xml encoding='US-ASCII'?>
+
+<!-- STYLEBOOK BOOK DTD -->
+
+<!-- import the external source-specific dtd -->
+<!ENTITY % externalEntity SYSTEM "../../sources/entities.ent">
+%externalEntity;
+
+<!ELEMENT book (resources?|document|hidden|faqs|changes|group|external|separator)+>
+<!ATTLIST book title     CDATA #REQUIRED
+               copyright CDATA #IMPLIED>
+               
+<!ELEMENT resources EMPTY>
+<!ATTLIST resources source CDATA #REQUIRED>
+
+<!ELEMENT document EMPTY>
+<!ATTLIST document id     ID    #REQUIRED
+                   source CDATA #REQUIRED
+                   label  CDATA #REQUIRED>
+
+<!ELEMENT hidden EMPTY>
+<!ATTLIST hidden id     ID    #REQUIRED
+                 source CDATA #REQUIRED>
+
+<!ELEMENT faqs EMPTY>
+<!ATTLIST faqs id     ID    #REQUIRED
+               source CDATA #REQUIRED
+               label  CDATA #REQUIRED>
+
+<!ELEMENT changes EMPTY>
+<!ATTLIST changes id     ID    #REQUIRED
+                  source CDATA #REQUIRED
+                  label  CDATA #REQUIRED>
+
+<!-- (entry) not supported in markup, cannot be tested -->
+<!-- (group) not to have entry children, only standard children -->
+<!-- <!ELEMENT group (entry)+> -->
+
+<!ELEMENT group (document|faqs|changes|external)*> 
+<!ATTLIST group id    ID    #IMPLIED
+                label CDATA #REQUIRED>
+
+<!-- (entry) not supported in markup, cannot be tested
+<!ELEMENT entry EMPTY>
+<!ATTLIST entry id     ID    #REQUIRED
+                source CDATA #REQUIRED>
+-->
+
+<!ELEMENT external EMPTY>
+<!ATTLIST external label CDATA #REQUIRED
+                   href  CDATA #REQUIRED>
+                   
+<!ELEMENT separator EMPTY>
+
+<!-- CVS $Revision: 1.3 $ $Date: 1999/12/01 23:03:37 $ -->
+<!-- Revision by (shathaway@apache.org) 2011/09/01 -->
\ No newline at end of file

Added: xalan/c/trunk/xdocs/style/dtd/changes.dtd
URL: http://svn.apache.org/viewvc/xalan/c/trunk/xdocs/style/dtd/changes.dtd?rev=1350859&view=auto
==============================================================================
--- xalan/c/trunk/xdocs/style/dtd/changes.dtd (added)
+++ xalan/c/trunk/xdocs/style/dtd/changes.dtd Sat Jun 16 04:28:14 2012
@@ -0,0 +1,24 @@
+<?xml encoding='US-ASCII'?>
+
+<!-- STYLEBOOK CHANGES DTD -->
+
+<!-- import the external markup.ent dtd -->
+<!ENTITY % markupEntity SYSTEM "markup.ent">
+%markupEntity;
+
+<!ENTITY % content "(#PCDATA|%markup;|%links;)*">
+
+<!ELEMENT changes (release)+>
+<!ATTLIST changes title CDATA #REQUIRED>
+
+<!ELEMENT release ((features,fixes)|(features)|(fixes))>
+<!ATTLIST release version CDATA #REQUIRED
+                  date    CDATA #IMPLIED>
+
+<!ELEMENT features (feat)+>
+<!ELEMENT fixes (fix)+>
+
+<!ELEMENT feat %content;>
+<!ELEMENT fix %content;>
+
+<!-- CVS $Revision: 1.3 $ $Date: 1999/12/01 23:03:37 $ -->
\ No newline at end of file



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