【问题标题】:How to rename duplicate xml elements with XSLT 1.0?如何使用 XSLT 1.0 重命名重复的 xml 元素?
【发布时间】:2016-07-14 19:42:43
【问题描述】:

过去几天我一直在尝试,但没有运气。我的 xml 中有 2 个重复的元素(ELM.11)。我想将另一个重命名为(ELM.12)。请看下面的输入。提前致谢。

INPUT
<ROOT>
    <ELM>
        <ELM.10>ABC</ELM.10>
        <ELM.11>001252016175000006</ELM.11>
        <ELM.11>3796124</ELM.11>
        <ELM.13>
            <TS.1>20160623134857-0400</TS.1>
        </ELM.13>
        <ELM.14>GLB</ELM.14>
        <ELM.15>F</ELM.15>
    <ELM>
</ROOT>

EXPECT OUTPUT
<ROOT>
    <ELM>
        <ELM.10>ABC</ELM.10>
        <ELM.11>001252016175000006</ELM.11>

        <ELM.12>3796124</ELM.12>

        <ELM.13>
            <TS.1>20160623134857-0400</TS.1>
        </ELM.13>
        <ELM.14>GLB</ELM.14>
        <ELM.15>F</ELM.15>
    <ELM>
</ROOT>

【问题讨论】:

  • 虽然我确信这里有人会很乐意帮助您(也许如果您付钱给他们),但 Stack Overflow 并不是一个代码编写服务。您需要提供到目前为止您实际尝试过的操作(即minimal reproducible example
  • 原来是我要找的一行代码。我永远不会认为 stackoverflow 是一个代码编写服务。谢谢你的 2 美分。

标签: xslt xslt-1.0


【解决方案1】:

这个问题有点模棱两可。如果我从字面上看,答案很简单:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>

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

<xsl:template match="ELM.11[2]">
    <ELM.12>
        <xsl:apply-templates select="@*|node()"/>
    </ELM.12>
</xsl:template>

</xsl:stylesheet>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-19
    • 1970-01-01
    • 2019-11-17
    • 1970-01-01
    相关资源
    最近更新 更多