我想用括號在xslt中重寫xpath中的默認運算符優先級,但沒有運氣。例如:在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不會編譯該返回:
意外標記 '(' 在表達// - >(< - X | Y | Z)/ AABBCC 。
意外標記 '(' 在表達 - >(< - 書/作者)[最後()]
然而,第二個例子是從MSDN:
http://msdn.microsoft.com/en-us/library/ms256086.aspx只
,並多次提到說,你可以以這種方式使用括號:
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
這是一個XPath 1.0 VS 2.0的事情...或者是有我失蹤的其他東西?如果它是一個xpath 2.0的東西,是否有一個很好的xpath 1.0方法來做同樣的事情?
感謝Martin和Lars ......我現在明白 – user109078 2011-05-26 17:18:11