如何使用xslt检索标签的子元素

时间:2019-04-03 13:08:50

标签: xml xslt

无论上面的内容是什么,我都希望使用xslt从我的xml文件中仅检索<a>的{​​{1}}子级

但是,我得到了xml中的所有元素(而不仅仅是我感兴趣的元素)。 例如,如果我有:

<b>

或者只是:

<x> 
   <z>
      <b>
         <a>my element </a>
      </b>
  </z>
</x>

我想恢复:my元素

<x> 
    <b>
       <a>my element </a>
    </b>
</x>

2 个答案:

答案 0 :(得分:1)

  

我只想从我的xml中检索<a>的{​​{1}}子级   不管上面是什么,都带有xslt文件

你很近。使用:

<b>

请注意:覆盖具有空模板(无输出)的文本节点的内置规则。只需使用完全匹配的规则输出所需的内容即可。

  

但是,我得到了xml中的所有元素

这句话很奇怪,因为您使用的是<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:output method="text"/> <xsl:template match="text()"/> <xsl:template match="b/a"> <xsl:value-of select="." /> </xsl:template> </xsl:stylesheet> 输出方法...

答案 1 :(得分:0)

奇怪的是,您事先不知道输入XML的结构。无论如何:

<xsl:template match="/">
    <xsl:value-of select="//a" /> 
</xsl:template>

将检索a元素的值,无论它位于输入XML文档层次结构中的何处。

要将其限制为a的子元素b,请使用:

<xsl:value-of select="//b/a" />