値がゼロのときに値を更新する必要がある特定の属性(myId)を持つ文書があります。文書は、私は、呼び出し元のプログラムから渡されたユニークなIDに設定するために、属性のMyIDと一致するようにテンプレートを使用していますが、私は唯一の文書の属性のいずれかと一致する場合、このXSLTテンプレートを照合して属性を1回だけ変更する
<?xml version="1.0" encoding="UTF-8"?><Summary>
<Section myId="0">
<Section myId="0">
<Para>...</Para>
</Section>
<Section myId="5">
<Para>...</Para>
</Section>
</Section>
</Summary>
のように見えます。値が0の追加属性は、別のIDを渡すことによって更新されます。 私のテンプレートは、私はこのようなルックスを使用しています:
<xsl:template match = '@myId[.="0"]'>
<xsl:attribute name = "{name()}">
<xsl:value-of select = "$addValue"/>
</xsl:attribute>
</xsl:template>
値addValueは、呼び出し元のプログラムから渡されたグローバルパラメータです。 私は今日の良い部分の答えを探しましたが、このテンプレートを1回だけ適用することはできません。出力によって、myIdの値がaddValueの内容に置き換えられます。 私は '@myId [。0 0] [1]'とマッチしようとしましたが、position()関数を使ってマッチさせようとしましたが、テンプレートは常にゼロのすべてのmyId属性に適用されます。
一致するテンプレートは1回だけ適用できますか?
countが0の先行軸を使用してみてください。 –