You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by Guoliang Cao <ca...@ispsoft.com> on 2001/03/01 21:40:55 UTC
How to get URIResolver process xsl:include?
Hi,
I'm using these code to transform a document with my customized
URIResolver. It throws some exception. Seems it's not using the assigned
URIResolver when it processes xsl:include element. If the code is
wrong, please send me your good code. Really thanks.
xalan version: 2.0.0, xerces version: comes with xalan.
import javax.xml.transform.*;
import javax.xml.transform.sax.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
import org.apache.xerces.dom.*;
import org.w3c.dom.*;
import java.io.StringReader;
public class SAXTransformer
{
public static void main(String[] args)
{
try {
TransformerFactory tFactory = TransformerFactory.newInstance();
tFactory.setURIResolver(
new URIResolver()
{
public Source resolve(String publicId, String systemId)
{
System.out.println("resolving "+systemId);
if (systemId.indexOf("Test1")>=0)
{
return new StreamSource(new StringReader("<just
for test/>"));
}
return null;
}
}
);
Templates templates = tFactory.newTemplates(new
StreamSource("/Test.xsl"));
Transformer transformer = templates.newTransformer();
Document doc = new DocumentImpl();
transformer.transform(new StreamSource("/Test.xml"), new
DOMResult(doc));
System.out.println(doc.getDocumentElement().getNodeName());
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
-------------- output -----------------------
resolving /cao/upx/xmlstylesheet/workflow/Test.xsl
javax.xml.transform.TransformerConfigurationException: File
"file:///C:/cao/upx//cao/upx/xmlstylesheet/workflow/Test1" not found.
at
org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:821)
at SAXTransformer.main(SAXTransformer.java:34)
---------
javax.xml.transform.TransformerException: File
"file:///C:/cao/upx//cao/upx/xmlstylesheet/workflow/Test1" not found.
at
org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:819)
at SAXTransformer.main(SAXTransformer.java:34)
---------
org.xml.sax.SAXParseException: File
"file:///C:/cao/upx//cao/upx/xmlstylesheet/workflow/Test1" not found.
at
org.apache.xerces.framework.XMLParser.reportError(XMLParser.java:975)
at
org.apache.xerces.readers.DefaultEntityHandler.startReadingFromDocument(DefaultEntityHandler.java:512)
at
org.apache.xerces.framework.XMLParser.parseSomeSetup(XMLParser.java:303)
at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:860)
at
org.apache.xalan.processor.ProcessorInclude.parse(ProcessorInclude.java:303)
at
org.apache.xalan.processor.ProcessorInclude.startElement(ProcessorInclude.java:189)
at
org.apache.xalan.processor.StylesheetHandler.startElement(StylesheetHandler.java:632)
at
org.apache.xerces.parsers.SAXParser.startElement(SAXParser.java:1371)
at
org.apache.xerces.validators.common.XMLValidator.callStartElement(XMLValidator.java:705)
at
org.apache.xerces.framework.XMLDocumentScanner.scanElement(XMLDocumentScanner.java:1852)
at
org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XMLDocumentScanner.java:1233)
at
org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java:380)
at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:861)
at
org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:801)
at SAXTransformer.main(SAXTransformer.java:34)
Re: How to get URIResolver process xsl:include?
Posted by Guoliang Cao <ca...@ispsoft.com>.
I'm wondering if anyone is using self-created URIResolver to do transformation. I still can't get it work.
If the URIResolver is used when processing "xsl:include ...", it'll at least tell me "resolving ....".
But it didn't.
Please comment on this code.
Thanks,
Guoliang
> Hi,
>
> I'm using these code to transform a document with my customized
> URIResolver. It throws some exception. Seems it's not using the assigned
> URIResolver when it processes xsl:include element. If the code is
> wrong, please send me your good code. Really thanks.
>
> xalan version: 2.0.0, xerces version: comes with xalan.
>
> import javax.xml.transform.*;
> import javax.xml.transform.sax.*;
> import javax.xml.transform.dom.*;
> import javax.xml.transform.stream.*;
>
> import org.apache.xerces.dom.*;
> import org.w3c.dom.*;
> import java.io.StringReader;
>
> public class SAXTransformer
> {
> public static void main(String[] args)
> {
>
> try {
> TransformerFactory tFactory = TransformerFactory.newInstance();
> tFactory.setURIResolver(
> new URIResolver()
> {
> public Source resolve(String publicId, String systemId)
> {
> System.out.println("resolving "+systemId);
> if (systemId.indexOf("Test1")>=0)
> {
> return new StreamSource(new StringReader("<just
> for test/>"));
> }
>
> return null;
> }
> }
> );
>
> Templates templates = tFactory.newTemplates(new
> StreamSource("/Test.xsl"));
>
> Transformer transformer = templates.newTransformer();
> Document doc = new DocumentImpl();
> transformer.transform(new StreamSource("/Test.xml"), new
> DOMResult(doc));
>
> System.out.println(doc.getDocumentElement().getNodeName());
> }
> catch (Exception e)
> {
> e.printStackTrace();
> }
> }
> }
>
> -------------- output -----------------------
> resolving /cao/upx/xmlstylesheet/workflow/Test.xsl
> javax.xml.transform.TransformerConfigurationException: File
> "file:///C:/cao/upx//cao/upx/xmlstylesheet/workflow/Test1" not found.
> at
> org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:821)
>
> at SAXTransformer.main(SAXTransformer.java:34)
> ---------
> javax.xml.transform.TransformerException: File
> "file:///C:/cao/upx//cao/upx/xmlstylesheet/workflow/Test1" not found.
> at
> org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:819)
>
> at SAXTransformer.main(SAXTransformer.java:34)
> ---------
> org.xml.sax.SAXParseException: File
> "file:///C:/cao/upx//cao/upx/xmlstylesheet/workflow/Test1" not found.
> at
> org.apache.xerces.framework.XMLParser.reportError(XMLParser.java:975)
> at
> org.apache.xerces.readers.DefaultEntityHandler.startReadingFromDocument(DefaultEntityHandler.java:512)
>
> at
> org.apache.xerces.framework.XMLParser.parseSomeSetup(XMLParser.java:303)
>
> at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:860)
> at
> org.apache.xalan.processor.ProcessorInclude.parse(ProcessorInclude.java:303)
>
> at
> org.apache.xalan.processor.ProcessorInclude.startElement(ProcessorInclude.java:189)
>
> at
> org.apache.xalan.processor.StylesheetHandler.startElement(StylesheetHandler.java:632)
>
> at
> org.apache.xerces.parsers.SAXParser.startElement(SAXParser.java:1371)
> at
> org.apache.xerces.validators.common.XMLValidator.callStartElement(XMLValidator.java:705)
>
> at
> org.apache.xerces.framework.XMLDocumentScanner.scanElement(XMLDocumentScanner.java:1852)
>
> at
> org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XMLDocumentScanner.java:1233)
>
> at
> org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java:380)
>
> at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:861)
> at
> org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:801)
>
> at SAXTransformer.main(SAXTransformer.java:34)
>
> ------------------------------------------------------------------------
> <?xml version="1.0"?>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:lxslt="http://xml.apache.org/xslt"
> version="1.0">
>
> <xsl:include href="Test1"/>
>
> </xsl:stylesheet>
>
> ------------------------------------------------------------------------
> <?xml version="1.0"?>
> <doc>
> <name first="David" last="Marston"/>
> <name first="David" last="Bertoni"/>
> <name first="Donald" last="Leslie"/>
> <name first="Emily" last="Farmer"/>
> <name first="Jack" last="Donohue"/>
> <name first="Myriam" last="Midy"/>
> <name first="Paul" last="Dick"/>
> <name first="Robert" last="Weir"/>
> <name first="Scott" last="Boag"/>
> <name first="Shane" last="Curcuru"/>
> </doc>
>
> ------------------------------------------------------------------------
> Name: SAXTransformer.java
> SAXTransformer.java Type: JavaScript Program (application/x-javascript)
> Encoding: 7bit