Subject: RE: [xsl] Edit text-nodes with XSLT 2.0 From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Fri, 7 Apr 2006 11:26:37 +0100 |
Surprisingly, node() and text() have the same priority - this is true in both XSLT 1.0 and 2.0. It's also true in both 1.0 and 2.0 that it's a "recoverable error" to have two template rules that match the same node with the same priority. Different XSLT processors are allowed to treat "recoverable errors" differently: they can report the error, or recover, in this case by choosing whichever template rule comes last. Saxon by default gives you a warning message and then takes the recovery action. If you want it to take the recovery action silently, use the -w0 flag. So the difference here is not one between XSLT 1.0 and 2.0, it's a difference between the ways that Xalan and Saxon implement the specs. It's a good idea to fix this error by setting an explicit priority on the match="text()" template (or both). Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Beat Pfister [mailto:pfister.b@xxxxxxxxxxxxxx] > Sent: 07 April 2006 10:35 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] Edit text-nodes with XSLT 2.0 > > Hi, > > I only want to edit the text-nodes of my xml-document, the > structure should > stay as is. > > With XSLT 1.0 and Xalan 2.4.1, I used the following templates > and it works > well. > > <xsl:template match="@*|node()"> > <xsl:copy> > <xsl:apply-templates select="@*|node()"/> > </xsl:copy> > </xsl:template> > > > <xsl:template match="text()"> <!-- in the > text node the > replacement of characters with font tags is done--> > <xsl:choose> > <xsl:when test="not(string(.))" /> > <!-- test if > textcontent is empty --> > <xsl:otherwise> > <xsl:call-template name="find_char1" > > Some more stuff ... > </xsl:otherwise> <!-- end textcontent > is not empty > --> > </xsl:choose> > </xsl:template> > > Then I changed to XSLT 2.0 and Saxon 8.6.1 and the templates > do not work any > more. > The Error message displayed: > Recoverable error on line 99 of > file:/D:/work/ige/fo/26_spa/../Programme/fo/v_0.7/xmltoxml_font.xsl: > XTRE0540: Ambiguous rule match for > /ch-patent-document/bibliographic-data[1]/text()[1] > Matches both "text()" on line 108 of > file:/D:/work/ige/fo/26_spa/../Programme/fo/v_0.7/xmltoxml_font.xsl > and "node()" on line 98 of > file:/D:/work/ige/fo/26_spa/../Programme/fo/v_0.7/xmltoxml_font.xsl > > > Any help much appreciated. > > Regards, > Beat
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Edit text-nodes with XSLT, andrew welch | Thread | RE: [xsl] Edit text-nodes with XSLT, Michael Kay |
Re: [xsl] Edit text-nodes with XSLT, andrew welch | Date | RE: [xsl] Edit text-nodes with XSLT, Michael Kay |
Month |