Xml xpath中xsl参数的用法
我将参数数组Xml xpath中xsl参数的用法,xml,xslt,xpath,vxml,Xml,Xslt,Xpath,Vxml,我将参数数组$gen定义为: <xsl:variable name="inline-array"> <item>western</item> <item>Romance</item> <item>Adventure</item> <item>Drama</item> <item>Comedy</item> <it
$gen
定义为:
<xsl:variable name="inline-array">
<item>western</item>
<item>Romance</item>
<item>Adventure</item>
<item>Drama</item>
<item>Comedy</item>
<item>Horror</item>
<item>Action</item>
</xsl:variable>
<xsl:param name="gen" select="document('')/*/xsl:variable[@name='inline-array']/*"/>
当我使用$gen2
而不是“浪漫”或其他字符串时,它无法选择值。但是cond=“MovieSummary=='{$gen[1]}'”
运行良好。
它只能生成以下内容:
<if cond="MovieSummary == 'western'">`enter code here`
<prompt>Range Feud.
Clint Turner is arrested for the murder of his girlfriend Judy's
father, a rival rancher who was an enemy of his own father.
</prompt>
<elseif cond="MovieSummary == 'Romance'"/>
<prompt>. </prompt>
<else/>
</if>
全部失败。指令:
<xsl:for-each select="$gen[position()>1]">
不选择任何内容,因为/
从当前文档的根开始,但类型
位于另一个文档中
您需要将上下文更改回已处理的XML文档,以便处理其中的节点
注意:在XSLT 2.0中,
key()
函数可以直接选择另一个文档中的节点,而不改变整个上下文。您发布的大部分代码都不可见。对其进行格式化,使其可见。我不确定您是否提供了足够的数据来处理。请发布一个完整的、可复制的示例(包括输入),并说明是否使用XSLT 1.0或2.0。@Mayco除非您发布一个.@michael.hor257k:好答案,否则我无法进一步帮助您。能否提供一个将上下文更改回当前/已处理文档的示例?我的意思是:将当前处理的节点的上下文从文档(“”)/…
更改回当前文档的方法?@zx485更改上下文的方法只有两种。在OP提供输入示例后,我将提供一个示例。我将指令更改为****并更改提示上下文。它起作用了!非常感谢。
select ="//genre[.=$gen2]/../summary";
select ="//genre[.={$gen2}]/../summary";
select ="//genre[.='{$gen2}']/../summary"
<xsl:for-each select="$gen[position()>1]">
<xsl:value-of select ="//genre[.='$gen2']/../title"/>