【发布时间】:2013-12-20 14:43:03
【问题描述】:
这是我用于转换的 XSL。
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes" />
<xsl:strip-space elements="*" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="EL3">
<te>ABC</te>
</xsl:template>
这是我要转换的 Source-XML。
<EL1 xmlns="http://anyurl.com" language="2">
<EL2>
<set1>
<value1>12</value1>
<value2>34</value2>
<value3>45</value3>
</set1>
</EL2>
<EL2>
<set1>
<value1>AB</value1>
<value2>CD</value2>
<value3>EF</value3>
<EL3>
<value1>AB</value1>
<value2>CD</value2>
<value3>EF</value3>
</EL3>
</set1>
</EL2>
这是转换后的Target-XML。
<EL1 xmlns="http://anyurl.com" language="2">
<EL2>
<set1>
<value1>12</value1>
<value2>34</value2>
<value3>45</value3>
</set1>
</EL2>
<EL2>
<set1>
<value1>AB</value1>
<value2>CD</value2>
<value3>EF</value3>
<EL3>
<value1>AB</value1>
<value2>CD</value2>
<value3>EF</value3>
</EL3>
</set1>
</EL2>
匹配对命名空间不起作用。如果我从 Source-XML 中删除 xmlns="http://anyurl.com" 我会得到我想要的结果。问题是我从外部系统获取 Source-XML,而我之前无法更改 Source-XML。如何编辑 XSL 以获得这样的等待结果?
<EL1 language="2">
<EL2>
<set1>
<value1>12</value1>
<value2>34</value2>
<value3>45</value3>
</set1>
</EL2>
<EL2>
<set1>
<value1>AB</value1>
<value2>CD</value2>
<value3>EF</value3>
<te>ABC</te>
</set1>
</EL2>
</EL1>
【问题讨论】:
标签: templates xslt namespaces