我有xml代码,我想在xml代码的开头放置两个xml标记,以便所有代码都位于这两个标记下
有什么想法可以使用XSLT实现吗?我是XSLT的新手,一整天都徒劳地尝试了...任何帮助将不胜感激。
我有一个看起来像这样的XML
<?xml version="1.0" encoding="UTF-8"?>
<ns0:PCN xmlns:ns0="abc">
<PCD>
<PC>
<TID>123456</TID>
<Sequence>1</Sequence>
<Type>M</Type>
</PC>
<PC>
<TID>123457</TID>
<Sequence>2</Sequence>
<Type>M</Type>
</PC>
</PCD>
</ns0:PCN>
我需要将其转换为如下形式:
<?xml version="1.0" encoding="UTF-8"?>
<ns0:Messages xmlns:ns0="xyz">
<ns0:Message1>
<ns0:PCN xmlns:ns0="abc">
<PCD>
<PC>
<TID>123456</TID>
<Sequence>1</Sequence>
<Type>M</Type>
</PC>
<PC>
<TID>123457</TID>
<Sequence>2</Sequence>
<Type>M</Type>
</PC>
</PCD>
</ns0:PCN>
</ns0:Message1>
</ns0:Messages>
请在下面尝试输入我的代码。这是我的第一次尝试,并且我在参考xslt的几个代码后编写了此代码。它没有给我想要的结果。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<!-- Identity transform -->
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="ns0:PCN">
<xsl:copy-of select="."/>
<ns0:Messages xmlns:ns0="xyz"/>
<ns0:Message1/>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:0)
简单地说:
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:template match="/">
<ns0:Messages xmlns:ns0="xyz">
<ns0:Message1>
<xsl:copy-of select="*"/>
</ns0:Message1>
</ns0:Messages>
</xsl:template>
演示:https://xsltfiddle.liberty-development.net/3NJ38ZK
</xsl:stylesheet>