前回の記事の続き今回は変数宣言について
https://qiita.com/snowp/items/9b34bd3b8f565db29132
変数宣言
以下のように xsl:variableで宣言を行う。
<xsl:variable name="price" select="500"/>
nameでのちに参照するときの名称を、selectで値を設定する。
変換もとの値をxpathなどで取得できるならxpathを指定する。
<xsl:variable name="price" select="/aaa/bbb/rc[2]/text()"/>
select内にはsumやconcatなどの関数を記載することができるので以下のように合計値の出力をさせることもできる。
<!-- 数値の合算 -->
<xsl:variable name="price" select="500"/>
<xsl:variable name="tax" select="40"/>
<xsl:variable name="totalPrice" select="sum($price,$tax)"/>
<!-- 文字列の結合 -->
<xsl:variable name="firstname" select="花子"/>
<xsl:variable name="lastname" select="山田"/>
<xsl:variable name="fullName" select="contain($firstname,$lastname)"/>
変数を宣言するときに中で条件を分岐させることもできる。
<xsl:variable name="signatureComment">
<xsl:choose>
<xsl:when test="$totalPrice<100000">
<xsl:value-of select="サイン不要"/>
</xsl:when>
<xsl:when test="$totalPrice<500000">
<xsl:value-of select="サイン必要"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="責任者の確認要"/>
</xsl:otherwise >
</xsl:choose>
</xsl:variable>
条件に応じて処理を分けたり出力するときにあくまで出力する内容が変わるだけの時は、
変数宣言時に中で分岐を行うことで後続の処理でif文のブロックを作らないで済む。
条件によって出力する部分を変数ないで分けずに出力時に分けた場合
同じ処理を複数記述することになってしまうので処理が見づらくなる可能性がある。