XSLのif/orステートメントがいくつかあり、言語に少し不慣れなサイトで作業していますが、どのように実行すればよいかわかりません。
[条件1が満たされている]または[条件2が満たされている]場合は[アクション]を実行します。それ以外の場合は[代替アクション]を実行します
誰かがいくつかの例を提供できますか?
前もって感謝します!
XSLTの条件は、単項「if」のいずれかです。
_<xsl:if test="some Boolean condition">
<!-- "if" stuff (there is no "else" here) -->
</xsl:if>
_
または他の言語のswitch文のように:
_<xsl:choose>
<xsl:when test="some Boolean condition">
<!-- "if" stuff -->
</xsl:when>
<xsl:otherwise>
<!-- "else" stuff -->
</xsl:otherwise>
</xsl:choose>
_
好きなだけ_<xsl:when>
_ sの余地があります。
すべてのXPath式はブール値 一連の規則に従って として評価できます。これらは(ほとんどの場合)「何かがある場合-> true
」/「何もない場合-> false
」に要約されます。
false
ですfalse
です(NaN
も同様です)false
ですfalse()
の結果はfalse
ですtrue
です(最も重要なのは、_'false'
_はtrue
であり、_'0'
_はtrue
です)編集:もちろん、プログラムフローを制御するためのより高度な(そしてより慣用的な)メソッドがあり、それはテンプレートマッチングです。
_<xsl:template match="node[contains(., 'some text')]">
<!-- output X -->
</xsl:template>
<xsl:template match="node[not(contains(., 'some text'))]">
<!-- output Y -->
</xsl:template>
<xsl:template match="/">
<xsl:apply-templates select=".//node" />
</xsl:template>
_
特定のノードに一致するテンプレートを作成し、_<xsl:apply-templates>
_を使用してXSLTプロセッサに適切なものを選択させると、複雑な_<xsl:if>
_または_<xsl:choose>
_構成を作成するよりも優れています。
上記のサンプルは、命令型スタイルと同等です。
_<xsl:template match="/">
<xsl:for-each select=".//node">
<xsl:choose>
<xsl:when test="contains(., 'some text')">
<!-- output X -->
</xsl:when>
<xsl:when test="not(contains(., 'some text'))">
<!-- output Y -->
</xsl:when>
<xsl:choose>
<xsl:for-each>
</xsl:template>
_
XSLTの初心者は使いやすさから後者の形式を選択する傾向がありますが、条件文を使用する代わりにテンプレートマッチングを調べることは価値があります。 (また 参照 。)
XSLには<xsl:if>
、しかしあなたはおそらく<xsl:choose>
/<xsl:when>
/<xsl:otherwise>
シーケンス。いくつかの例 here (下部近く)。多分:
<xsl:choose>
<xsl:when test="[conditionOne] or [conditionTwo]">
<!-- do [action] -->
</xsl:when>
<xsl:otherwise>
<!-- do [alternative action] -->
</xsl:otherwise>
</xsl:choose>
一般的なifステートメントの構文は
<xsl:if test="expression">
...some output if the expression is true...
</xsl:if>
XSLにelse条件があるかどうかはわかりませんが、trueかどうかをテストしてから、falseかどうか、またはその逆をテストできるはずです。
この場合、xsl:choose
を使用する必要があります。これは、if/elseとfinal elseを使用するようなものです。
<xsl:choose>
<xsl:when test="condition one or condition two">
<!-- action -->
</xsl:when>
<xsl:otherwise>
<!-- alternative action -->
</xsl:otherwise>
</xsl:choose>