需要根据条件提取子标记值

时间:2013-11-26 12:40:06

标签: xml xslt-1.0

以下是inpt。我需要提取b2,b3,b4值,其中b1 = 555。也可以有超过3个街区。目前正试图迭代每个块,任何其他强大的方法来做到这一点

    <a>
    <b1>111</b>
     <b2>222</b>
    <b3>333</b>
    <b4>444</b>
   </a>
    <a>
     <b1>555</b>
     <b2>666</b>
     <b3>777</b>
     <b4>888</b>
   </a>
    <a>
    <b1>999</b>
     <b2>000</b>
     <b3>122</b>
     <b4>167</b>
   </a>

1 个答案:

答案 0 :(得分:0)

你只需要让你的选择标准选择全部&lt; b1&gt;其中值为555。

这样的事情:     

   <xsl:template match="/">
      <!-- Select all a element that have a b1 element who's value is 555 -->
      <xsl:apply-templates select="//a[./b1=555]" />
   </xsl:template>
   <xsl:template match="a">
      b1=<xsl:value-of select="b1"/>
      b2=<xsl:value-of select="b2"/>
      b3=<xsl:value-of select="b3"/>
      b4=<xsl:value-of select="b4"/>     
   </xsl:template>
</xsl:stylesheet>

注意:我打印了b1值,因此显示它是用于说明的正确值集。此外,您应该再次使用应用模板,并为每种类型b2 b3 b4使用不同的模板,这样如果转换彼此非常不同,您可以为每个模板进行单独的转换。

此样式表针对您的样本生成:

 b1=555
 b2=666
 b3=777
 b4=888
相关问题