
[英]Xpath expression to search nodes not relative to root node works for XML file but fails for XSD file
[英]XPath XML search root node for match, ignoring children
<?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 文件中,我想检查 Catalog 的年份是 1987、1988 还是 1989。但是,当我使用下面的搜索时
//目录[匹配(@YEAR,“198[789]”)]
我在目录年份和第七个儿子的第七个儿子的年份都匹配。 如何仅搜索根节点? 我尝试使用“self”或“.”进行搜索。 没有成功。 谢谢
您的表达式是正确的 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]')]
这将(肯定)选择具有给定属性的根元素。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.