gpt4 book ai didi

xml - xpath中xsl参数的用法

转载 作者:行者123 更新时间:2023-12-03 16:16:19 25 4
gpt4 key购买 nike

我将参数数组$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']/*"/>


我想通过XSLT将XML传输到VXML。
在Xpath中使用参数 $gen$gen2时无法选择该值

<xsl:value-of select>:
<filled namelist="MovieSummary">
<if cond="MovieSummary == '{$gen[1]}'">
<prompt>
<xsl:value-of select ="//genre[.='western']/../title"/>. <xsl:value-of select ="//genre[.='western']/../summary"/>
</prompt>
<xsl:for-each select="$gen[position()>1]">
<xsl:variable name="gen2"><xsl:value-of select="."/></xsl:variable>
<elseif cond="MovieSummary == '{$gen2}'"/>
<prompt>
<xsl:value-of select ="//genre[.='$gen2']/../title"/>. <xsl:value-of select ="//genre[.='$gen2']/../summary"/>
</prompt>
</xsl:for-each>
<else/>
</if>
</filled>


当我使用 $gen2代替“ Romance”或其他字符串时,无法选择该值。但是 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>


我试过了:

select ="//genre[.=$gen2]/../summary"; 
select ="//genre[.={$gen2}]/../summary";
select ="//genre[.='{$gen2}']/../summary"


全部失败。

最佳答案

说明:

<xsl:for-each select="$gen[position()>1]">


将您置于 $gen的上下文中。在这种情况下,表达式为:

<xsl:value-of select ="//genre[.='$gen2']/../title"/>


不选择任何内容,因为 //从当前文档的根开始-但是 genre在另一个文档中。

您需要将上下文更改回已处理的XML文档,以便寻址其中的节点。

注意:在XSLT 2.0中, key()函数可以直接选择另一个文档中的节点,而无需更改整体上下文。

关于xml - xpath中xsl参数的用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36145137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com