Subject: [xsl] unknown protocol classpath From: <qmjo038@xxxxxxxxx> Date: Wed, 17 May 2006 07:00:06 -0700 (PDT) |
Hi, I want to perform a following task: having over a few hundreds XML files, I want to remove from all of them such nodes that match a certain pattern, while preserving their original structure as much as possible. "Typically, my XML file looks like that: <?xml version="1.0"?> <!DOCTYPE NODE SYSTEM 'classpath:///wf/core/base/prm/resources/prm.dtd'> <NODE>Master <SPLIT> <LEAF>foo <BOOLEAN>false </BOOLEAN> </LEAF> <LEAF>blah <BOOLEAN>true </BOOLEAN> </LEAF> </SPLIT> </NODE> My XSL looks like that: <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes" doctype-system='classpath:///wf/core/base/prm/resources/prm.dtd' /> <xsl:template match="//LEAF[starts-with(., 'blah')]"> </xsl:template> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> </xsl:stylesheet> I am using the following Java 1.5 code (and Xalan processor, I guess) to run it: import javax.xml.transform.Result; import javax.xml.transform.Source; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; import java.io.File; public class Doo { public static void main(String[] args) { if (args.length != 3) { System.out.println("Usage: <input XML file> <XSL file> <output XML file>"); return; } TransformerFactory factory = TransformerFactory.newInstance(); Source source = new StreamSource(use(args[0])); Source xslt = new StreamSource(use(args[1])); Result target = new StreamResult(use(args[2])); try { Transformer transformer = factory.newTransformer(xslt); transformer.transform(source, target); } catch (TransformerConfigurationException e) { e.printStackTrace(); } catch (TransformerException e) { e.printStackTrace(); } } private static File use(String arg) { System.out.println(arg); return new File(arg); } } Then I get the following exception: java.net.MalformedURLException: unknown protocol: classpath at java.net.URL.<init>(URL.java:574) at java.net.URL.<init>(URL.java:464) at java.net.URL.<init>(URL.java:413) at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:968) at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:905) at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:872) at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(XMLDTDScannerImpl.java:282) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDispatcher.dispatch(XMLDocumentScannerImpl.java:1021) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242) at com.sun.org.apache.xalan.internal.xsltc.dom.XSLTCDTMManager.getDTM(XSLTCDTMManager.java:387) at com.sun.org.apache.xalan.internal.xsltc.dom.XSLTCDTMManager.getDTM(XSLTCDTMManager.java:228) at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.getDOM(TransformerImpl.java:472) at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:640) at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:279) at wf.core.tool.config.Doo.main(Doo.java:34) Without DOCTYPE declaration in the source XML, XSL works (almost) fine. Declaring file instead of classpath gets understood also." Thanks. __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Fixed value only once in , Mattias Pirmann | Thread | Re: [xsl] unknown protocol classpat, Jon Gorman |
Re: [xsl] XSLT with PHP, Jon Gorman | Date | Re: [xsl] unknown protocol classpat, Jon Gorman |
Month |