XPath:检查每个值的父同级值是否相等

  • 本文关键字:是否 XPath xslt xpath xslt-1.0
  • 更新时间 :
  • 英文 :


目前我有以下XML。在这个例子中,我使用了4个fieldOptions,但它增加到了50多个。

<filterItem>
<field name="incidentState" fieldLabel="Status" type="filterType" mandatory="false">
<fieldOption><![CDATA[0]]></fieldOption>
<fieldOption><![CDATA[1]]></fieldOption>
<fieldOption><![CDATA[4]]></fieldOption>
<init>
<fieldOption value="0">Geen</fieldOption>
<fieldOption value="2">Registratie</fieldOption>
<fieldOption value="3">Analyse</fieldOption>
<fieldOption value="4">Plannen</fieldOption>
<init> </init>
</init>
</field>
</filterItem>

在这种情况下,我希望输出创建3个li元素。首先是包含字段节点的fieldLabel的li元素。其他li元素应该是value属性等于../../fieldOption文本的每个init/fieldOption。由于一个例子使它更清晰,这就是我想要的输出:

<li>Status</li>
<li>Geen</li>
<li>Plannen</li>

我使用以下XSLT:

<xsl:template match="filterItem">
<ul id="filter_{field/@name}">
<li>
<xsl:value-of select="field/@fieldLabel"/>
</li>
<xsl:for-each select="field/init/fieldOption">
<xsl:if test="../../fieldOption[. = @value]">
<li>
<xsl:value-of select="." />
</li>
</xsl:if>
</xsl:for-each>
</ul>
</xsl:template>

这不起作用,不幸的是,我不知道如何才能让它发挥作用。有什么想法吗?

<xsl:if test="../../fieldOption[. = current()/@value]">中使用current()将外部上下文(init/fieldOption(与谓词中的上下文进行比较。

相关内容

  • 没有找到相关文章

最新更新