将命名空间添加到匿名xml

时间:2017-01-24 12:13:00

标签: xslt namespaces

我正在尝试为输入添加名称空间:

<?xml version="1.0" encoding="utf-8"?>
<VLOG_Export>
  <Send_Referenznr_01>3200000042</Send_Referenznr_01>
  <Send_Referenznr_06>00000000001000189718</Send_Referenznr_06>
  <Send_ID>1Z78A1070461454103</Send_ID>
</VLOG_Export>

预期产出:

<?xml version="1.0" encoding="UTF-8"?>
<ns0:VLOG_Export xmlns:ns0="http://mycomp.com/VLOG/SD/vlog/export">
   <Send_Referenznr_01>sdfsdf</Send_Referenznr_01>
   <Send_Referenznr_06>sdfsf</Send_Referenznr_06>
   <Send_ID>sdfsdf</Send_ID>
</ns0:VLOG_Export>

使用此xslt:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output indent="yes"/>
    <xsl:strip-space elements="*"/>

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

    <xsl:template match="*" priority="1">
        <xsl:element name="{local-name()}" namespace="http://mycomp.com/VLOG/SD/vlog/export">
            <xsl:apply-templates select="@*|node()"/>
        </xsl:element>
    </xsl:template>

</xsl:stylesheet>

我得错了输出。 欢迎任何提示。 THX

1 个答案:

答案 0 :(得分:0)

这可以按预期工作:

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:ns0="http://mycomp.com/VLOG/SD/vlog/export">
    <xsl:output indent="yes"/>
    <xsl:strip-space elements="*"/>

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

    <xsl:template match="/VLOG_Export" priority="1">
        <xsl:element name="ns0:{local-name()}">
            <xsl:apply-templates select="@*|node()"/>
        </xsl:element>
    </xsl:template>

</xsl:stylesheet>

看到它正常工作:http://xsltransform.net/6rewNyz