谁能给我解释一下?(使用最新的 libxslt):
<a><xsl:copy-of select="(@attrib|exsl:node-set(0))"/></a>
<b><xsl:copy-of select="(@attrib|exsl:node-set(0))[position()=1]"/></b>
<x><xsl:copy-of select="(@attrib|exsl:node-set(0))[1]"/></x>
<xsl:variable name="value" select="@attrib"/>
<y><xsl:copy-of select="($value|exsl:node-set(0))[1]"/></y>
结果(@attrib = 1 在当前节点):
<a attrib="1">0</a>
<b attrib="1"/>
<x>0</x>
<y attrib="1"/>
<a>
并<b>
表现出预期的行为。
<x>
恕我直言不正确。
但是为什么要放入@attrib
一个变量“修复”它<y>
呢?
@attrib is
顺便说一句:不存在时一切都是正确的。这里使用的副本用于调试;原来的用法是将 XPath 结果转换为数字,缺少的属性不会导致 NaN,而是某个默认值。