嗨,我是xml / xslt的新蜜蜂。有人可以帮助我满足以下要求 我有多个同名的标签
<SO_ServiceType>XXXX</SO_ServiceType>
<SO_ServiceType>YYYY</SO_ServiceType>
<SO_ServiceType>ZZZZ</SO_ServiceType>
如何迭代和检查每个标签的值
答案 0 :(得分: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>
修改
如果你只想在结果树中输出'true',如果text()与A-70-00
匹配,你可以这样做:
<xsl:template match="SO_ServiceType">
<xsl:if test="text()='A-70-00'">true</xsl:if>
</xsl:template>
请记住,XSLT是一种将输入转换为输出的方法。在XSLT中,您描述了需要应用哪些规则才能获得所需的输出结果。尝试用输入节点来思考你想要发生什么,而不是想要产生输出。
答案 1 :(得分: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
。