我以前注意到了这一点,但不记得我是如何得到它的。 EXSLT似乎在节点设置XML字符串时剥离了属性。下面是一个人为的例子(为了简洁起见,我已经将XSLT样式表标签删除了,但EXSLT的公共库正在被加载到名称空间exsl
中)。EXSLT节点集剥离属性?
XML
<xml>
<node />
<node />
<node />
</xml>
XSLT:
<xsl:template match="/">
<xsl:variable name='nodeset' select='exsl:node-set(xml/node)' />
<xsl:copy-of select='$nodeset' />
</xsl:template>
<xsl:template match='node'><node foo='bar' /></xsl:template>
结果
<node/><node/><node/>
Demo Playground(见OUTP ut 来源)
傻我。这是漫长的一天。我明确表示要应用这些模板 - 在我的实际代码中,我这样做了,但在这个演示中,我非常设法避免这个关键线。我想我的大脑在晚上收拾好了。我很清楚节点集的需求情况,这只是我做了一个非常愚蠢的监督。谢谢。 – Utkanos
对于你的示例,你不需要'exsl:node-set',在执行' xsl:variable>'会正常工作。只要你只想用' '复制结果树片段,你也不需要'exsl:node-set'函数。仅需要选择结果树片段中的节点,例如' '。 –
再次感谢 - 不知道结果树片段。 – Utkanos