XSLT 1.0 の関数一覧

# XSLT 1.0 functions

|category|description|
|---|---|
|[String]|文字列|
|[Number]|数値|
|[Boolean]|論理値|
|[Node]|ノード|
|[XSLT]|その他|

---

## String

<span style="color:blue">文字列</span>

|function|description|
|---|---|
|[string]|文字列への変換|
|[concat]|連結|
|[starts-with]|先頭文字列判断|
|[contains]|指定文字が含まれるか|
|[substring-before]|部分文字列|
|[substring-after]|部分文字列|
|[substring]|部分文字列|
|[string-length]|文字数|
|[normalize-space]|空白除去|
|[translate]|置換|

### string

<span style="color:green">オブジェクトを`string`型に変換します。</span>

```C
string string(object)
// string(3.14) ⇒ '3.14'
```

### concat

<span style="color:green">文字列を連結します。</span>

```C
string concat(string, ...)
// concat('x', 'y', 'z') ⇒ 'xyz'
```

### starts-with

<span style="color:green">指定した文字列で始まっているか判断します。</span>

```C
boolean starts-with(string, string)
// starts-with('xyz', 'xy') ⇒ true
// starts-with('xyz', 'z') ⇒ false
```

### contains

<span style="color:green">指定した文字列が存在するか判断します。</span>

```C
boolean contains(string, string)
// contains('xyz', 'z') ⇒ true
```

### substring-before

<span style="color:green">指定した文字列より前の文字列を取得します。</span>

```C
string substring-before(string, string)
// substring-before('1999/12/31', '/') ⇒ '1999'
```

### substring-after

<span style="color:green">指定した文字列より後の文字列を取得します。</span>

```C
string substring-after(string, string)
// substring-after('1999/12/31', '/') ⇒ '12/31'
```

### substring

<span style="color:green">部分文字列を取得します。</span>

```C
string substring(string, number, number)
// substring('1999/12/31', 1, 4) ⇒ '1999'
```

### string-length

<span style="color:green">文字数を取得します。</span>

```C
number string-length(string)
// string-length('1999/12/31') ⇒ 10
```

### normalize-space

<span style="color:green">前後の空白を除去し、連続する空白を１つにします。</span>

```C
string normalize-space(string)
// normalize-space(' dummy  text   ') ⇒ 'dummy text'
```

### translate

<span style="color:green">指定した文字を置換します。</span>

```C
string translate(string, string, string)
// translate('test', 'st', 'ST') ⇒ 'TeST'
```

---

## Number

<span style="color:blue">数値</span>

|function|description|
|---|---|
|[number]|数値への変換|
|[sum]|合計|
|[floor]|切り下げ|
|[ceiling]|切り上げ|
|[round]|丸め|

### number

<span style="color:green">オブジェクトを`number`型に変換します。</span>

```C
number number(object)
// number(' -3.14') ⇒ -3.14
```

### sum

<span style="color:green">合計値を取得します。</span>

```C
number sum(node-set)
// sum(//value) ⇒ 30
```
```XML
<sample>
  <value>10</value>
  <value>20</value>
</sample>
```

### floor

<span style="color:green">指定した数値より小さい最大の整数を取得します。</span>

```C
number floor(number)
// floor(3.14) ⇒ 3
// floor(-3.14) ⇒ -4
```

### ceiling

<span style="color:green">指定した数値より大きい最小の整数を取得します。</span>

```C
number ceiling(number)
// ceiling(3.14) ⇒ 4
// ceiling(-3.14) ⇒ -3
```

### round

<span style="color:green">四捨五入します。</span>

```C
number round(number)
// round(1.5) ⇒ 2
```

---

## Boolean

<span style="color:blue">論理値</span>

|function|description|
|---|---|
|[boolean]|論理値への変換|
|[not]|否定|
|[true]|真値|
|[false]|偽値|
|[lang]|言語判定|

### boolean

<span style="color:green">オブジェクトを`boolean`型に変換します。</span>

```C
boolean boolean(object)
```

### not

<span style="color:green">論理値を反転します。</span>

```C
boolean not(boolean)
// not(true) ⇒ false
// not(false) ⇒ true
```

### true

<span style="color:green">真値を取得します。</span>

```C
boolean true()
// true() ⇒ true
```

### false

<span style="color:green">偽値を取得します。</span>

```C
boolean false()
// false() ⇒ false
```

### lang

<span style="color:green">`xml:lang`属性で指定した言語かどうかを判断します。</span>

```C
boolean lang(string)
// lang('en') ⇒ true
// lang('ja') ⇒ false
```
```XML
<div xml:lan="en">This is a pen.</div>
```

---

## Node

<span style="color:blue">ノード</span>

|function|description|
|---|---|
|[last]|最後の子要素|
|[position]|位置|
|[count]|要素数|
|[id]||
|[local-name]||
|[namespace-uri]||
|[name]||

### last

<span style="color:green">現在ノードの兄弟ノードから、最後のノード番号を取得します。</span>

```C
number last()
```

### position

<span style="color:green">現在ノードの位置を取得します。</span>

```C
number position()
```

### count

<span style="color:green">ノード数を取得します。</span>

```C
number count(node-set)
```

### id

<span style="color:green">指定したＩＤのノードの、ノードセットを取得します。</span>

```C
node-set id(object)
```

### local-name

<span style="color:green">`local`値（`namespace`を除外したもの）を取得します。</span>

```C
string local-name(node-set)
```

### namespace-uri

<span style="color:green">`namespace`が定義されている`URI`を取得します。</span>

```C
string namespace-uri(node-set)
```

### name

<span style="color:green">現在ノードの名前を取得します。</span>

```C
string name(node-set)
```

---

## XSLT

<span style="color:blue">その他</span>

|function|description|
|---|---|
|[document]|ルート|
|[key]|キー|
|[format-number]|書式化|
|[current]|現在ノード|
|[unparsed-entity-uri]||
|[generate-id]|ＩＤ生成|
|[system-property]||
|[element-available]||
|[function-available]||

### document

<span style="color:green">ルートを取得します。</span>

```C
node-set document(object, node-set)
```

### key

<span style="color:green">`<xsl:key>`要素で指定されたインデックスを使用して、ドキュメントからノードセットを取得します。</span>

```C
node-set key(string, object)
```

### format-number

<span style="color:green">書式化した文字列を取得します。</span>

```C
string format-number(number, string, string)
// format-number(123456789, '#億####万####') ⇒ '1億2345万6789'
```

### current

<span style="color:green">現在ノードを取得します。</span>

```C
node-set current()
```

### unparsed-entity-uri

<span style="color:green">`<!ENTITY>`タグで指定されている文字列を取得します。</span>

```C
string unparsed-entity-uri(string)
```

### generate-id

<span style="color:green">固有の値を生成します。</span>

```C
string generate-id(node-set)
```

### system-property

<span style="color:green">`XSLT`プロセッサ固有の値を取得します。</span>

```C
object system-property(string)
// system-property('xsl:version') ⇒ '1.0'
```

### element-available

<span style="color:green">指定した要素が`XSLT`プロセッサで処理できるかどうかを判断します。</span>

```C
boolean element-available(string)
// element-available('xsl:value-of') ⇒ true
```

### function-available

<span style="color:green">指定した関数が`XSLT`プロセッサで処理できるかどうかを判断します。</span>

```C
boolean function-available(string)
// element-available('function-available') ⇒ true
```