2

次のような XML があるとします。

<a id="1">
  <b>
    <code>42</code>
  </b>
</a>

そして、ターゲットは次のとおりです。

<request>
  <aId>1</aId>
  <bCode>42</bCode>
</request>

この XSLT を使用して到達できます。

<template match="/">
  <element name="request">
    <apply-templates/>
  </element>
</template>

<template match="a">
  <element name="aId"><value-of select="@id"/></element>
  <apply-templates/>
</template>

<template match="b/code">
  <element name="bCode"><value-of select="."/></element>
</template>

<apply-templates/>ただし、これは と交換しても機能し<next-match/>ます。両方とも正常に動作しているように見える場合に、どちらを使用するかについてのアドバイスはありますか? next-matchたとえば、後でさらにものを追加すると、物事を台無しにする可能性のある追加の効果はありますか?

4

1 に答える 1

1

その場合、 の使用はnext-match組み込み要素テンプレートの動作に依存しますapply-templates( http://www.w3.org/TR/xslt20/#built-in-ruleを参照)。そして、要素のテンプレートを追加したら、例えば

<xsl:template match="*">
  <xsl:copy>
    <xsl:apply-templates/>
  </xsl:copy>
</xsl:template>

結果ノードを追加する上記のテンプレートを選択するだけで、next-match何もしない組み込みテンプレートを使用しなくなります。apply-templates

したがって、あなたのコードでは、引き続き使用しますapply-templates

于 2012-10-26T12:48:05.863 に答える