<application xmlns="http://someurl">
<Detail1/>
<Detail2>
<Property/>
</Detail2>
</application>
我正在尝试将xmlns:xs="http://www.w3.org/2001/XMLSchema"
和xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
添加到“应用程序根节点”。我试图在stackoverflow上关注很多链接,但似乎在XSLT 1.0中没有任何工作
有人可以帮我这个。
答案 0 :(得分:3)
由于XSLT 1.0在XSLT 2.0中没有<xsl:namespace>
指令,我使用的技术是从样式表中复制这些节点:
输入:
t:\ftemp>type ns.xml
<application xmlns="http://someurl">
<Detail1/>
<Detail2>
<Property/>
</Detail2>
</application>
执行:
t:\ftemp>call xslt ns.xml ns.xsl
<?xml version="1.0" encoding="utf-8"?><application xmlns="http://someurl" xmlns:
xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchem
a-instance">
<Detail1/>
<Detail2>
<Property/>
</Detail2>
</application>
样式表:
t:\ftemp>type ns.xsl
<?xml version="1.0" encoding="US-ASCII"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="1.0">
<xsl:template match="/*">
<xsl:copy>
<xsl:copy-of select="document('')/*/namespace::xs"/>
<xsl:copy-of select="document('')/*/namespace::xsi"/>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="@*|node()"><!--identity for all other nodes-->
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
t:\ftemp>