将 XML 标记中的属性值移动到单独的节点



我正在尝试将XML元素中的属性值移动到具有不同名称作为属性的新子元素。但是,该值保持不变,元素中的其余文本也是如此。原始 XML 行(完整 XML 消息的摘录(是:

<vanaf a:entiteittype="NPS" a:sleutelOntvangend="xxxxxx1608" xmlns:a="http://www.egem.nl/StUF/StUF0301"></vanaf>

我需要创建的 XML 输出是:

<vanaf a:entiteittype="NPS" xmlns:a="http://www.egem.nl/StUF/StUF0301">
    <inp.a-nummer>xxxxxx1608</inp.a-nummer>
</vanaf>

除了这些行之外,原始 XML 消息的其余部分可以按原样复制。到目前为止,我已经构造了以下代码,但没有成功:

<?xml version="1.0" encoding="utf-16"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:package="info:srw/extension/13/package-v1.0" xmlns:StUF="http://www.egem.nl/StUF/StUF0301" xmlns:BG="http://www.egem.nl/StUF/sector/bg/0310">
<xsl:output omit-xml-declaration="yes" indent="yes" />
<xsl:template match="BG:vanaf">
    <vanaf a:entiteittype="NPS" xmlns:a="http://www.egem.nl/StUF/StUF0301">
    <inp.a-nummer> <xsl:value-of select = "@a:SleutelOntvangend"/> </inp.a-nummer>
    </vanaf>
</xsl:template>
<xsl:template match="node()|@*">
  <xsl:copy>
    <xsl:apply-templates select="node()|@*" />
  </xsl:copy>
</xsl:template>
</xsl:stylesheet>

任何帮助为我指明正确方向的帮助将不胜感激。

使用这个:

<?xml version="1.0" encoding="utf-16"?>
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:package="info:srw/extension/13/package-v1.0" 
    xmlns:StUF="http://www.egem.nl/StUF/StUF0301" 
    xmlns:BG="http://www.egem.nl/StUF/sector/bg/0310"
    exclude-result-prefixes="BG package StUF">
    <xsl:output omit-xml-declaration="yes" indent="yes" />
    <xsl:template match="vanaf">
        <vanaf a:entiteittype="NPS" xmlns:a="http://www.egem.nl/StUF/StUF0301">
            <inp.a-nummer> <xsl:value-of select = "@a:sleutelOntvangend"/> </inp.a-nummer>
        </vanaf>
    </xsl:template>
    <xsl:template match="node()|@*">
        <xsl:copy>
            <xsl:apply-templates select="node()|@*" />
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

注意:1. 具有未知命名空间"BG"的模板匹配2. 需要排除输出中不需要的额外命名空间。3. 在属性名称的值中是错误的: @a:sleutelOntvangend

相关内容

  • 没有找到相关文章

最新更新