XSLT获取具有特定子值的节点

时间:2013-07-25 08:55:00

标签: xml xslt

  <xxx>
      <EntityOverview>
        <LevelId>7</LevelId>
        <LongName>trombone</LongName>
      </EntityOverview>
      <EntityOverview>
        <LevelId>10</LevelId>
        <LongName>bananaphone</LongName>
      </EntityOverview>
    </xxx>

我想获取LevelId 10的数据,然后获取LevelId 7的数据,得到类似的结果:

10 pananaphone 7长号

关于如何编写XSLT的任何想法?我开始学习

由于

2 个答案:

答案 0 :(得分:1)

如果您希望以不同于文档中的顺序处理元素,则必须按所需顺序应用模板,例如

<xsl:template match="/">
  <xsl:apply-templates select="//EntityOverview[LevelId = 10]"/>
  <xsl:apply-templates select="//EntityOverview[LevelId = 7"/>
</xsl:template>

或者您可以对LevelId例如

进行排序
<xsl:template match="/">
  <xsl:apply-templates select="//EntityOverview">
    <xsl:sort select="LevelId" data-type="number" order="descending"/>
  </xsl:apply-templates>
</xsl:template>

使用XSLT 2.0,您可以以更紧凑的形式编写内容:

<xsl:template match="/">
  <xsl:apply-templates select="//EntityOverview[LevelId = 10], //EntityOverview[LevelId = 7"/>
</xsl:template>

答案 1 :(得分:0)

也许是这样的? (提供xxx是根元素)

<xsl:template match="//xxx/EntityOverview">
    <xsl:value-of select="LevelId"/><xsl:text> </xsl:text><xsl:value-of select="LongName"/><xsl:text> </xsl:text>  
</xsl:template>