0

<div>再帰的なテンプレート一致を使用して、すべてのxml要素をxhtmlタグに変換しています。

基本的に、要素name()をクラス名、つまりに変換したいと思います。<div class="name()">value</div>

私は以下を使用しました:

<body>
    <xsl:apply-templates />
</body>

<xsl:template match="*">
  <div class="{name()}"><xsl:value-of select="."/>
  <xsl:apply-templates select="*"/>
  </div>
</xsl:template>

親タグの値を取得することを除いて、非常にうまく機能します。たとえば、このxml

  <TotalPayments>
    <Amount>26.96</Amount>
    <TaxableAmount>26.96</TaxableAmount>
    <TaxAmount>0.00</TaxAmount>
    <ShippingAmount>0.00</ShippingAmount>
  </TotalPayments>

になる:

<div class="TotalPayments">
        26.96
        26.96
        0.00
        0.00
  <div class="Amount">26.96</div>
  <div class="TaxableAmount">26.96</div>
  <div class="TaxAmount">0.00</div>
  <div class="ShippingAmount">0.00</div>
</div>

そして私は欲しいだけです

<div class="TotalPayments">
  <div class="Amount">26.96</div>
  <div class="TaxableAmount">26.96</div>
  <div class="TaxAmount">0.00</div>
  <div class="ShippingAmount">0.00</div>
</div>

そして、それはツリーの上でますます悪化します。ルートにもそれがすべてあります。

だから私はテストをするべきですか、それとも特定のタイプだけを選択することができますか?私もマッチングしてみました

* | text()
* | node()

ありがとう。

4

1 に答える 1

0

を削除して<xsl:value-of select="."/>から、に変更する<xsl:apply-templates select="*"/>だけ<xsl:apply-templates/>です。このようにして、テキストノードの子のデフォルトテンプレートがそれらを出力します(そして要素の子は以前と同じように処理されます)。

于 2012-12-03T18:14:20.167 に答える