使用 XSLT 进行属性转换

Posted

技术标签:

【中文标题】使用 XSLT 进行属性转换【英文标题】:Attribute transformation using XSLT 【发布时间】:2013-08-15 02:50:20 【问题描述】:

我正在创建 XSLT 转换。 我的源 XML 包含具有 InstrumentType 属性的元素 Order:

<Order InstrumentType="FWD">

现在,作为转换过程的一部分,我必须在以下条件下使用 属性值

<xsl:if test="$InstrumentType='SPOT'">
...
</xsl:if>

我正在寻找某种方法将 属性值 转换为 XSLT 中的 InstrumentType variable。 感谢您的帮助。

【问题讨论】:

为什么需要一个变量?不能直接用@InstrumentType吗? &lt;xsl:variable name="InstrumentType" select="@InstrumentType" /&gt; 我尝试使用@InstrumentType 但我没有得到属性的值。调试时,我看到值类型 item()。还有其他建议还是我遗漏了什么? 【参考方案1】:

也许你有默认命名空间问题。然后就可以使用了

<xsl:if test="@*[local-name()='InstrumentType' and .='SPOT']"></xsl:if>

【讨论】:

以上是关于使用 XSLT 进行属性转换的主要内容,如果未能解决你的问题,请参考以下文章

需要 XSLT 转换以删除重复元素 - 按属性排序

使用 XSLT 转换在 XML 中创建 xmlns 属性

XSLT:XML 第一个属性需要转换为具有第二个属性值的元素

使用 XSLT 将 XML 元素转换为 XML 属性

XSLT 如何从不同的标签级别访问属性?

XSLT 用于根据元素的属性对特定 XML 标记的元素进行排序