XPath XML搜索根节点以查找匹配项,忽略子项


<?xml version="1.0" encoding="UTF-8"?>
<CATALOG YEAR="1988">
<CD>
<TITLE>Empire Burlesque</TITLE>
<ARTIST>Bob Dylan</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>Columbia</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
</CD>
<VINYL>
<TITLE>Seventh Son of a Seventh Son</TITLE>
<ARTIST>Iron Maiden</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>EMI</COMPANY>
<PRICE>10.20</PRICE>
<YEAR>1988</YEAR>
</VINYL>
</CATALOG>

在上面的xml文件中,我想检查目录的年份是1987年、1988年还是1989年。然而,当我在下使用搜索时

//CATALOG[匹配(@YEAR,"198[789]"(]

我在目录年和第七子的第七子年都有匹配。如何仅搜索根节点?我试着用";自我;或"没有成功。感谢

您的表达式是正确的XPath-2.0表达式。因此,一个有效的XSLT-2.0样式表可能如下所示:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="//CATALOG[matches(@YEAR, '198[789]')]">
<xsl:copy-of select="." />
</xsl:template>
</xsl:stylesheet>

此样式表匹配并复制具有给定条件的所有根元素(可能是一个(。你的表达是正确的。

如果这不起作用,只需使用

/CATALOG[matches(@YEAR, '198[789]')]

这将(肯定(选择具有给定属性的根元素。

最新更新