xslt で何らかの条件に基づいて属性を作成するにはどうすればよいですか。
私の入力xmlにはタグがあります:
<track external="http://mysite.com" />
or
<track local="/myfolder" />
この 'track 要素には、外部属性またはローカル属性のいずれかが表示されますが、これらのいずれも表示されないため、次のように変換する必要があります
<a xhtml:href="@external value" xmlns="http://www.w3.org/1999/xhtml" />
'track' 要素またはに 'external' 属性が発生した場合
<a xlink:href="@local value" xmlns="http://www.w3.org/1999/xlink" />
「track」要素に「local」属性が発生した場合
XSLT が試した:
<a xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xlink="http://www.w3.org/1999/xlink">
<xsl:for-each select="child::*" >
<xsl:choose>
<xsl:when test="name()='track'">
<xsl:if test="@local">
<xsl:attribute name="xlink:href">
<xsl:value-of select="@local" />
</xsl:attribute>
</xsl:if>
<xsl:if test="@external">
<xsl:attribute name="xhtml:href">
<xsl:value-of select="@external" />
</xsl:attribute>
</xsl:if>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</a>
しかし、条件に基づいて「a」要素の属性を作成すると、例外がスローされます。これは XSLT 1.0 では受け入れられません。XSLT 1.0 の条件に基づいて、'a' 要素に属性を表示させる方法はありますか?