【发布时间】:2020-01-18 00:59:29
【问题描述】:
我有一个源 xml,我想根据路径进行选择,即来自第二个或第三个 xml 节点。我尝试过使用 Some XSLT 代码,但没有得到准确的输出。
输入 XML:
<?xml version="1.0" encoding="UTF-8"?>
<ns0:Header xmlns:ns0="http://xyz987.com">
<Main>
<Parent2>
<Parent2>
<?xml version="1.0" encoding="UTF-8"?>
<Child1>
<GChild1>12</GChild1>
<Child2>
<GChild2>12</GChild2>
</Child2>
</Child1>
</Parent2>
</Parent2>
</Main>
</ns0:Header>
目标 XML:
<?xml version="1.0" encoding="UTF-8"?>
<Child1>
<GChild1>12</GChild1>
<Child2>
<GChild2>12</GChild2>
</Child2>
</Child1>
尝试过 XSLT 代码:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" omit-xml-declaration="yes" encoding="UTF-8" indent="yes" />
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:apply-templates select="/Header/Parent2/Parent2"/>
</xsl:template>
<xsl:template match="@*">
<xsl:copy>
<xsl:apply-templates select="@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*">
<xsl:element name="{local-name()}">
<xsl:copy-of select="@*" />
<xsl:apply-templates />
</xsl:element>
</xsl:template>
</xsl:transform>
【问题讨论】:
-
这真的是你的 XML,因为在 XML 文档中间有一个
<?xml version="1.0" encoding="UTF-8"?>声明是无效的。它只能出现在第一行。或者,也许在您真正的 XML 中,它被包装在 CDATA 部分中,这将成为一个非常不同的问题!谢谢! -
您的
Header元素在命名空间中,而您的样式表正在寻找没有命名空间中的Header元素。,