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><!DOCTYPE name PUBLIC "public-id" "system-id" [internal-DTD]></code><br/>
+<code><!DOCTYPE name SYSTEM "system-id" [internal-DTD]></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>"&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>"&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 <a/> anchor element is not allowed by many browsers,
+therefore <a></a> is required.
+A standard XML canonical process may collapse elements with no content into empty elements.
+The empty paragraph<p/> is disallowed. The <p></p> 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 '/>' markup (i.e. <br /> and <hr />).
+XML output mode does not normally have this space when using
+the <xsl:element name="br" /> 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. <a name="xxx"></a>) instead of an XML empty-element.
+XSLT processors usually create an empty-element
+(i.e. <a name="xxx"/>) 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 &#8204; character
+(a zero-width non-joining character often known as &zwnj;)
+as the element text content.
+This also allows transitional browsers the ability to find the end tag.
+</p>
+<p><source> DTD <!ENTITY zwnj "&#8204;">
+
+ <a name="marker">&zwnj;</a></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 <xalanc/Include/PlatformDefinitions.hpp>
+#include <xercesc/util/PlatformUtils.hpp>
+#include <xalanc/XalanTransformer/XalanTransformer.hpp>
+...
+</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& fileName);</code></li>
+ <li><code>XSLTResultTarget(ostream* stream);</code></li>
+ <li><code>XSLTResultTarget(ostream& 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& 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& xmlIn,
+ const XSLTInputSource& 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 <xercesc/dom/DOMDocument.hpp>
+#include <xercesc/dom/DOMImplementation.hpp>
+
+#include <xalanc/XMLSupport/FormatterToXML.hpp>
+#include <xalanc/XMLSupport/XalanTransformer.hpp>
+
+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 <xercesc/parsers/DOMParser.hpp>
+#include <xalanc/XalanTransformer/XercesDOMWrapperParsedSource.hpp>
+
+void parseWithXerces(XalanTransformer &xalan,
+ const XSLTInputSource &xmlInput,
+ const XalanCompiledStylesheet* styleSheet,
+ const XSLTResultTarget &output,
+ XMLFileReporter &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 <xalanc/ICUBridge/ICUBridge.hpp>
+#include <xalanc/ICUBridge/FunctionICUFormatNumber.hpp>
+#include <xalanc/ICUBridge/ICUXalanNumberFormatFactory.hpp>
+#include <xalanc/ICUBridge/ICUBridgeCollationCompareFunctor.hpp>
+</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(&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 <XalanTransformer/XalanCAPI.h></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