带有无效转换的 xslt 1.0 节点集错误
xslt 1.0 node-set error with Invalid conversion
我对 1.0 版的 xslt 有疑问。
我的节点看起来像这样
...
<Garage>
<car>
<color>red</color>
<color>yellow</color>
<wheel>left</wheel>
<car/>
</Garage>
...
然后我将子节点保存到变量中
<xsl:variable name="entries">
<xsl:if test="$element/Garage/car">
<xsl:value-of select="$element/Garage/car"/>
</xsl:if>
</xsl:variable>
当我在模板中使用这个变量时
<xsl:template name="entriesToString">
<xsl:param name="table"/>
<xsl:for-each select="$table/color">
<xsl:if test="position() = last()">
<xsl:value-of select="concat(current(),'/')"/>
</xsl:if>
<xsl:value-of select="concat(current(),',')"/>
</xsl:for-each>
</xsl:template>
我收到这样的错误
ERROR: 'Invalid conversion from 'com.sun.org.apache.xalan.internal.xsltc.dom.SimpleResultTreeImpl' to 'node-set'.'
xslt 中的节点迭代有问题吗?
在 XSLT 1.0 中,xsl:value-of
指令创建一个 文本节点 ,其值为 first[=24] 的 string-value =] 所选节点集中的节点。
在您的示例中,$entries
变量是一个 result-tree-fragment,其中包含文本 "red yellow left"
(有或没有一些白色 space 字符)。为了使用 xsl:for-each
指令处理 result-tree-fragment,您必须首先使用特定于处理器的扩展函数将其转换为节点集。无论如何,在这种情况下它对您没有任何好处,因为 - 如上所述 - 它包含一个 单个 文本节点。
使用<xsl:variable name="entries" select="$element/Garage/car"/>
可能就足够了,这样你就可以在XPath/XSLT1中设置一个节点,而不需要使用扩展函数。如果路径 $element/Garage/car
没有 select 任何东西,则节点集为空,它包含来自 $element
的 car
个元素节点(如果它们存在),即路径 $element/Garage/car
select有点东西。
我对 1.0 版的 xslt 有疑问。 我的节点看起来像这样
...
<Garage>
<car>
<color>red</color>
<color>yellow</color>
<wheel>left</wheel>
<car/>
</Garage>
...
然后我将子节点保存到变量中
<xsl:variable name="entries">
<xsl:if test="$element/Garage/car">
<xsl:value-of select="$element/Garage/car"/>
</xsl:if>
</xsl:variable>
当我在模板中使用这个变量时
<xsl:template name="entriesToString">
<xsl:param name="table"/>
<xsl:for-each select="$table/color">
<xsl:if test="position() = last()">
<xsl:value-of select="concat(current(),'/')"/>
</xsl:if>
<xsl:value-of select="concat(current(),',')"/>
</xsl:for-each>
</xsl:template>
我收到这样的错误
ERROR: 'Invalid conversion from 'com.sun.org.apache.xalan.internal.xsltc.dom.SimpleResultTreeImpl' to 'node-set'.'
xslt 中的节点迭代有问题吗?
在 XSLT 1.0 中,xsl:value-of
指令创建一个 文本节点 ,其值为 first[=24] 的 string-value =] 所选节点集中的节点。
在您的示例中,$entries
变量是一个 result-tree-fragment,其中包含文本 "red yellow left"
(有或没有一些白色 space 字符)。为了使用 xsl:for-each
指令处理 result-tree-fragment,您必须首先使用特定于处理器的扩展函数将其转换为节点集。无论如何,在这种情况下它对您没有任何好处,因为 - 如上所述 - 它包含一个 单个 文本节点。
使用<xsl:variable name="entries" select="$element/Garage/car"/>
可能就足够了,这样你就可以在XPath/XSLT1中设置一个节点,而不需要使用扩展函数。如果路径 $element/Garage/car
没有 select 任何东西,则节点集为空,它包含来自 $element
的 car
个元素节点(如果它们存在),即路径 $element/Garage/car
select有点东西。