更改元素名称而不更改名称空间

时间:2013-07-06 18:04:59

标签: xml xslt-1.0

我认为这很棘手。我想要下面的xml,将getpositionrouter元素更改为'newelement'。问题是,这应该是输入输出中唯一的变化。即使是命名空间'pos',也应该保留。所以在输入而不是pos中它可以是ns1 =“positionNS”。然后输出ns1,应该在那里。

input


<pos:getPositionRouter xmlns:pos="positionNS">
   <positionID>
      <code>1</code>
   </positionID>
   <parameter>?</parameter>
</pos:getPositionRouter>

期望的输出

<pos:newelement xmlns:pos="positionNS">
   <positionID>
      <code>1</code>
   </positionID>
   <parameter>?</parameter>
</pos:newelement>

1 个答案:

答案 0 :(得分:0)

尝试使用样式表

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

    <xsl:template match="/">
        <xsl:apply-templates select="pos:getPositionRouter" />
    </xsl:template>

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

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

</xsl:stylesheet>
相关问题