gpt4 book ai didi

xml - 重命名元素并保留属性

转载 作者:行者123 更新时间:2023-12-02 21:55:18 25 4
gpt4 key购买 nike

我想将 mattext 节点重命名为 text,但保留其属性和所有子节点/属性

输入 XML

<material>
<mattext fontface="Tahoma">
<p style="white-space: pre-wrap">
<font size="11">Why are the astronauts in the video wearing special suits? (Select two)</font>
</p>
</mattext>
</material>

输出

<material>
<text fontface="Tahoma">
<p style="white-space: pre-wrap">
<font size="11">Why are the astronauts in the video wearing special suits? (Select two)</font>
</p>
</text>
</material>

我使用了以下 xsl:

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


<!-- Build stem -->
<xsl:template match="mattext">
<text>
<!-- Option text -->
<xsl:call-template name="content"/>
</text>
</xsl:template>

但它不保留初始 fontface 属性,并且似乎输出剥离标签的纯文本

最佳答案

如果这是您完整的 XSLT,我可以理解您的结果。您仅匹配一个元素,即 。所有其他内容均由默认行为处理,即复制文本节点。我猜你想要一个 Identity Transformation 元素进行特殊处理:

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

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

关于xml - 重命名元素并保留属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17920639/

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