Subject: RE: [xsl] comparing a part of the XML tree From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Mon, 16 Jul 2007 09:50:44 +0100 |
deep-equal() is an XSLT 2.0 / XPath 2.0 function, you're trying to use it with Xalan which only implements 1.0. Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Jethro Borsje [mailto:jethro@xxxxxxxxxxxx] > Sent: 16 July 2007 09:45 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: Re: [xsl] comparing a part of the XML tree > > >> I want to match the nodes *inside* the <selection> node > against the > >> nodes *inside* the original node. > > > > deep-equal(selection/node(),$original/node()) > > > Alright, that sounds logical. I assume that in this case > $original is a variable that refers to the <original> element > in the input XML file? > > I constantly get an error like this when trying to use the deep-equal > function: > [error] > ERROR: 'Error checking type of the expression > 'funcall(deep-equal, > [ParentLocationPath(ParentLocationPath(step("child", 14), > step("child", 15)), step("child", -1)), > ParentLocationPath(ParentLocationPath(step("child", 14), > step("child", 15)), step("child", -1))])'.' > FATAL ERROR: 'Could not compile stylesheet' > Error creating transformer > javax.xml.transform.TransformerConfigurationException: Could > not compile stylesheet > at > com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactor > yImpl.newTemplates(TransformerFactoryImpl.java:824) > at > com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactor > yImpl.newTransformer(TransformerFactoryImpl.java:613) > at Main.getTransformer(Main.java:128) > at Main.compare(Main.java:70) > at Main.<init>(Main.java:44) > at Main.main(Main.java:53) > ------------------------------------ > Parsing body[<compare><selection><z color="blue" > flavor="vanilla">testje</z></selection><original><e><x color="red" > flavor="chocolate">testje 2</x><z color="blue" > flavor="vanilla">testje</z></e></original></compare>] > Exception in thread "main" java.lang.NullPointerException > at Main.compare(Main.java:79) > at Main.<init>(Main.java:44) > at Main.main(Main.java:53) > [/error] > > This is my stylesheet: > [stylesheet] > <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet > version="2.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > > <xsl:template match="/"> > <xsl:choose> > <xsl:when > test="deep-equal(compare/selection/node(), > compare/selection/node())">true</xsl:when> > <xsl:otherwise>false</xsl:otherwise> > </xsl:choose> > </xsl:template> > </xsl:stylesheet> > [/stylesheet] > As you can see I am trying to compare the node inside the > selection element to itself, just to check if everything is working. > > This is the input: > [input] > <compare> > <selection> > <z color="blue" flavor="vanilla">testje</z> > </selection> <original> > <e> > <x color="red" flavor="chocolate">testje 2</x> > <z color="blue" flavor="vanilla">testje</z> > </e> > </original> > </compare> > [/input] > > -- > Best regards, > Jethro Borsje > > http://www.jborsje.nl
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] comparing a part of the X, Jethro Borsje | Thread | Re: [xsl] comparing a part of the X, Jethro Borsje |
Re: [xsl] comparing a part of the X, Jethro Borsje | Date | Re: [xsl] comparing a part of the X, David Carlisle |
Month |