目前,我有以下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
元素。首先,一个li
元素包含字段节点的fieldLabel。其他li
元素应该是init/fieldOption
属性等于value
文本的每个../../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>
这是行不通的,不幸的是,我对如何使它正常工作一无所知。有什么想法吗?
答案 0 :(得分:0)
使用current()
中的<xsl:if test="../../fieldOption[. = current()/@value]">
将外部上下文(init/fieldOption
)与谓词中的上下文进行比较。