我的输入数据如下:
<Data>
<Sup_Offer action='add'>80000001</Sup_Offer>
<Sup_Offer action='add'>80000002</Sup_Offer>
<Sup_Offer action='add'>80000003</Sup_Offer>
</Data>
我正在使用下面的模板检查节点Sup_Offer是否存在,如果存在,我需要连接值。
<xsl:template name="getDeactivateDataCmd">
<xsl:choose>
<xsl:when test="boolean(Sup_Offer)">
<xsl:for-each select="/Data/Sup_Offer" >
<xsl:value-of select="concat(Sup_Offer,';')"/>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
由于我是XML / XSLT的新手,有人可以告诉我:这有用吗?
答案 0 :(得分:0)
让模板匹配完成更多工作可能会更简单一些。以下样式表返回字符串“80000001; 80000002; 80000003;”当你处理包含没有任何Sup_Offer子元素的数据元素的文档时处理你的样本输入和空字符串。
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="text"/>
<xsl:template match="Data">
<xsl:apply-templates select="Sup_Offer"/>
</xsl:template>
<xsl:template match="Sup_Offer">
<xsl:apply-templates/>
<xsl:text>;</xsl:text>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:0)
此转化:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="Sup_Offer">
<xsl:value-of select="concat(.,';')"/>
</xsl:template>
</xsl:stylesheet>
应用于提供的XML文档时:
<Data>
<Sup_Offer action='add'>80000001</Sup_Offer>
<Sup_Offer action='add'>80000002</Sup_Offer>
<Sup_Offer action='add'>80000003</Sup_Offer>
</Data>
会产生想要的正确结果:
80000001;80000002;80000003;