XSL语法双美元符号“$$”

时间:2010-11-01 22:04:52

标签: xml xslt

我一直在浏览xsl文档,我不确定@ domain $ ne $代表什么。你能帮忙吗?

 <xsl:for-each select="./HEADER/META
                          [(./VALUE[not(text()='')]) and
                           (./@domain$ne$'PPPI_PROCESS_ORDER') and
                           (./@domain$ne$'PPPI_PROCESS_ORDER_TEXT') and
                           (./@domain$ne$'PPPI_MATERIAL') and 
                           (./@domain$ne$'PPPI_MATERIAL_SHORT_TEXT')]"

3 个答案:

答案 0 :(得分:2)

正如其他人所指出的那样,这不是有效的XPath(或XSLT)。

但是在XPath 2.0中有一个ne运算符,意思是“不等于”。它类似!=,但适用于单个原子值而不是节点集(存在比较)。

ne很可能是预期的,但$符号应该用空格替换。

<xsl:for-each select="./HEADER/META
                      [(./VALUE[not(text()='')]) and
                       (./@domain ne 'PPPI_PROCESS_ORDER') and
                       (./@domain ne 'PPPI_PROCESS_ORDER_TEXT') and
                       (./@domain ne 'PPPI_MATERIAL') and 
                       (./@domain ne 'PPPI_MATERIAL_SHORT_TEXT')]">

我想知道ne$包围的情况发生了什么。

还有一些其他的方法可以让代码更简洁,但这不是你问题的重点。

答案 1 :(得分:0)

除了$经常用来表示变量之外没有找到任何东西,但是在这种情况下它看起来像是一个分隔符,'就像@domain不等于'PPPI_PROCESS_ORDER'但我找不到任何支持它的东西。

匹配或应该匹配哪种数据。

答案 2 :(得分:0)

这在语法上不是有效的XPath(和XSLT)。

以下是一个XSLT 1.0处理器(Saxon 6.5.4)的反应:

SAXON 6.5.4 from Michael Kay
Java version 1.6.0_21
Error at xsl:for-each on line 10 of file:/(Untitled):
  Error in expression ./HEADER/META                           [(./VALUE[not(text()='')]) and                            (./@domain$ne$'PPPI_PROCESS_ORDER') and                            (./@domain$ne$'PPPI_PROCESS_ORDER_TEXT') and                            (./@domain$ne$'PPPI_MATERIAL') and                            (./@domain$ne$'PPPI_MATERIAL_SHORT_TEXT')]: expected ")", found "$"
Transformation failed: Failed to compile stylesheet. 1 error detected.
Press any key to continue . . .