【发布时间】:2015-11-20 00:33:16
【问题描述】:
好的,伙计们,又是一个 XSLT 问题。这种转换由 2 个动作组成,我在 2 个不同的 XSLT 中单独工作,但我终生无法将它们结合起来。
我正在尝试创建一个选择节点集并删除所有属性的身份转换。这是我正在使用的:
数据:
<?xml version="1.0" encoding="UTF-8"?>
<doc>
<meta>
<data>
<uselessMeta>SomeValue</uselessMeta>
</data>
</meta>
<dataWrapper>
<data xmlns:xfa="http://www.w3.org/1999/xhtml">
<neededData1 meanAttribute="NotWanted">TransformMe!</neededData1>
<neededData2 meanAttribute="NotWanted">TransformMe!</neededData2>
</data>
</dataWrapper>
</doc>
XSLT 1(身份转换):
<?xml version="1.0" encoding="UTF-8"?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0" >
<xsl:output omit-xml-declaration="no" method="xml" indent="no"/>
<xsl:template match="/">
<xsl:copy>
<xsl:copy-of select="//dataWrapper/data[text() != '']" />
</xsl:copy>
</xsl:template>
</xsl:transform>
XSLT 2:XSLT - remove all attributes
想要的结果:
<?xml version="1.0" encoding="UTF-8"?>
<data xmlns:xfa="http://www.w3.org/1999/xhtml">
<neededData1>TransformMe!</neededData1>
<neededData2>TransformMe!</neededData2>
</data>
问题似乎是我试图匹配根 (/) 或所有节点 (node()),但我不能同时使用 <xsl:copy-of /> 和 <xsl:apply-templates />。注意事项:
- Xalan (JDK 1.7)
- XSLT 1.0
非常感谢任何帮助!
【问题讨论】: