これが問題です。変換された XSLT は、2 つの電話番号 <Phone_1> と <Phone_2> をそれぞれ 1 つずつ表示するはずです。Fax タグは参照用に追加しただけです。
これは、変換する必要がある XML のスニペットです。
<DirPartyContactInfoView>
<Locator>08-922100</Locator>
<Type>Phone</Type>
</DirPartyContactInfoView>
<Locator>073-6564865</Locator>
<Type>Phone</Type>
</DirPartyContactInfoView>
<Locator>08-922150</Locator>
<Type>Fax</Type>
</DirPartyContactInfoView>
これが、このスニペットの XSLT に対する現在の見解です。これまでのところ、変数を条件として設定しようとしましたが、変数値を一度しか設定できず、変更できないことを知っていました。
<xsl:for-each select="DirPartyContactInfoView">
<xsl:choose>
<xsl:when test="Type='Phone'">
<xsl:variable name="Phone1" />
<xsl:choose>
<xsl:when test="Phone1=''">
<xsl:variable name="Phone1" select="Locator" />
<Phone_1>
<xsl:value-of select="Locator" />
</Phone_1>
</xsl:when>
<xsl:otherwise>
<Phone_2>
<xsl:value-of select="Locator" />
</Phone_2>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="Type='Fax'">
<Fax>
<xsl:value-of select="Locator" />
</Fax>
</xsl:when>
</xsl:choose>
</xsl:for-each>
それでも、出力に 2 つの <Phone_2> が表示され、まったくアイデアがありません。このような変数は使用できないと思います。これを修正する方法はありますか?