我正在研究 XSLT,我必须在两个 xml 之间遍历并将整个 xml 复制到任何给定标签下。
主要 XML:
<Content xmlns="some name space">
<message>abcd/<message>
<group xlink:href="Some link"></group>
</Content>
链接的 XML:
<Content xmlns="linked xml name space">
<text>
<strong xmlns="http://www.w3.org/1999/xhtml">Hello</strong>
<br xmlns="http://www.w3.org/1999/xhtml"></br>
1. Hi
<br xmlns="http://www.w3.org/1999/xhtml"></br>
2. Hi all
<br xmlns="http://www.w3.org/1999/xhtml"></br>
3. Bye
</text>
</Content>
我想在给定的 xml 元素下获取整个 xml 结构。
所需的输出。
<AAA>
<msg>abcd</msg>
<data>
<strong xmlns="http://www.w3.org/1999/xhtml">Hello</strong>
<br xmlns="http://www.w3.org/1999/xhtml"></br>
1. Hi
<br xmlns="http://www.w3.org/1999/xhtml"></br>
2. Hi all
<br xmlns="http://www.w3.org/1999/xhtml"></br>
3. Bye
</data>
</AAA>
XSLT 写道:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:simple="some name space" xmlns:link="linked xml name space" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xh="http://www.w3.org/1999/xhtml">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes" />
<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="simple:Content">
<AAA>
<msg>
<xsl:apply-templates select="simple:key" />
</msg>
<xsl:variable name="LINKED_COMPONENT" select="simple:group/document(@xlink:href)" />
<data>
<xsl:apply-templates select="$LINKED_COMPONENT//link:text"/>
</data>
</AAA>
</xsl:template>
<xsl:template match="*">
<xsl:copy>
<!-- descend -->
<xsl:apply-templates />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
输出得到:
<AAA>
<msg>abcd</msg>
<data>
<text xmlns="linked xml name space">
<strong xmlns="http://www.w3.org/1999/xhtml">Hello</strong>
<br xmlns="http://www.w3.org/1999/xhtml"></br>
1. Hi
<br xmlns="http://www.w3.org/1999/xhtml"></br>
2. Hi all
<br xmlns="http://www.w3.org/1999/xhtml"></br>
3. Bye
</text>
</data>
</AAA>
“文本”标签也复制到这里。我不想复制那些标签。
任何人都可以帮我纠正它。