機能
コンストラクタ関数は、Symfowareで提供するすべての原子型に対してそれぞれ用意されており、引数の値を任意の原子型の値にキャストします。
一般規則
コンストラクタ関数の名前は、キャストしたい原子型の名前と同じです。コンストラクタ関数の種類を以下に示します。
関数名 | 機能 |
---|---|
xs:string | 引数の値をxs:string型の値にキャストします。 |
xs:double | 引数の値をxs:double型の値にキャストします。 |
xs:date | 引数の値をxs:date型の値にキャストします。 |
xs:time | 引数の値をxs:time型の値にキャストします。 |
xs:dateTime | 引数の値をxs:dateTime型の値にキャストします。 |
xs:boolean | 引数の値をxs:boolean型の値にキャストします。 |
xs:untypedAtomic | 引数の値をxs:untypedAtomic型の値にキャストします。 |
すべてのコンストラクタ関数が最初に実行する共通処理を以下に示します。
引数の値に原子化を適用します。
原子化の結果が複数の原子値を含むシーケンスであれば、型エラーが発生します。
原子化の結果が空シーケンスであれば、結果として空シーケンスを返します。
原子化の結果が単一の原子値であれば、それぞれのコンストラクタ関数で原子化された引数を評価して、目的の原子型の値、またはエラーを返します。
各引数の原子型に対するコンストラクタ関数の評価規則を以下に示します。
xs:string()またはxs:untypedAtomic()の場合
引数がxs:string型、またはxs:untypedAtomic型の原子値の場合、その値の文字列中の空白が正規化(文字列中の前後の空白がすべて消去)され、xs:string型、またはxs:untypedAtomic型の値として返されます。
引数がxs:double型の原子値の場合、その字句形式の文字列がxs:string型、またはxs:untypedAtomic型の値として返されます。原子値の値が0.000001以上、1000000未満の場合、真数表現の文字列にキャストされます。それ以外の場合は概数表現の文字列にキャストされます。
引数がxs:date型、xs:time型、またはxs:dateTime型の原子値の場合、それぞれの字句形式の文字列がxs:string型、またはxs:untypedAtomic型の値として返されます。
引数がxs:boolean型の原子値の場合、その字句形式の文字列(“true”または“false”)がxs:string型、またはxs:untypedAtomic型の値として返されます。
xs:double()の場合
引数がxs:string型、またはxs:untypedAtomic型の原子値の場合、その値の文字列中の空白が正規化(文字列中の前後の空白がすべて消去)されます。空白が正規化された文字列がxs:double型の字句形式に一致するならば、その字句形式が表す数値を返します。ただし、空白が正規化された文字列が字句形式に一致しないならば、エラーを返します。
引数がxs:double型の原子値の場合、その数値をそのまま返します。
引数がxs:boolean型の原子値であり、その値がtrueの場合、数値1を返します。
引数がxs:boolean型の原子値であり、その値がfalseの場合、数値0を返します。
引数の型が上記以外の場合、エラーを返します。
xs:date()の場合
引数がxs:string型、またはxs:untypedAtomic型の原子値の場合、その値の文字列中の空白が正規化(文字列中の前後の空白がすべて消去)されます。空白が正規化された文字列がxs:date型の字句形式に一致するならば、その字句形式が表す日付の値を返します。空白が正規化された文字列が字句形式に一致しないならば、エラーを返します。
引数がxs:date型の原子値の場合、その日付の値をそのまま返します。
引数がxs:dateTime型の原子値の場合、その日付部分(年、月、日)の値を返します。
引数の型が上記以外の場合、エラーを返します。
xs:time()の場合
引数がxs:string型、またはxs:untypedAtomic型の原子値の場合、その値の文字列中の空白が正規化(文字列中の前後の空白がすべて消去)されます。空白が正規化された文字列がxs:time型の字句形式に一致するならば、その字句形式が表す時間の値を返します。空白が正規化された文字列が字句形式に一致しないならば、エラーを返します。
引数がxs:time型の原子値の場合、その時間の値をそのまま返します。
引数がxs:dateTime型の原子値の場合、その時間部分(時、分、秒)の値を返します。
引数の型が上記以外の場合、エラーを返します。
xs:dateTime()の場合
引数がxs:string型、またはxs:untypedAtomic型の原子値の場合、その値の文字列中の空白が正規化(文字列中の前後の空白がすべて消去)されます。空白が正規化された文字列がxs:dateTime型の字句形式に一致するならば、その字句形式が表す日付の値を返します。空白が正規化された文字列が字句形式に一致しないならば、エラーを返します。
引数がxs:date型の原子値の場合、日付部分(年、月、日)の値は引数の値をそのまま返し、時間部分(時、分、秒)の値は“00:00:00”を返します。
引数がxs:dateTime型の原子値の場合、その日時の値をそのまま返します。
引数の型が上記以外の場合、エラーを返します。
xs:boolean()の場合
引数がxs:string型、またはxs:untypedAtomic型の原子値の場合、その値の文字列中の空白が正規化(文字列中の前後の空白がすべて消去)されます。空白が正規化された文字列がxs:boolean型の字句形式に一致するならば、その字句形式が表す論理値を返します。空白が正規化された文字列が字句形式に一致しないならば、エラーを返します。
引数がxs:double型の原子値であり、その値が以下に示すいずれかの場合、falseを返します。それ以外の値の場合、trueを返します。
0、+0、-0、NaN
引数がxs:boolean型の原子値の場合、その論理値をそのまま返します。
引数の型が上記以外の場合、エラーを返します。
使用例
この式は、xs:double型の値2.34e5をxs:string型の値“234000”にキャストします。
xs:string(2.34e5)
この式は、xs:string型の値“76.5E-1”をxs:double型の値76.5E-1にキャストします。
xs:double("76.5E-1")
この式は、xs:string型の値“2008-03-03”をxs:date型の値“2008-03-03”にキャストします。
xs:date("2008-03-03")
この式は、xs:string型の値“22:11:21”をxs:time型の値“22:11:21”にキャストします。
xs:time("22:11:21")
この式は、xs:string型の値“2008-03-03T22:11:21”をxs:dateTime型の値“2008-03-03T22:11:21”にキャストします。
xs:dateTime("2008-03-03T22:11:21")
この式は、xs:double型の値1をxs:boolean型の値trueにキャストします。
xs:boolean(1)
この式は、xs:double型の値25をxs:string型の値“25”にキャストします。
xs:untypedAtomic(25)