0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

XSLT でxmlからxml作成 変数宣言の方法

Posted at

前回の記事の続き今回は変数宣言について
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文のブロックを作らないで済む。

条件によって出力する部分を変数ないで分けずに出力時に分けた場合
同じ処理を複数記述することになってしまうので処理が見づらくなる可能性がある。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?