での条件付き自動インクリメント:私はこのようなXMLを持っているXSL
<V>
<W>
<X>1</X>
</W>
<W>
<Y>1</Y>
</W>
<W>
<X>1555</X>
</W>
<W>
<X>1</X>
</W>
</V>
私はそれこのような何か作りたい:フィールドがV/W/Xのとき
<entity ID="start">
<f ID="NewField">0001</f>
<f ID="NewField">0001</f>
<f ID="NewField">0002</f>
<f ID="NewField">0003</f>
</entity>
その後、NewField
にすべきですタグV/W/Xが見つかった回数だけ1だけインクリメントされます。 同様にV/W/Y。私が使用しています
XSLは
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<entity ID="start">
<xsl:for-each select="V/W">
<xsl:if test="X">
<xsl:variable name="my_var">
<xsl:value-of select="concat('000',position())"/>
</xsl:variable>
<f ID="NewField"><xsl:value-of select="$my_var"/></f>
</xsl:if>
<xsl:if test="Y">
<xsl:variable name="my_var">
<xsl:value-of select="concat('000',position())"/>
</xsl:variable>
<f ID="NewField"><xsl:value-of select="$my_var"/></f>
</xsl:if>
</xsl:for-each>
</entity>
</xsl:template>
</xsl:stylesheet>
ですが、それは、私にこのような何か間違った結果が得られます。
<entity ID="start">
<f ID="NewField">0001</f>
<f ID="NewField">0002</f>
<f ID="NewField">0003</f>
<f ID="NewField">0004</f>
</entity>
、あなたが使用する理由、特定の理由があります ' parent :: 'axis(明示的には、定義によっては最大でも1つのノードしか持たない)を' ..'ではなく - どちらかというとあいまいではないようです。 –
あなたは正しいです、 '' .. ''は同じで、私はそれを知っています。私はそれがもっと表現力豊かなので、私はそれをやっている。 XPathを読むとき、予想される文書構造は即座に明瞭ですが、 '' .. ''はあいまいさを残します。 – Tomalak