1

私の XSLT には、この関数があります。これは、2 つの列のどちらかまたは両方にうまく一致します。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> 

私が知っていることの1つは、私がそうするなら

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

次に、(値の代わりに) フィールド自体の名前を使用して一致を試みます

私に何ができる?

4

1 に答える 1

1

ああ、何時間も何時間も経った後、ここにあります:

次の 2 行がキーです。

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

これは、2 つの異なる列を読み取り、値をいずれかに適用する関数全体です。

<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 に答える