xsl:for-each测试通配符元素

时间:2016-06-02 04:17:11

标签: xml xslt

我试图遍历一些XML,直到找到包含文本字符串的元素。

采用一个非常简单的XML示例。

<document>
  <item>
   <thing1>Fee</thing1>
   <thing2>Fi</thing2>
   <thing3>Fo</thing3>
   <some blah="Thingy">Fum</some>
   <another>I Smell</another>
   <other>Someone</other>
  </item>
</document>

我希望能够搜索包含“thing”的任何元素,我之前已经看过这样做过这样的属性......

<xsl:for-each test="contains(@blah,'Thingy')"></xsl:for-each>

但是我想搜索“thing1,thing2,thing3”,然后获得他们的<xsl:value-of select"." />,这将是费,Fi和Fo。我需要排除其他元素,因为它们不会包含字符串“thing”

1 个答案:

答案 0 :(得分:1)

尝试:

<xsl:for-each select="*[contains(name(), 'thing')]">

或者,为了更好地适应给定的例子:

<xsl:for-each select="*[starts-with(name(), 'thing')]">

两者都可以从item的上下文中调用。