Subject: RE: [xsl] Errors with JAXP From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Wed, 5 Mar 2008 13:03:44 -0000 |
Both are failing because you are using XSLT 2.0 syntax, and you must be picking up an XSLT 1.0 processor. Since there's only one XSLT 2.0 processor that supports JAXP, you can't really make your code portable, so the simplest solution is to bypass the JAXP factory mechanism (which in any case is very slow), and replace: TransformerFactory factory = TransformerFactory.newInstance(); with TransformerFactory factory = new net.sf.saxon.TransformerFactoryImpl(); Alternatively, this particular transformation could very easily be written using XSLT 1.0 syntax alone. Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: igutierrez027@xxxxxxxxxxxxx > [mailto:igutierrez027@xxxxxxxxxxxxx] > Sent: 05 March 2008 12:54 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] Errors with JAXP > > Hello everybody! > > I am using JAXP to execute XSLT 2.0. To implement the > templates I am using Oxygen. The templates doing well in > Oxygen but with JAXP occurs some errors. > I need to insert one element in one XSD after the element 'reviewed'. > The output will be the same XSD with the element inserted on > it. This is my XSD: > > <?xml version="1.0" encoding="UTF-8"?> > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" > elementFormDefault="qualified" version="2.0" > targetNamespace="http://bibtexml.sf.net/" > xmlns:dc="http://purl.org/dc/elements/1.1/" > xmlns:ns1="http://bibtexml.sf.net/"> > > <xs:import namespace="http://purl.org/dc/elements/1.1/" > schemaLocation="dc.xsd"/> > .. > <xs:element name="dateofread" type="xs:date"/> > <xs:element name="reviewed" type="xs:string"/> </xs:schema> > > In the stylesheet that I am using I have two options of > template to insert the element. This is the XSL: > > <?xml version="1.0" encoding="UTF-8"?> > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > version="2.0" > xmlns:xs="http://www.w3.org/2001/XMLSchema" > xmlns:ns1="http://bibtexml.sf.net/" > xmlns:dc="http://purl.org/dc/elements/1.1/"> > > <xsl:output method="xml"/> > > <xsl:param name="file" as="xs:string"/> > <xsl:param name="type2" as=" xs:string"/> > > <xsl:attribute-set name="ns1:definicion"> > <xsl:attribute name="name"> > <xsl:value-of select="$file"/> > </xsl:attribute> > <xsl:attribute name="type" select=" concat('xs:',$type2)"/> > </xsl:attribute-set> > > <xsl:template match="@* | node()"> > <xsl:copy> > <xsl:apply-templates select="@* | node()"/> > </xsl:copy> > </xsl:template> > > FIRST OPTION: > > <xsl:template match="xs:element[@name='reviewed']"> > <xsl:next-match/> > <xsl:element name="xs:element" > use-attribute-sets="ns1:definicion"/> > </xsl:template> > > SECOND OPTION: > > <xsl:template match="xs:schema"> > <xsl:copy> > <xsl:variable name="x" > select="xs:element[@name='reviewed']"/> > <xsl:apply-templates > select="$x/preceding-sibling::node()"/> > <xsl:element name="xs:element" > use-attribute-sets="ns1:definicion"/> > <xsl:apply-templates select="$x/(.,following-sibling::node > ())"/> > </xsl:copy> > </xsl:template> > > </xsl:stylesheet> > > For execute with JAXP I use the next program: > > import javax.xml.transform.Transformer; > import javax.xml.transform.TransformerFactory; > import javax.xml.transform.stream.StreamResult; > import javax.xml.transform.stream.StreamSource; > import java.lang.String; > > public class prog1 { > public static void main(String[] args) { > Transformer transformer; > TransformerFactory factory = > TransformerFactory.newInstance(); > String stylesheet > = "file:///C:/Users/Izaskun/workspace2/my_stylesheet.xsl"; > String sourceId > = "file:///C:/Users/Izaskun/workspace2/my_xsd.xsd"; > try { > transformer = factory.newTransformer(new StreamSource > (stylesheet)); > transformer.setParameter("file", "campoNuevo"); > transformer.setParameter("type2", "string"); > transformer.transform(new > StreamSource(sourceId), new StreamResult(System.out)); > } catch (Exception e) { > // handle error > } > } > } > > And they are the errors: > > For the FIRST OPTION of template: > > ERROR: 'Unsupported XSL > element 'http://www.w3.org/1999/XSL/Transform:next-match'' > > For the SECOND OPTION of template: > > ERROR: 'Error of sintaxis in '$x/(.,following-sibling::node())'.' > > Could anybody help me? > > Thank You. > > Regards, > > Izaskun Gutierrez
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Errors with JAXP, David Carlisle | Thread | Re: [xsl] Errors with JAXP, Andrew Welch |
Re: [xsl] Errors with JAXP, David Carlisle | Date | Re: [xsl] Errors with JAXP, Andrew Welch |
Month |