2013-07-15 42 views
0

嗨,我是一个新的蜜蜂xml/xslt。有人可以帮助我在下面的要求 我有多个同名的标签如何迭代检查每个标记值的多个标记

<SO_ServiceType>XXXX</SO_ServiceType> 
<SO_ServiceType>YYYY</SO_ServiceType> 
<SO_ServiceType>ZZZZ</SO_ServiceType> 

如何遍历和检查每个标签的价值

回答

0

该解决方案“迭代”在每个节点SO_ServiceType ...

<xsl:template match="/"> 
     <xsl:apply-templates /> 
    </xsl:template> 

    <xsl:template match="SO_ServiceType"> 
    <xsl:if test="text()='ZZZZ'"> 
     <sample>ZZZZ is the value</sample> 
    </xsl:if> 
    <node> 
    <xsl:value-of select="."/> 
    </node> 
    </xsl:template> 

结果

<node>XXXX</node> 
<node>YYYY</node> 
<sample>ZZZZ is the value</sample> 
<node>ZZZZ</node> 

编辑

如果你只是想在结果树输出“真”,如果文本()匹配A-70-00,你可以这样做:

<xsl:template match="SO_ServiceType"> 
    <xsl:if test="text()='A-70-00'">true</xsl:if> 
    </xsl:template> 

记住,XSLT是把输入的方式输出。在XSLT中,描述了需要应用哪些规则才能获得所需的输出结果。试着想想你想要在输入节点上发生什么,而不是想要如何产生输出。

+0

嗨雷内,感谢您的快速回复。我试图调用一个模板,如果发现某个值,应该在遍历标记后返回一些值。我正在尝试下面的代码块,但是获取语法错误 ='A-70-00'”> shaiksha

+0

一旦期望值发现我想停止迭代,并提出循环 – shaiksha

+0

的出来这不是如何XLST工程.. .. – rene

0

根据您对rene's answer的评论判断,您可能根本不需要“重复”。当XPath表达式中的一个或另一个(或两个)节点集具有相等比较时,如果该集合中的节点的任何与该值匹配,则整个表达式成功。因此

<xsl:if test="/Data/SO_Service_Type = 'A-70-00'">true</xsl:if> 

将产生true如果任何SO_Service_Type元素具有值A-70-00 - 无for-each必需的。

相关问题