gpt4 book ai didi

XSLT:如何在 期间更改属性值?

转载 作者:行者123 更新时间:2023-12-03 05:49:30 25 4
gpt4 key购买 nike

我有一个 XML 文档,我想更改其中一个属性的值。

首先,我使用以下方法复制了从输入到输出的所有内容:

<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>

现在我想更改任何名为 "property" 的元素中的属性 "type" 的值。

最佳答案

这个问题有一个经典的解决方案:使用和覆盖 the identity template是最基本、最强大的 XSLT 设计模式之一:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>

<xsl:param name="pNewType" select="'myNewType'"/>

<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>

<xsl:template match="property/@type">
<xsl:attribute name="type">
<xsl:value-of select="$pNewType"/>
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>

应用于此 XML 文档时:

<t>
<property>value1</property>
<property type="old">value2</property>
</t>

产生了想要的结果:

<t>
<property>value1</property>
<property type="myNewType">value2</property>
</t>

关于XSLT:如何在 <xsl:copy> 期间更改属性值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/615875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com