xslt在节点集上应用模板
我必须使用XSL1.0,我有一个包含结果树片段的xslt变量。我想将模板样式应用于该变量xslt在节点集上应用模板,xslt,xslt-1.0,node-set,Xslt,Xslt 1.0,Node Set,我必须使用XSL1.0,我有一个包含结果树片段的xslt变量。我想将模板样式应用于该变量 <xsl:template match="item"> <p> <xsl:apply-templates /> </p> </xsl:template> <xsl:template match="html_embed"> <xsl:variable name="htmlContents
<xsl:template match="item">
<p>
<xsl:apply-templates />
</p>
</xsl:template>
<xsl:template match="html_embed">
<xsl:variable name="htmlContents">
<item>hello ian</item>
<item>how are you?</item>
</xsl:variable>
<xsl:choose>
<xsl:when test="function-available('msxsl:node-set')">
<xsl:apply-templates select="msxsl:node-set($htmlContents)/node()" />
</xsl:when>
<xsl:otherwise>
<p>node set not available</p>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
你好,伊恩
你好吗
节点集不可用
我正在使用node set函数将树片段转换为节点集,但它要么不起作用,要么找不到模板匹配,因为返回的只是一行文本,没有标记:
你好,你好吗
有没有关于如何转换项目节点的想法?我试过了,效果不错。我将
html\u-embed
更改为/
,以便能够在任何xml文档上应用您的模板,这就是我得到的:你好,ian你好吗?
。请注意,我使用VisualStudio运行此转换(因此处理器是XslCompiledTransform)。我模模糊糊地记得,本机xslt处理器的行为有点不同。我会尝试msxsl:node-set($htmlContents)//*
,然后msxsl:node-set($htmlContents)/*/*/*
,然后尝试用项替换最后一个*
,请编辑问题并提供完整的源XML文档(尽可能小,以重新处理问题)和完整的XSLT样式表(尽可能小,以便重新处理问题)。根据当前信息,我们只能猜测。我的猜测是,您的代码中有以下内容,您甚至没有向我们显示:
。如果是这种情况,只需删除此XSLT指令,如果没有其他问题,您可能会得到想要的结果。