通过XSLT1.0向XML添加新元素,但不使用xmlns



我有这个XML文件,并应用了XSLT。我想要的结果是添加一个新元素,但它不包含名称空间。

<?xml version="1.0" encoding="UTF-8"?>  <ITIN3 />
<Export xmlns="http://www.ibm.com/maximo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
creationDateTime="2018-09-29T12:53:10+02:00" transLanguage="EN" baseLanguage="EN" 
messageID="24242525" maximoVersion="7 6 20190514-1348 V7611-365" event="1">
<MRCSet>
<MRC action="Add">
<PONUM>MPO15114</PONUM>
<POREVISIONNUM>0</POREVISIONNUM>      
</MRC>
</MRCSet>
</Export>

我已经应用了XSLT:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"   
xmlns:mea="http://www.ibm.com/maximo" exclude-result-prefixes="mea">
<xsl:output omit-xml-declaration="no" indent="yes" encoding="UTF-8"/>
<xsl:strip-space elements="*"/>

<!-- Identity transform -->
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy> 
</xsl:template>
<xsl:template match="/mea:Export/mea:MRCSet/mea:MRC">
<xsl:copy>

<xsl:copy-of select="@*"/>
<NEWINFO>1</NEWINFO>
<xsl:copy-of select="node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>

结果如下。但是我不想拥有那个名称空间xmlns。我只是想要一个我写的新元素。

<?xml version="1.0" encoding="UTF-8"?>
<Export xmlns="http://www.ibm.com/maximo"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
creationDateTime="2018-09-29T12:53:10+02:00"
transLanguage="EN"
baseLanguage="EN"
messageID="24242525"
maximoVersion="7 6 20190514-1348 V7611-365"
event="1">
<MRCSet>
<MRC action="Add">
<NEWINFO xmlns="">1</NEWINFO >
<PONUM>MPO15114</PONUM>
<POREVISIONNUM>0</POREVISIONNUM>
</MRC>
</MRCSet>
</Export>

xmlns="http://www.ibm.com/maximo"添加到xsl:stylesheet元素或至少添加到NEWINFO元素。

您错误地分析了情况:

源文档的所有元素都在默认名称空间xmlns="http://www.ibm.com/maximo"中,样式表按原样复制它们。

您添加的元素不是名称空间,xmlns=""声明就是一个指示。

相关内容

  • 没有找到相关文章

最新更新