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 に答える