1

在我的 XSLT 中,我有这个函数,它成功地匹配了一个/或/和两列。FieldRef完美匹配。

我的问题是它$currentValue似乎永远不等于我正在测试的内容(我正在测试的内容似乎是一个空白字符串)。

我在哪里错了?

<!-- Convert the Fields into a status icons    -->
<xsl:template match="FieldRef[@Name='YesNo']|FieldRef[@Name='TrueFalse']" mode="body">
    <xsl:param name="thisNode" select="." />
    <xsl:variable name="currentValue" select="$thisNode/@*[name()=current()/@Name]" />

    <xsl:choose>
        <xsl:when test="$currentValue='Yes'">
            <span class="yesno yes"><xsl:value-of select="$currentValue" /></span>
        </xsl:when>
        <xsl:when test="$currentValue='No'">
            <span class="yesno no"><xsl:value-of select="$currentValue" /></span>
        </xsl:when>
        <xsl:when test="$currentValue='True'">
            <span class="yesno yes"><xsl:value-of select="$currentValue" /></span>
        </xsl:when>
        <xsl:when test="$currentValue='False'">
            <span class="yesno no"><xsl:value-of select="$currentValue" /></span>
        </xsl:when>     
        <xsl:otherwise>
            <span class="yesnoN"><xsl:value-of select="$currentValue" /></span>
        </xsl:otherwise>
    </xsl:choose>

</xsl:template> 

我知道的一件事是,如果我这样做

<xsl:variable name="thisName" select="./@Name" /> select="./@Name" />

然后它将尝试使用字段本身的名称(而不是其值)进行匹配。

我能做些什么?

4

1 回答 1

1

啊,几个小时后,这里是:

这两行是关键:

<xsl:param name="thisNode" select="."/>
<xsl:variable name="currentValue" select="$thisNode/@*[name()=current()/@Name]" />

这是整个函数,它读取两个不同的列并将值应用于任一列:

<xsl:template match="FieldRef[@Name='YesNo1']|FieldRef[@Name='YesNo2']" mode="body">
    <xsl:param name="thisNode" select="."/>

    <xsl:variable name="currentValue" select="$thisNode/@*[name()=current()/@Name]" />
    <xsl:variable name="yesvalue">Yes</xsl:variable>
    <xsl:variable name="novalue">No</xsl:variable>

    <xsl:choose>
        <xsl:when test="contains($currentValue, $yesvalue)">
            <span class="yesno yes"><xsl:value-of select="$currentValue" /></span>
        </xsl:when>
        <xsl:when test="contains($currentValue, $novalue)">
            <span class="yesno no"><xsl:value-of select="$currentValue" /></span>
        </xsl:when>
    <xsl:otherwise>
            <span class="yesnoN"><xsl:value-of select="$currentValue" /></span>
        </xsl:otherwise>
    </xsl:choose>

</xsl:template> 

这里还有一些其他匹配多个匹配字段的示例

于 2013-08-04T04:15:45.027 回答