XSLT - 如何仅输出属性值并忽略元素的值

Posted

技术标签:

【中文标题】XSLT - 如何仅输出属性值并忽略元素的值【英文标题】:XSLT - How do output only the attribute values and ignore the value of the element 【发布时间】:2020-10-13 22:21:04 【问题描述】:

我是一个有菜鸟问题的菜鸟。

我正在尝试进行 XML -> XSLT -> XML 转换,以将在供应商平台中创建的内容与旧版发布渠道集成。

我被困住了。输入 XML 文档有一个属性值,我希望它作为输出 XML 文档中的新元素文本。我可以做到,但我想忽略原始 xml 文档中元素的值,它不会消失!

感谢您的帮助。示例如下:

输入 XML <author value="Firstname LASTNAME">123456789</author>

所需的输出 XML <owner>Firstname LASTNAME</owner>

XSLT 损坏

<xsl:template match="author">
    <owner>
        <xsl:value-of select="@display_value" />
    </owner>
    <xsl:apply-templates></xsl:apply-templates>
</xsl:template>

XSLT 损坏的 xml 结果

&lt;owner&gt;Fistname LASTNAME&lt;/owner&gt;123456789

您从原始 xml 文档中看到元素的值,我希望它消失。我不需要它。我哪里出错了?

【问题讨论】:

如果您不想处理author 的子节点(在本例中为"123456789" 文本节点),请删除xsl:apply-templates 指令。 【参考方案1】:

从您的代码中删除 apply-templates 表达式即可完成任务

<xsl:template match="author">
    <owener>
        <xsl:value-of select="@value"/>
    </owener>
</xsl:template>

【讨论】:

以上是关于XSLT - 如何仅输出属性值并忽略元素的值的主要内容,如果未能解决你的问题,请参考以下文章

XSL 获取元素值并忽略嵌套元素

如何使用 xslt 获取 XML 的属性值和代码作为 html 的值

使用 XSLT 打印元素和属性的 xpath 和值

如何在 XSLT 中对值进行分组和求和

XSLT 如何组合模板并将现有字段添加到某些元素

XSLT 希望删除属性然后重新匹配元素