我有一些带有标题的原始文件,我想为另一个标题更改(存储在其他文件中):
原始档案:
<doc1>
<header>
<a>aaaa</a>
<b>bbbb</b>
</header>
<content>
<z>zzzzzzzzzzzzz</z>
</content>
</doc1>
新标题(在文件中):
<header>
<c>cccc</c>
</header>
预期结果:
<doc1>
<header>
<c>cccc</c>
</header>
<content>
<z>zzzzzzzzzzzzz</z>
</content>
</doc1>
提前致谢!
答案 0 :(得分:1)
如果要使用外部文档,则需要使用xslt文档函数。
例如/
http://www.ibm.com/developerworks/xml/library/x-tipcombxslt/ http://www.xml.com/pub/a/2002/03/06/xslt.html
答案 1 :(得分:1)
此转换(仅限演示目的,新标头嵌入在XSLT样式表中):
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:my="my:my">
<xsl:output omit-xml-declaration="yes"/>
<my:header>
<header>
<c>cccc</c>
</header>
</my:header>
<xsl:variable name="vHeaderDoc" select="document('')/*/my:header"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="header">
<xsl:copy-of select="$vHeaderDoc/*"/>
</xsl:template>
</xsl:stylesheet>
应用于提供的XML文档:
<doc1>
<header>
<a>aaaa</a>
<b>bbbb</b>
</header>
<content>
<z>zzzzzzzzzzzzz</z>
</content>
</doc1>
生成想要的正确结果:
<doc1>
<header xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:my="my:my">
<c>cccc</c>
</header>
<content>
<z>zzzzzzzzzzzzz</z>
</content>
</doc1>
在真实的案例中,您将拥有:
<xsl:variable name="vHeaderDoc" select="document('Header.xml')"/>
并且header
文档将位于名为'Header.xml'
的文件中,该文件与XSLT样式表位于同一目录中(如果在另一个目录中,则相应地更改文档URL)。
在实际情况中,xsl:
元素上不会复制header
命名空间节点。
请注意:使用标准XSLT函数 document()
。