1

我的输入数据如下:

    <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 的新手,有人可以告诉我:这行得通吗?

4

2 回答 2

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;
于 2013-03-07T05:00:33.590 回答
0

让模板匹配做更多的工作可能更简单一些。以下样式表返回字符串“80000001;80000002;80000003;” 当处理您的示例输入时,当它处理包含没有任何 Sup_Offer 子项的 Data 元素的文档时为空字符串。

<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>
于 2013-03-06T22:04:51.880 回答