-1

まず、XSLTは初めてです。私はSharepointリストを使用していますが、特定の四半期にデータがある場合に表示するためのリンクを取得する必要があります。特定の四半期にデータがない場合は、そのように表示するラベルが必要です。

つまり、特定の年の同じ月のデータごとにforeachループを作成しました.xsltで変数を再評価できないことはわかっていますが、やりたいことを実行する方法がわかりません。これが私のコードのサンプルです。私はSharepointを使用しているので、XMLにアクセスできません。:/

<xsl:variable name="DataQ1" select="'False'"/>
<xsl:variable name="DataQ2" select="'False'"/>
<xsl:variable name="DataQ3" select="'False'"/>
<xsl:variable name="DataQ4" select="'False'"/>
<xsl:for-each select="../Row[generate-id()=generate-id(key('MonthKey', substring(@Date,6,7))[substring('@Date',1,4) = $varYear)][1])]">
    <xsl:variable name="currentMonth" select="number(substring(@Date,6,7))"/>
    <xsl:choose>
        <xsl:when test="$currentMonth &gt;= 1 and $currentMonth $lt;=4">
            <!--set $DataQ1 to true-->
        </xsl:when>
        <xsl:when test="$currentMonth &gt;= 4 and $currentMonth $lt;=7">
            <!--set $DataQ2 to true-->
        </xsl:when>
        <xsl:when test="$currentMonth &gt;= 7 and $currentMonth $lt;=10">
            <!--set $DataQ3 to true-->
        </xsl:when>
        <xsl:otherwise>
            <!--set $DataQ4 to true-->
        </xsl:otherwise>
    </xsl:choose>
</xsl:for-each>
<div>
    <xsl:choose>
        <xsl:when test="$DataQ1= 'True'">
            <a>
                <xsl:attribute name="href">
                    <xsl:value-of select="www.example.come"/>
                </xsl:attribute>
                <xsl:value-of select="'LinkToDataofQ1'"/>
            </a>
        </xsl:when>
        <xsl:otherwise>
            <xsl:value-of select="'There's no data for this quarter.'"/>
        </xsl:otherwise>
    </xsl:choose>   
</div>
4

1 に答える 1

1

サンプルコードで関数を使用してkeyいますが、キーの宣言を投稿していません。しかし、私はあなたが次のコードであなたが望むことを達成できると思います:

<div>
    <xsl:choose>
        <xsl:when test="../Row[substring(@Date, 1, 4) = $varYear and substring(@Date, 6, 2) &gt;= 1 and substring(@Date, 6, 2) &lt; 4]">
            <a href="http://www.example.com/">LinkToDataofQ1</a>
        </xsl:when>
        <xsl:otherwise>There's no data for this quarter.</xsl:otherwise>
    </xsl:choose>   
</div>

その他の注意事項:

  • Q1のテストでは、次のように記述しました$currentMonth <= 4。私はあなたが欲しいものはだと思います$currentMonth < 4
  • @Date使用した月を抽出するにはsubstring(@Date, 6, 7)。の3番目の引数substringは、終了インデックスではなく、部分文字列の長さです。だからあなたはおそらく書くべきでしょうsubstring(@Date, 6, 2)
  • の代わりに<xsl:value-of select="'string'"/>、単にと書くことができますstring
于 2013-03-26T20:47:04.667 に答える