2013-11-26 21 views
0

以下是输入。我需要提取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> 

回答

0

你只需要进行选择的标准挑选所有< B1>其中值是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