Estoy tratando de usar paréntesis para anular la precedencia predeterminada del operador en una expresión xpath dentro de un xslt sin suerte. Por ejemplo:usando paréntesis en xpath/xslt
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:exsl="http://exslt.org/common"
extension-element-prefixes="exsl"
version="1.0">
<xsl:output encoding="utf-8" standalone="yes"/>
<xsl:template match="/">
<xsl:apply-templates select="*"/>
</xsl:template>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<!--these should work but don't-->
<xsl:template match="//(X|Y|Z)/AABBCC"/>
<xsl:template match="(book/author)[last()]"/>
</xsl:stylesheet>
Visual Studio 2010 no se compilará esta volviendo:.
símbolo inesperado '(' en la expresión // -> (< - X | Y | Z)/AABBCC .
símbolo inesperado '(' en la expresión -> (< - libro/autor) [last()]
Sin embargo, el segundo ejemplo es de MSDN:
http://msdn.microsoft.com/en-us/library/ms256086.aspx
y numerosas referencias dicen que se puede utilizar paréntesis de esta manera:
http://saxon.sourceforge.net/saxon6.5.3/expressions.html
http://www.stylusstudio.com/xsllist/200207/post90450.html
http://www.mulberrytech.com/quickref/XSLT_1quickref-v2.pdf
Es éste un XPath 1.0 vs 2.0 cosa ... o hay algo más que me estoy perdiendo? Si se trata de algo de xpath 2.0, ¿hay una buena forma de hacer xpath 1.0 para hacer lo mismo?
Gracias a Martin y Lars ... Ahora entiendo – user109078