You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by bu...@apache.org on 2002/03/07 11:02:41 UTC
DO NOT REPLY [Bug 5363] -
Problem with setInclude() and a 'ghost' template
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=5363>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=5363
Problem with setInclude() and a 'ghost' template
filippo.munafo@kion.it changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|RESOLVED |REOPENED
Resolution|FIXED |
------- Additional Comments From filippo.munafo@kion.it 2002-03-07 10:02 -------
The bug is still present, also in 2.3.1.
But now there is also another problem with, I suppose, the following
instruction:
sheet1.setInclude(sheet2);
that doesn't work as it should because with 2.3.1 the exception is:
javax.xml.transform.TransformerException: Could not find template named: main
instead with 2.2 is 'only':
javax.xml.transform.TransformerException: Could not find template named: body
You can test everything using this code:
package testxalan;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;
import java.io.*;
import org.apache.xalan.templates.*;
public class test {
protected static final String XML_EMPTY =
"<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><root/>\n";
protected static final String XSL1 =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
"<xsl:stylesheet version=\"1.0\"
xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">" +
"<xsl:template match=\"/\">" +
"<xsl:call-template name=\"main\"/>" +
"</xsl:template>" +
"<xsl:template name=\"body\">" +
"Hello world!" +
"</xsl:template>" +
"</xsl:stylesheet>";
protected static final String XSL2 =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
"<xsl:stylesheet version=\"1.0\"
xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">" +
"<xsl:template name=\"main\">" +
"<html>" +
"<body>" +
"<xsl:call-template name=\"body\"/>" +
"</body>" +
"</html>" +
"</xsl:template>" +
"</xsl:stylesheet>";
public static void main(String[] args) {
try
{
TransformerFactory tf = TransformerFactory.newInstance();
StreamSource xml = new StreamSource(new ByteArrayInputStream
(XML_EMPTY.getBytes()));
Source s1 = new StreamSource(new ByteArrayInputStream(XSL1.getBytes()));
Source s2 = new StreamSource(new ByteArrayInputStream(XSL2.getBytes()));
StylesheetRoot sheet1 = (StylesheetRoot)tf.newTemplates(s1);
StylesheetRoot sheet2 = (StylesheetRoot)tf.newTemplates(s2);
sheet1.setInclude(sheet2);
sheet1.recompose();
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
Transformer tr = sheet1.newTransformer();
tr.transform(xml, result);
System.out.println(result.toString());
}
catch (java.lang.Throwable e)
{
System.out.println(e.toString());
}
}
}