<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> | |
<html> | |
<head> | |
<title>ASF: Frequently asked questions</title> | |
<meta http-equiv="content-type" content="text/html; charset=UTF-8" /> | |
<meta http-equiv="Content-Style-Type" content="text/css" /> | |
<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" /> | |
</head> | |
<!-- | |
* 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. | |
--> | |
<body> | |
<div id="title"> | |
<table class="HdrTitle"> | |
<tbody> | |
<tr> | |
<th rowspan="2"> | |
<a href="../index.html"> | |
<img alt="Trademark Logo" src="resources/XalanC-Logo-tm.png" width="190" height="90" /> | |
</a> | |
</th> | |
<th text-align="center" width="75%"> | |
<a href="index.html">Xalan-C/C++ Version 1.11</a> | |
</th> | |
</tr> | |
<tr> | |
<td valign="middle">Frequently asked questions</td> | |
</tr> | |
</tbody> | |
</table> | |
<table class="HdrButtons" align="center" border="1"> | |
<tbody> | |
<tr> | |
<td> | |
<a href="http://www.apache.org">Apache Foundation</a> | |
</td> | |
<td> | |
<a href="http://xalan.apache.org">Xalan Project</a> | |
</td> | |
<td> | |
<a href="http://xerces.apache.org">Xerces Project</a> | |
</td> | |
<td> | |
<a href="http://www.w3.org/TR">Web Consortium</a> | |
</td> | |
<td> | |
<a href="http://www.oasis-open.org/standards">Oasis Open</a> | |
</td> | |
</tr> | |
</tbody> | |
</table> | |
</div> | |
<div id="navLeft"> | |
<ul> | |
<li> | |
<a href="resources.html">Resources</a> | |
<br /> | |
</li> | |
<li> | |
<a href="../index.html">Home</a> | |
</li></ul><hr /><ul> | |
<li> | |
<a href="index.html">Xalan-C++ 1.11</a> | |
</li> | |
<li> | |
<a href="whatsnew.html">What's New</a> | |
</li> | |
<li> | |
<a href="license.html">Licenses</a> | |
</li></ul><hr /><ul> | |
<li> | |
<a href="overview.html">Overview</a> | |
</li> | |
<li> | |
<a href="charter.html">Charter</a> | |
</li></ul><hr /><ul> | |
<li> | |
<a href="download.html">Download</a> | |
</li> | |
<li> | |
<a href="buildlibs.html">Build Libraries</a> | |
</li> | |
<li> | |
<a href="install.html">Installation</a> | |
</li> | |
<li> | |
<a href="builddocs.html">Build Documents</a> | |
</li></ul><hr /><ul> | |
<li> | |
<a href="samples.html">Sample Apps</a> | |
</li> | |
<li> | |
<a href="commandline.html">Command Line</a> | |
</li> | |
<li> | |
<a href="usagepatterns.html">Usage Patterns</a> | |
</li></ul><hr /><ul> | |
<li> | |
<a href="programming.html">Programming</a> | |
</li> | |
<li> | |
<a href="extensions.html">Extensions</a> | |
</li> | |
<li> | |
<a href="extensionslib.html">Extensions Library</a> | |
</li> | |
<li> | |
<a href="apiDocs/index.html">API Reference</a> | |
</li></ul><hr /><ul> | |
<li>Xalan-C FAQs<br /> | |
</li></ul><hr /><ul> | |
<li> | |
<a href="whatsnew.html#bugs">Bugs</a> | |
</li> | |
<li> | |
<a href="http://xalan.apache.org/old/xalan-j/test/run.html#how-to-run-c">Testing</a> | |
</li> | |
<li> | |
<a href="secureweb.html">Web Security</a> | |
</li> | |
</ul> | |
</div> | |
<div id="content"> | |
<h2 class="faqSubHead">Questions</h2> | |
<ol start="1"> | |
<li> | |
<a href="#faq-1">Where do I go to learn about XSLT</a> | |
</li> | |
<li> | |
<a href="#faq-2">Asking questions about Xalan-C++</a> | |
</li> | |
<li> | |
<a href="#faq-3">What is Xerces-C++?</a> | |
</li> | |
<li> | |
<a href="#faq-4">Which version of Xerces should I be using?</a> | |
</li> | |
<li> | |
<a href="#faq-5">Should I be using the Xerces DOM or Xalan DOM?</a> | |
</li> | |
<li> | |
<a href="#faq-6">Problems with samples in Windows</a> | |
</li> | |
<li> | |
<a href="#faq-7">Building on Windows</a> | |
</li> | |
<li> | |
<a href="#faq-8">Building on UNIX</a> | |
</li> | |
<li> | |
<a href="#faq-9">Make errors on UNIX platforms</a> | |
</li> | |
<li> | |
<a href="#faq-10">What is ICU</a> | |
</li> | |
<li> | |
<a href="#faq-11">A tar checksum error on Solaris</a> | |
</li> | |
<li> | |
<a href="#faq-12">Xalan-C++ in Apache</a> | |
</li> | |
<li> | |
<a href="#faq-13">Is Xalan-C++ thread-safe?</a> | |
</li> | |
<li> | |
<a href="#faq-14">What can I do to speed up transformations?</a> | |
</li> | |
<li> | |
<a href="#faq-15">Stylesheet validation</a> | |
</li> | |
<li> | |
<a href="#faq-16">What does the XalanDOMException HIERARCHY_REQUEST_ERR mean?</a> | |
</li> | |
<li> | |
<a href="#faq-17">Submitting Patches</a> | |
</li> | |
<li> | |
<a href="#faq-18">Transformation Output Methods</a> | |
</li> | |
<li> | |
<a href="#faq-19">Problems Using Sun's Forte/Workshop Compiler with code containing std::istrstream</a> | |
</li> | |
<li> | |
<a href="#faq-20">Modifying an instance of XalanDocument</a> | |
</li> | |
<li> | |
<a href="#faq-21">Changing Where Error Output is Sent</a> | |
</li> | |
<li> | |
<a href="#faq-22">Programmatic Error Information</a> | |
</li> | |
<li> | |
<a href="#faq-23">String Transcoding</a> | |
</li> | |
<li> | |
<a href="#faq-24">Error Code/Exception Summary</a> | |
</li> | |
<li> | |
<a href="#faq-25">Extension Functions</a> | |
</li> | |
<li> | |
<a href="#faq-26">Outputting results to a file on Windows 95/98</a> | |
</li> | |
<li> | |
<a href="#faq-27">Using format-number and ICU</a> | |
</li> | |
<li> | |
<a href="#faq-28">Perl wrapper for Xalan-C++?</a> | |
</li> | |
<li> | |
<a href="#faq-29">Missing LocalMsgIndex.hpp file</a> | |
</li> | |
</ol> | |
<h2 class="faqSubHead">Answers</h2> | |
<h3 id="faq-1" class="faqTitle">1. Where do I go to learn about XSLT</h3> | |
<div class="faqQuestion">Where do I go to learn about XSLT?</div> | |
<br /> | |
<hr /> | |
<div class="faqAnswer"> | |
<p>The definitive sources are the W3C XSLT and XPath recommendations: <a href="http://www.w3.org/TR/xslt">W3C Recommendation 16 November 1999 XSL Transformations (XSLT) Version 1.0</a> and | |
<a href="http://www.w3.org/TR/xpath">XML Path Language (XPath) Version 1.0</a>.</p> | |
<p>For a brief listing of tutorials, discussion forums, and other materials, see <a href="overview.html#uptospeed">Getting up to speed with XSLT</a>.</p> | |
</div> | |
<p align="right" size="2"> | |
<a href="#content">(top)</a> | |
</p> | |
<h3 id="faq-2" class="faqTitle">2. Asking questions about Xalan-C++</h3> | |
<div class="faqQuestion">Where can I ask a question?</div> | |
<br /> | |
<hr /> | |
<div class="faqAnswer"> | |
<p>For specific questions on Xalan-C++, see list archives: | |
<a href="http://mark.info/?l=xalan-c-users">xalan-c-users</a> | |
and <a href="http://marc.info/?l=xalan-dev">xalan-dev</a>. | |
You must subscribe to these Apache mailing lists before posting your questions.</p> | |
<p>The Apache Software Foundation has information on how you can subscribe to | |
the <a href="http://www.apache.org/foundation/mailinglists.html">mailing lists</a>.</p> | |
<p>You can post messages to the lists by sending mail to:<br /> | |
<a href="mailto:c-users@xalan.apache.org">Post message to xalan-c-users</a>. (User's list)<br /> | |
<a href="mailto:dev@xalan.apache.org">Post message to xalan-dev list</a>. (Developer's list)</p> | |
<p>Again, please review the archives before posting a new question.</p> | |
</div> | |
<p align="right" size="2"> | |
<a href="#content">(top)</a> | |
</p> | |
<h3 id="faq-3" class="faqTitle">3. What is Xerces-C++?</h3> | |
<div class="faqQuestion">What is Xerces-C++ and why do I need it?</div> | |
<br /> | |
<hr /> | |
<div class="faqAnswer"> | |
<p>Xerces-C++ is a validating XML parser written in a portable subset of C++. Xerces-C++ makes it easy to give your application the ability | |
to read and write XML data. Like Xalan-C++, Xerces-C++ is available from the Apache XML site: | |
<a href="http://xerces.apache.org/index.html">http://xerces.apache.org</a> | |
</p> | |
</div> | |
<p align="right" size="2"> | |
<a href="#content">(top)</a> | |
</p> | |
<h3 id="faq-4" class="faqTitle">4. Which version of Xerces should I be using?</h3> | |
<div class="faqQuestion">Which version of Xerces should I be using?</div> | |
<br /> | |
<hr /> | |
<div class="faqAnswer"> | |
<p>The Xalan-C++ release notes includes information about the Xerces-C++ release with which the Xalan-C++ release has been coordinated | |
and tested. See <a href="whatsnew.html#status">Status</a> | |
</p> | |
</div> | |
<p align="right" size="2"> | |
<a href="#content">(top)</a> | |
</p> | |
<h3 id="faq-5" class="faqTitle">5. Should I be using the Xerces DOM or Xalan DOM?</h3> | |
<div class="faqQuestion">Should I be using the Xerces DOM or Xalan DOM?</div> | |
<br /> | |
<hr /> | |
<div class="faqAnswer"> | |
<p>The Xalan DOM implementation is highly optimised for transformations. However, whilst you can build documents in the Xalan DOM, | |
subsequent modification will not work. The Xalan DOM is designed to be either an input or an output from a transformation, not | |
as a general DOM implementation.</p> | |
<p>So in cases where you want to simply transform documents using Xalan, using the internal DOM implementation is the best approach.</p> | |
<p>In cases where you want to modify the DOM document on the fly, you should use the Xerces DOM as the base document. You can wrap | |
the Xerces DOM in a wrapper (see <a href="usagepatterns.html#xercesdomwrapperparsedsource"> passing in a Xerces DOM</a>) | |
to then use as an input to a Xalan transformation. Alternatively you can output the result of a transformation to a Xerces DOM | |
document (see <a href="usagepatterns.html#dom">working with DOM input and output</a>). In either case, the Xerces document | |
can be freely modified. However, after you modify the document, you need to re-build the wrapper so that any changes are replicated | |
in the Xalan wrappers.</p> | |
</div> | |
<p align="right" size="2"> | |
<a href="#content">(top)</a> | |
</p> | |
<h3 id="faq-6" class="faqTitle">6. Problems with samples in Windows</h3> | |
<div class="faqQuestion">I have encountered problem executing the Xalan-C++ sample applications after rebuilding them under Win32 Environment (Windows NT 4.0, SP3). | |
When I tried to execute the sample, I receive the error message | |
"Debug Assertion Failed! ... Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)".</div> | |
<br /> | |
<hr /> | |
<div class="faqAnswer"> | |
<p>You may be mixing debug and release versions of executables and libraries. In other words, if you are compiling the sample for debug, | |
then you should link with the debug version of the Xalan-C++ and Xerces-C++ libraries and run with the debug version of the dynamic link | |
libraries.</p> | |
<p>You must also make sure your application is linking with the Debug multithreaded DLL run-time library or the Multithreaded DLL | |
run-time library. To check this setting do the following in Visual C++:</p> | |
<ol> | |
<li>Select Settings from the Project menu.<br /> | |
<br /> | |
</li> | |
<li>Click the C/C++ tab.<br /> | |
<br /> | |
</li> | |
<li>In the Category drop-down list, select Code Generation.<br /> | |
<br /> | |
</li> | |
<li>In the Use run-time library drop-down list, select Multithreaded DLL for the Win32 Release configuration, or select Debug | |
Multithreaded DLL for the Win32 Debug configuration.</li> | |
</ol> | |
<p>Once you have changed this setting, you must rebuild your project.</p> | |
</div> | |
<p align="right" size="2"> | |
<a href="#content">(top)</a> | |
</p> | |
<h3 id="faq-7" class="faqTitle">7. Building on Windows</h3> | |
<div class="faqQuestion">What do I need to rebuild Xalan-C++ on Windows?</div> | |
<br /> | |
<hr /> | |
<div class="faqAnswer"> | |
<p>In order to build Xalan-C++ on Windows, you will need the following:</p> | |
<ul> | |
<li>The Xalan-C/C++ source distribution package.</li> | |
<li>The Xerces-C/C++ source distribution package or a compatible binary distribution package.</li> | |
<li>A compatible Microsoft Visual Studio .NET (2003, 2005, 2008, 2010) software development platform.</li> | |
</ul> | |
<p>The Xalan-C/C++ Version 1.11 (pre-release) is available from the Apache Subversion | |
repository at <b>http://svn.apache.org/repos/asf/xalan/c/trunk/.</b> | |
</p> | |
<p>After Xalan-C/C++ Version 1.11 is released, it can be downloaded from: | |
<a href="http://www.apache.org/dyn/closer.cgi/xalan/xalan-c">Xalan Distributions</a>.</p> | |
<p>The Xerces-C/C++ Version 3.1.1 is can be downloaded from: | |
<a href="http://www.apache.org/dyn/closer.cgi/xerces/c/3">Xerces Distributions</a>.</p> | |
<p>If you are building with the | |
<a href="http://www.ibm.com/software/globalization/icu/">IBM-ICU</a> | |
International Components for Unicode library, you will | |
need to rebuild both the Xerces and Xalan libraries.</p> | |
<p>For more details, see <a href="buildlibs.html#winbldenv">Steps for doing a Windows build</a>.</p> | |
</div> | |
<p align="right" size="2"> | |
<a href="#content">(top)</a> | |
</p> | |
<h3 id="faq-8" class="faqTitle">8. Building on UNIX</h3> | |
<div class="faqQuestion">What do I need to rebuild Xalan-C++ on UNIX?</div> | |
<br /> | |
<hr /> | |
<div class="faqAnswer"> | |
<p>To build Xalan-C++ on supported UNIX platforms, you need Xerces-C++, the GNU make utility, and a supported C++ compiler. For more | |
details see: <a href="buildlibs.html#unixbldenv">Steps for doing a UNIX build</a>.</p> | |
</div> | |
<p align="right" size="2"> | |
<a href="#content">(top)</a> | |
</p> | |
<h3 id="faq-9" class="faqTitle">9. Make errors on UNIX platforms</h3> | |
<div class="faqQuestion">I get errors in the Makefile when running the make utility. What's wrong?</div> | |
<br /> | |
<hr /> | |
<div class="faqAnswer"> | |
<p>You must use the GNU make utility. Other make utilities may not work with the Xalan Makefile</p> | |
</div> | |
<p align="right" size="2"> | |
<a href="#content">(top)</a> | |
</p> | |
<h3 id="faq-10" class="faqTitle">10. What is ICU</h3> | |
<div class="faqQuestion">What is ICU and why do I need it?</div> | |
<br /> | |
<hr /> | |
<div class="faqAnswer"> | |
<p>The <a href="http://www.ibm.com/software/globalization/icu/">IBM-ICU</a> | |
International Components for Unicode(ICU) is a C and C++ library that provides robust and | |
full-featured Unicode support on a wide variety of platforms. | |
Xalan-C++ uses the ICU to extend support for encoding, number formatting, and sorting.</p> | |
<p>The ICU is available for download from <a href="http://oss.software.ibm.com/icu/index.html"> | |
http://oss.software.ibm.com/icu/index.html</a>.</p> | |
<p>This release of Xalan was tested with International Components for Unicode(ICU) version 3.2.</p> | |
<p>For more details see: <a href="usagepatterns.html#icu">Using the International Components for Unicode (ICU)</a>.</p> | |
</div> | |
<p align="right" size="2"> | |
<a href="#content">(top)</a> | |
</p> | |
<h3 id="faq-11" class="faqTitle">11. A tar checksum error on Solaris</h3> | |
<div class="faqQuestion">I am getting a tar checksum error on Solaris. What's the problem?</div> | |
<br /> | |
<hr /> | |
<div class="faqAnswer"> | |
<p>The Solaris tar utility you are using does not properly handle files with long pathnames. You must use GNU tar (gtar), which | |
handles arbitrarily long pathnames and is freely available on every platform on which Xalan-C++ is supported. If you don't already | |
have GNU tar installed on your system, you can obtain it from the Free Software Foundation | |
<a href="http://www.gnu.org/software/tar/tar.html">http://www.gnu.org/software/tar/tar.html</a>. For additional background | |
information on this problem, see the online manual<a href="http://www.gnu.org/manual/tar/html_chapter/tar_8.html#SEC112"> | |
GNU tar and POSIX tar </a> for the utility.</p> | |
</div> | |
<p align="right" size="2"> | |
<a href="#content">(top)</a> | |
</p> | |
<h3 id="faq-12" class="faqTitle">12. Xalan-C++ in Apache</h3> | |
<div class="faqQuestion">Is it possible to run Xalan-C++ from an Apache server?</div> | |
<br /> | |
<hr /> | |
<div class="faqAnswer"> | |
<p>A simple Apache module called <a href="samples.html#apachemodulexslt">ApacheModuleXSLT</a> is provided as a sample. | |
It demonstrates how to integrate Xalan-C++ with Apache.</p> | |
</div> | |
<p align="right" size="2"> | |
<a href="#content">(top)</a> | |
</p> | |
<h3 id="faq-13" class="faqTitle">13. Is Xalan-C++ thread-safe?</h3> | |
<div class="faqQuestion">Is Xalan-C++ thread-safe?</div> | |
<br /> | |
<hr /> | |
<div class="faqAnswer"> | |
<p>Instances of XalanTransformer are not thread-safe; each thread should use its own instance.</p> | |
<p>In order to support very efficient use in multi-threaded applications, Xalan-C++ is designed to avoid synchronization as much as | |
possible. Each thread of execution is required to have its own set of "support" objects that contain the state of the | |
transformation. Accordingly, no synchronization is required when multiple threads are executing.</p> | |
<p>Parsed ("compiled") stylesheets (see <a href="usagepatterns.html#compiled">Compiling stylesheets</a>) and parsed | |
source documents may be freely shared by multiple threads of execution without worrying about providing synchronized access to | |
them. The <b>only</b> exception to this rule: You use XercesParserLiaison to parse a document after calling | |
XercesParserLiaison::setBuildBridgeNodes(false) or XercesParserLiaison::setThreadSafe(false). In this case, the document | |
<b>cannot</b> be shared by multiple threads of execution. For reasons of performance, we do not recommend the use of | |
XercesParserLiaison, so this should not be an issue for most applications.</p> | |
<p>All other objects in Xalan-C++ are <b>not</b> thread-safe. Each thread must have its own instance of each object.</p> | |
<p>See the <a href="samples.html#threadsafe">ThreadSafe</a> sample program for more information.</p> | |
</div> | |
<p align="right" size="2"> | |
<a href="#content">(top)</a> | |
</p> | |
<h3 id="faq-14" class="faqTitle">14. What can I do to speed up transformations?</h3> | |
<div class="faqQuestion">What can I do to speed up transformations?</div> | |
<br /> | |
<hr /> | |
<div class="faqAnswer"> | |
<p>To maximize performance, here are some suggestions for you to keep in mind as you set up your applications:</p> | |
<ul> | |
<li>Use a compiled stylesheet when you expect to use the stylesheet more than once.<br /> | |
<br /> | |
</li> | |
<li>Set up your stylesheets to function efficiently.<br /> | |
<br /> | |
</li> | |
<ul> | |
<li>Don't use "//" (descendant axes) patterns near the root of a large document.<br /> | |
<br /> | |
</li> | |
<li>Use xsl:key elements and the key() function as an efficient way to retrieve node sets.<br /> | |
<br /> | |
</li> | |
<li>Where possible, use pattern matching rather than xsl:if or xsl:when statements.<br /> | |
<br /> | |
</li> | |
<li>xsl:for-each is fast because it does not require pattern matching.<br /> | |
<br /> | |
</li> | |
<li>Keep in mind that xsl:sort prevents incremental processing.<br /> | |
<br /> | |
</li> | |
<li>When you create variables, <xsl:variable name="fooElem" select="foo"/> is usually faster than | |
<xsl:variable name="fooElem"><xsl:value-of-select="foo"/></xsl:variable>.<br /> | |
<br /> | |
</li> | |
<li>Be careful using the last() function.<br /> | |
<br /> | |
</li> | |
<li>The use of index predicates within match patterns can be expensive.<br /> | |
<br /> | |
</li> | |
</ul> | |
</ul> | |
</div> | |
<p align="right" size="2"> | |
<a href="#content">(top)</a> | |
</p> | |
<h3 id="faq-15" class="faqTitle">15. Stylesheet validation</h3> | |
<div class="faqQuestion">Can I validate an XSL stylesheet?</div> | |
<br /> | |
<hr /> | |
<div class="faqAnswer"> | |
<p>An XSL stylesheet is an XML document, so it can have a DOCTYPE and be subject to validation, but you probably will have | |
to write a custom DTD for the purpose.</p> | |
<p>The XSLT Recommendation includes a <a href="http://www.w3.org/TR/xslt#dtd">DTD Fragment | |
for XSL Stylesheets</a> with some indications of what you need to do to create a complete DTD for a given | |
stylesheet. Keep in mind that stylesheets can include literal result elements and produce output that is not valid | |
XML.</p> | |
<p>You can use the xsl:stylesheet doctype defined in xsl-html40s.dtd for stylesheets that generate HTML.</p> | |
</div> | |
<p align="right" size="2"> | |
<a href="#content">(top)</a> | |
</p> | |
<h3 id="faq-16" class="faqTitle">16. What does the XalanDOMException HIERARCHY_REQUEST_ERR mean?</h3> | |
<div class="faqQuestion">What does the XalanDOMException HIERARCHY_REQUEST_ERR mean?</div> | |
<br /> | |
<hr /> | |
<div class="faqAnswer"> | |
<p>It means that an attempt was made to add a node to a DOM that would create an invalid structure. For example, text nodes | |
are not allowed as children of the document node.</p> | |
<p>This is a common error when attempting to transform to DOM. Source documents and stylesheets that might produce valid serialized XML | |
might not produce value DOM. The usual suspect is text nodes being generated before the document element is generated.</p> | |
<p>If you think you have seen this error because of a bug in Xalan-C++'s source tree implementation, please post a bug report on Bugzilla, and attach a minimal source document | |
and stylesheet that produce the problem to the bug report.</p> | |
</div> | |
<p align="right" size="2"> | |
<a href="#content">(top)</a> | |
</p> | |
<h3 id="faq-17" class="faqTitle">17. Submitting Patches</h3> | |
<div class="faqQuestion">Who do I submit patches to?</div> | |
<br /> | |
<hr /> | |
<div class="faqAnswer"> | |
<p>Your contributions are much appreciated! Please e-mail your patches to <a href="mailto:dev@xalan.apache.org">Xalan Development Mailing List</a>.</p> | |
</div> | |
<p align="right" size="2"> | |
<a href="#content">(top)</a> | |
</p> | |
<h3 id="faq-18" class="faqTitle">18. Transformation Output Methods</h3> | |
<div class="faqQuestion">How do I output a transformation to a DOM, a file, an in-memory buffer, or as input to another transformation? Since the C++ | |
language can automatically construct an XSLTResultTarget from any of its constructor's argument types, you usually don't need | |
to create one explicitly.</div> | |
<br /> | |
<hr /> | |
<div class="faqAnswer"> | |
<p>The output parameter of XalanTransformer::transform() is an XSLTResultTarget which has many constructors.</p> | |
<p>Output to a file:</p> | |
<ul> | |
<li>The easiest way is to use a null-terminated string containing the file name to create an XSLTResultTarget. Or, use an | |
instance of std::ofstream. The command line executables, and many of the sample applications use file names, so take a | |
look through the source code for more information.</li> | |
</ul> | |
<p>Output to an in-memory buffer:</p> | |
<ul> | |
<li>Use an instance of std::ostrstream or std::ostringstream to create an XSLTResultTarget. See the StreamTransform sample | |
for more information.</li> | |
</ul> | |
<p>Input to another transformation:</p> | |
<ul> | |
<li>Any of the previous output targets could be used as the input to another transformation, but the FormatterToSourceTree | |
is probably the best for efficiency reasons. See the source code for the TestXSLT command line program for more | |
information.</li> | |
</ul> | |
</div> | |
<p align="right" size="2"> | |
<a href="#content">(top)</a> | |
</p> | |
<h3 id="faq-19" class="faqTitle">19. Problems Using Sun's Forte/Workshop Compiler with code containing std::istrstream</h3> | |
<div class="faqQuestion">Why won't XSLTInputSource work with std::istrstream on Sun Solaris using Forte/Sun Workshop compiler?</div> | |
<br /> | |
<hr /> | |
<div class="faqAnswer"> | |
<p>There is a bug in Sun's C++ standard library implementation; see | |
<a href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=14176">this bug</a>. The short answer is that you need to | |
get a patch. The bug report includes the code for a simple program which you can use to see if your environment has the bug. | |
There is also a link to the patch.</p> | |
</div> | |
<p align="right" size="2"> | |
<a href="#content">(top)</a> | |
</p> | |
<h3 id="faq-20" class="faqTitle">20. Modifying an instance of XalanDocument</h3> | |
<div class="faqQuestion">My transformation outputs to a XalanDocument (actually XalanSourceTreeDocument underneath) but W3C DOM functions like | |
DOMElement::setAttribute don't work! Am I going crazy or what?</div> | |
<br /> | |
<hr /> | |
<div class="faqAnswer"> | |
<p>No, you aren't going crazy. Xalan's default source tree is read-only for efficiency. If you need a DOM that supports | |
modifications, use the Xerces DOM instead. See the TransformToXercesDOM sample for more information.</p> | |
</div> | |
<p align="right" size="2"> | |
<a href="#content">(top)</a> | |
</p> | |
<h3 id="faq-21" class="faqTitle">21. Changing Where Error Output is Sent</h3> | |
<div class="faqQuestion">XalanTransformer outputs errors to the console. How do I, for example, output error to a file?</div> | |
<br /> | |
<hr /> | |
<div class="faqAnswer"> | |
<p>By default, XalanTransformer creates a XalanTransformerProblemListener (a subclass of ProblemListener) that writes | |
output to std::cerr. To change this you can:</p> | |
<ul> | |
<li>Redirect std::cerr from the command line.</li> | |
<li>Call XalanTranformer::setWarningStream with a different std::ostream before calling XalanTransformer::transform.</li> | |
<li>Instantiate your own XalanTransformerProblemListener with a different output stream and call | |
XalanTransformer::setProblemListener() before calling XalanTransformer::transform().</li> | |
<li>Subclass some ProblemListener type and do custom handling of errors (you still then need to tell XalanTransformer | |
instances to use your ProblemListener.)</li> | |
</ul> | |
<p>In most case you probably want to do one of the first two.</p> | |
</div> | |
<p align="right" size="2"> | |
<a href="#content">(top)</a> | |
</p> | |
<h3 id="faq-22" class="faqTitle">22. Programmatic Error Information</h3> | |
<div class="faqQuestion">How do I programmatically get the file name, line number, and column number for an error in an XML file?</div> | |
<br /> | |
<hr /> | |
<div class="faqAnswer"> | |
<p>Create a custom ErrorHandler (a Xerces-C++ class) and call XalanTransformer::setErrorHandler before parsing any sources.</p> | |
</div> | |
<p align="right" size="2"> | |
<a href="#content">(top)</a> | |
</p> | |
<h3 id="faq-23" class="faqTitle">23. String Transcoding</h3> | |
<div class="faqQuestion">How do I make a char* out of XalanDOMString (or vice-versa)?</div> | |
<br /> | |
<hr /> | |
<div class="faqAnswer"> | |
<p>See the static method XalanDOMString::transcode, or the functions TranscodeToLocalCodePage in the API documentation. | |
However, you should be very careful when transcoding Unicode characters to the local code page, because not all Unicode | |
characters can be represented.</p> | |
</div> | |
<p align="right" size="2"> | |
<a href="#content">(top)</a> | |
</p> | |
<h3 id="faq-24" class="faqTitle">24. Error Code/Exception Summary</h3> | |
<div class="faqQuestion">Is there a table of error codes somewhere? How about a summary of what methods throw which exceptions?</div> | |
<br /> | |
<hr /> | |
<div class="faqAnswer"> | |
<p>There isn't, but we're working on it.</p> | |
</div> | |
<p align="right" size="2"> | |
<a href="#content">(top)</a> | |
</p> | |
<h3 id="faq-25" class="faqTitle">25. Extension Functions</h3> | |
<div class="faqQuestion">The Xalan extension functions (xalan:node-set, etc.) don't work for me. Help!</div> | |
<br /> | |
<hr /> | |
<div class="faqAnswer"> | |
<p>Did you declare the namespace on the xsl:stylesheet or xsl:transform element? It should look like this: </p> | |
<p><xsl:stylesheet version="1.0" xmlns:xalan="http://xml.apache.org/xalan"> ...rest of stylesheet</p> | |
<p>If you did and you still have problems, you might want to ask the mailing list.</p> | |
</div> | |
<p align="right" size="2"> | |
<a href="#content">(top)</a> | |
</p> | |
<h3 id="faq-26" class="faqTitle">26. Outputting results to a file on Windows 95/98</h3> | |
<div class="faqQuestion">Why can't I ouput my results to a file on Windows 95/98?</div> | |
<br /> | |
<hr /> | |
<div class="faqAnswer"> | |
<p>Well, you can, but it doesn't always work. Neither Windows 95 or 98 are supported or tested. There have been reports of | |
problems on it, especially regarding Unicode support. See | |
<a href="http://marc.theaimsgroup.com/?l=xalan-dev&m=99840914524755&w=2">this post</a> and | |
<a href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=3825">this bug</a>.</p> | |
</div> | |
<p align="right" size="2"> | |
<a href="#content">(top)</a> | |
</p> | |
<h3 id="faq-27" class="faqTitle">27. Using format-number and ICU</h3> | |
<div class="faqQuestion">Why does Xalan emit a warning when using the XSLT function format-number()?</div> | |
<br /> | |
<hr /> | |
<div class="faqAnswer"> | |
<p>Did you build with ICU support? See <a href="usagepatterns.html#icu">Using the International Components for | |
Unicode (ICU)</a>.</p> | |
</div> | |
<p align="right" size="2"> | |
<a href="#content">(top)</a> | |
</p> | |
<h3 id="faq-28" class="faqTitle">28. Perl wrapper for Xalan-C++?</h3> | |
<div class="faqQuestion">Is there a Perl wrapper for Xalan-C++?</div> | |
<br /> | |
<hr /> | |
<div class="faqAnswer"> | |
<p>There is no Apache Perl wrapper, however Edwin Pratomo has written a wrapper for Xalan-C++ version 1.4 that can be found | |
on CPAN</p> | |
</div> | |
<p align="right" size="2"> | |
<a href="#content">(top)</a> | |
</p> | |
<h3 id="faq-29" class="faqTitle">29. Missing LocalMsgIndex.hpp file</h3> | |
<div class="faqQuestion">Why can't I find the LocalMsgIndex.hpp file?</div> | |
<br /> | |
<hr /> | |
<div class="faqAnswer"> | |
<p>The LocalMsgIndex.hpp file is not shipped with the distributions because this file is generated during compile time. This | |
file is created at the start of the build process and customized for the locale and message set you are using.</p> | |
<p>On Windows, the LocalMsgIndex.hpp header is generated by the Localization project. By building any project that has a | |
dependency on the Localization project, will trigger the Message Localization component to built and the LocalMsgIndex.hpp | |
to be generated.</p> | |
<p>To understand more on how to build with message localization support, see <a href="build_instruct.html#locale">Steps for | |
Building with Message Localization Support</a>.</p> | |
</div> | |
<p align="right" size="2"> | |
<a href="#content">(top)</a> | |
</p> | |
</div> | |
<div id="footer">Copyright © 1999-2012 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Sun 09/23/2012</div> | |
</div> | |
</body> | |
</html> |