繁体   English   中英

XPath XML 搜索根节点进行匹配,忽略子节点

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM