这就是问题所在:转换后的 XSLT 应该显示两个电话号码,<Phone_1> 和 <Phone_2>,每个号码一个。只是添加了传真标签以供参考。
这是我必须转换的 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>
然而,我在输出中得到了两个 <Phone_2>,我完全没有想法。我猜我不能使用这样的变量。有任何解决这个问题的方法吗?