0

変数$transformed_dateが毎回評価されるかどうか、またはこの変数が変数の影響 (C、Java など) と同じくらい良いかどうかを知る必要があります。同じことを何度も再評価しないようにしたい。

<xsl:variable name="transformed_date" select="adjust-dateTime-to-timezone(xs:dateTime(concat(substring ($original_date, 1, 4),'-',substring ($original_date, 5, 2),'-',substring ($original_date, 7, 2),'T',substring ($original_date, 9, 2),':',substring ($original_date, 11, 2),':',substring ($original_date, 13, 2),'-00:00')), xs:dayTimeDuration('-PT5H'))"/>

<xsl:choose>
    <xsl:when test="substring (xs:string($transformed_date), 6, 2) = '01'">
        <fo:inline>
            Jan.
        </fo:inline>
    </xsl:when>
    <xsl:when test="substring (xs:string($transformed_date), 6, 2) = '02'">
        <fo:inline>
            Feb.
        </fo:inline>
    </xsl:when>
...
4

2 に答える 2

2

xslt の変数は 1 回だけ設定できます。一度設定すると変更できません。

于 2012-11-28T21:23:44.070 に答える
2

おそらく、変数は 1 回だけ評価されると想定できます。ただし、プロセッサは別の方法で処理することを選択する場合があります。最適化は自由です。たとえば、変数が多くのスペースを占有していて、プロセッサのメモリが不足している場合、プロセッサはスペースを解放し、次に変数が参照されたときに変数を再評価する可能性があります。または、プロセッサが評価が非常に安価であると判断した場合 (たとえば、select="23" と指定した場合)、プロセッサは、それが最善の戦略であると判断した場合、参照されるたびに評価することを決定できます。

于 2012-11-29T00:16:41.670 に答える