型制約に基づく補正入力機能リファレンス

1. 概要

xfyユーザーエージェント上でXML文書を編集しているときに、入力された値をXVCDで補正する機能について説明します。

1.1. 用途・役割

XML文書をxfyユーザーエージェントで編集するときに、入力された値をXVCDで指定された制約や書式に基づいて補正することができます。この、XVCDによる入力値の制約・補正機能を、型制約に基づく補正入力機能と呼びます。

型制約にもとづく補正入力機能には、専用のボキャブラリコンポーネントで実装されているものと、VC中核ボキャブラリコンポーネントで実装されているものとがあります。

1.2. 名前空間URI参照

型制約に基づく補正入力機能のボキャブラリは3種類に分けられます。それぞれの名前空間URI参照と名前空間接頭辞は次のとおりです。

  • XML Schemaの制約ファセットと同等の機能を提供する属性のボキャブラリ
    名前空間URI参照はhttp://xmlns.xfy.com/fixupper/XMLSchemaです。以下の説明でXML Schemaの制約ファセットと同等の機能を提供する属性を記述するときは、fxs:という名前空間接頭辞を使用します。
  • 独自の機能を提供するボキャブラリ
    名前空間URI参照はhttp://xmlns.xfy.com/fixupperです。以下の説明で独自の機能を提供する変数型や属性を記述するときは、fixupper:という名前空間接頭辞を使用します。
  • データのリストを表現するボキャブラリ
    名前空間URI参照はhttp://xmlns.xfy.com/fixupper/XMLSchema/listです。以下の説明でデータのリストを表現する変数型や属性を記述するときは、fxs-list:という名前空間接頭辞を使用します。

このほか、以下の説明中に出現するボキャブラリと、そのボキャブラリに使用している名前空間接頭辞は次のとおりです。

また、XML Schemaの名前空間は、次のように扱います。

  • 変数型を記述する場合
    名前空間URI参照には、http://www.w3.org/2001/XMLSchema-datatypesを使用します。また、名前空間接頭辞はxsd:を使用します。
  • 要素を記述する場合
    名前空間URL参照には、http://www.w3.org/2001/XMLSchemaを使用します。また、名前空間接頭辞はxs:を使用します。

2. 型制約に基づく補正入力の指定

xfyユーザーエージェントで、型制約に基づく補正入力のために指定できる変数型や大域属性について説明します。

2.1. 変数型

型制約に基づく補正入力のために指定できる変数型には、次の種類があります。

以降、それぞれの変数型について説明します。

2.1.1. 数値型

数値を表す変数型には、XML Schemaで定義されている数値型のうち、下記のものを使用できます。

xsd:integer

取り得る値は、XML Schemaの仕様に従います。標準値は0です。入力される値を次の属性で制約・補正できます。

条件に当てはまらない値が入力された場合は、数値型の補正方針に従って補正されます。

xsd:long

取り得る値は、XML Schemaの仕様に従います。標準値は0です。入力される値を次の属性で制約・補正できます。

条件に当てはまらない値が入力された場合は、数値型の補正方針に従って補正されます。

xsd:int

取り得る値は、XML Schemaの仕様に従います。標準値は0です。入力される値を次の属性で制約・補正できます。

条件に当てはまらない値が入力された場合は、数値型の補正方針に従って補正されます。

xsd:short

取り得る値は、XML Schemaの仕様に従います。標準値は0です。入力される値を次の属性で制約・補正できます。

条件に当てはまらない値が入力された場合は、数値型の補正方針に従って補正されます。

xsd:byte

取り得る値は、XML Schemaの仕様に従います。標準値は0です。入力される値を次の属性で制約・補正できます。

条件に当てはまらない値が入力された場合は、数値型の補正方針に従って補正されます。

xsd:nonPositiveInteger

取り得る値は、XML Schemaの仕様に従います。標準値は0です。入力される値を次の属性で制約・補正できます。

条件に当てはまらない値が入力された場合は、数値型の補正方針に従って補正されます。

xsd:positiveInteger

取り得る値は、XML Schemaの仕様に従います。標準値は1です。入力される値を次の属性で制約・補正できます。

条件に当てはまらない値が入力された場合は、数値型の補正方針に従って補正されます。

xsd:nonNegativeInteger

取り得る値は、XML Schemaの仕様に従います。標準値は0です。入力される値を次の属性で制約・補正できます。

条件に当てはまらない値が入力された場合は、数値型の補正方針に従って補正されます。

xsd:negativeInteger

取り得る値は、XML Schemaの仕様に従います。標準値は-1です。入力される値を次の属性で制約・補正できます。

条件に当てはまらない値が入力された場合は、数値型の補正方針に従って補正されます。

xsd:unsignedLong

取り得る値は、XML Schemaの仕様に従います。標準値は0です。入力される値を次の属性で制約・補正できます。

条件に当てはまらない値が入力された場合は、数値型の補正方針に従って補正されます。

xsd:unsignedInt

取り得る値は、XML Schemaの仕様に従います。標準値は0です。入力される値を次の属性で制約・補正できます。

条件に当てはまらない値が入力された場合は、数値型の補正方針に従って補正されます。

xsd:unsignedShort

取り得る値は、XML Schemaの仕様に従います。標準値は0です。入力される値を次の属性で制約・補正できます。

条件に当てはまらない値が入力された場合は、数値型の補正方針に従って補正されます。

xsd:unsignedByte

取り得る値は、XML Schemaの仕様に従います。標準値は0です。入力される値を次の属性で制約・補正できます。

条件に当てはまらない値が入力された場合は、数値型の補正方針に従って補正されます。

xsd:float

取り得る値は、XML Schemaの仕様に従います。標準値は0.0です。入力される値を次の属性で制約・補正できます。

条件に当てはまらない値が入力された場合は、数値型の補正方針に従って補正されます。

xsd:double

取り得る値は、XML Schemaの仕様に従います。標準値は0.0です。入力される値を次の属性で制約・補正できます。

条件に当てはまらない値が入力された場合は、数値型の補正方針に従って補正されます。

xsd:decimal

取り得る値は、XML Schemaの仕様に従います。標準値は0です。入力される値を次の属性で制約・補正できます。

条件に当てはまらない値が入力された場合は、数値型の補正方針に従って補正されます。

数値型の補正方針

数値型に指定された要素に入力された値が、その型の仕様や制限条件に当てはまらない場合は、以下の方針に従って補正されます。

  • 制限条件が指定されていない場合は、その数値型の標準値に補正されます。
  • 指定された制限条件では有効となる数値が存在しない場合は、空文字列に補正されます。
  • 制限条件で有効な数値の範囲が指定され、その数値型の標準値が範囲に含まれる場合は、標準値に補正されます。
  • 制限条件で有効な数値の範囲が指定され、その数値型の標準値が範囲に含まれない場合は、条件の指定によって補正方法が異なります。
    • fxs:minInclusive属性または fxs:maxInclusive属性で指定された値が標準値に近い場合は、その属性で指定された値に補正されます。
    • 整数を表す数値型で、 fxs:minExclusive属性で指定された値が標準値に近い場合は、指定された値に1を加えた値に補正されます。
    • 整数を表す数値型で、 fxs:maxExclusive属性で指定された値が標準値に近い場合は、指定された値から1を引いた値に補正されます。
    • 浮動小数点数を表す数値型で、範囲がfxs:minExclusive属性とfxs:maxExclusive属性の組み合わせで指定されている場合、空文字列に補正されます。
    • 浮動小数点数を表す数値型で、範囲がfxs:minExclusive属性とfxs:maxInclusive属性の組み合わせで指定されている場合、fxs:maxInclusive属性で指定された値に補正されます。
    • 浮動小数点数を表す数値型で、範囲がfxs:minInclusive属性とfxs:maxExclusive属性の組み合わせで指定されている場合、fxs:minInclusive属性で指定された値に補正されます。

数値型に指定された要素の制限条件が適切でない場合は、以下の方針に従って補正されます。

  • fxs:maxExclusive属性とfxs:maxInclusive属性が同時に指定された場合は、fxs:maxInclusive属性の値が採用されます。同様に、fxs:minExclusive属性とfxs:minInclusive属性が同時に指定された場合は、fxs:minInclusive属性の値が採用されます。

2.1.2. 日付・時刻型

日付や時刻を表す変数型には、XML Schemaで定義されている日付・時刻型のうち、下記のものを使用できます。

xsd:date

CCYY-MM-DDTZ形式の日付を表す文字列を示す変数型です。TZは省略可能です。書式内の英字は、それぞれ次の項目を表します。

CC
西暦の年の最初の2桁
YY
西暦の年の最後の2桁
MM
月の2桁表記
DD
日の2桁表記
TZ
タイムゾーンを表す文字列

取り得る値は、XML Schemaの仕様に従います。入力される値を次の属性で制約・補正できます。

条件に当てはまらない文字列が入力された場合は、タイムゾーンを付けない現在の日付を、書式に従って表した文字列に補正されます。

xsd:time

hh:mm:ss.sssTZ形式の時刻を表す文字列を示す変数型です。.sssTZは省略可能です。書式内の英字は、それぞれ次の項目を表します。

hh
時の2桁表記
mm
分の2桁表記
ss
秒の2桁表記
.sss
秒の小数点以下の値を表す、任意の桁数の数
TZ
タイムゾーンを表す文字列

取り得る値は、XML Schemaの仕様に従います。入力される値を次の属性で制約・補正できます。

条件に当てはまらない文字列が入力された場合は、ミリ秒とタイムゾーンを付けない現在の時刻を、書式に従って表した文字列に補正されます。

xsd:dateTime

CCYY-MM-DDThh:mm:ss.sssTZ形式の日時を表す文字列を示す変数型です。.sssTZは省略可能です。書式内の英字は、それぞれ次の項目を表します。

CC
西暦の年の最初の2桁
YY
西暦の年の最後の2桁
MM
月の2桁表記
DD
日の2桁表記
hh
時の2桁表記
mm
分の2桁表記
ss
秒の2桁表記
.sss
秒の小数点以下の値を表す、任意の桁数の数
TZ
タイムゾーンを表す文字列

取り得る値は、XML Schemaの仕様に従います。入力される値を次の属性で制約・補正できます。

条件に当てはまらない文字列が入力された場合は、ミリ秒とタイムゾーンを付けない現在の日時を、書式に従って表した文字列に補正されます。

xsd:gYearMonth

CCYY-MMTZ形式の年月を表す文字列を示す変数型です。TZは省略可能です。書式内の英字は、それぞれ次の項目を表します。

CC
西暦の年の最初の2桁
YY
西暦の年の最後の2桁
MM
月の2桁表記
TZ
タイムゾーンを表す文字列

取り得る値は、XML Schemaの仕様に従います。入力される値を次の属性で制約・補正できます。

条件に当てはまらない文字列が入力された場合は、タイムゾーンを付けない現在の年月を、書式に従って表した文字列に補正されます。

xsd:gYear

CCYYTZ形式の年を表す文字列を示す変数型です。TZは省略可能です。書式内の英字は、それぞれ次の項目を表します。

CC
西暦の年の最初の2桁
YY
西暦の年の最後の2桁
TZ
タイムゾーンを表す文字列

取り得る値は、XML Schemaの仕様に従います。入力される値を次の属性で制約・補正できます。

条件に当てはまらない文字列が入力された場合は、タイムゾーンを付けない現在の年を、書式に従って表した文字列に補正されます。

xsd:gMonthDay

--MM-DDTZ形式の月日を表す文字列を示す変数型です。TZは省略可能です。書式内の英字は、それぞれ次の項目を表します。

MM
月の2桁表記
DD
日の2桁表記
TZ
タイムゾーンを表す文字列

取り得る値は、XML Schemaの仕様に従います。入力される値を次の属性で制約・補正できます。

条件に当てはまらない文字列が入力された場合は、タイムゾーンを付けない現在の月日を、書式に従って表した文字列に補正されます。

xsd:gDay

---DDTZ形式の日を表す文字列を示す変数型です。TZは省略可能です。書式内の英字は、それぞれ次の項目を表します。

DD
日の2桁表記
TZ
タイムゾーンを表す文字列

取り得る値は、XML Schemaの仕様に従います。入力される値を次の属性で制約・補正できます。

条件に当てはまらない文字列が入力された場合は、タイムゾーンを付けない現在の日を、書式に従って表した文字列に補正されます。

xsd:gMonth

--MMTZ形式の月を表す文字列を示す変数型です。TZは省略可能です。書式内の英字は、それぞれ次の項目を表します。

MM
月の2桁表記
TZ
タイムゾーンを表す文字列

取り得る値は、XML Schemaの仕様に従います。入力される値を次の属性で制約・補正できます。

条件に当てはまらない文字列が入力された場合は、タイムゾーンを付けない現在の月を、書式に従って表した文字列に補正されます。

xsd:duration

PnYnMnDTnHnMnS形式の経過時間を表す文字列を示す変数型です。書式は、前から順に次の意味を表します。

P
経過を表す文字。そのまま記述します。
nY
経過した年数。nを年数に置き換え、そのまま続けてYを記述します。
nM
経過した月数。nを月数に置き換え、そのまま続けてMを記述します。
nD
経過した日数。nを日数に置き換え、そのまま続けてDを記述します。
T
日付と時刻を分離する文字。そのまま記述します。
nH
経過した時数。nを時数に置き換え、そのまま続けてHを記述します。
nM
経過した分数。nを分数に置き換え、そのまま続けてMを記述します。
nS
経過した秒数。nを秒数に置き換え、そのまま続けてSを記述します。

取り得る値は、XML Schemaの仕様に従います。入力される値を次の属性で制約・補正できます。

条件に当てはまらない文字列が入力された場合は、経過時間が0であることを意味する文字列P0Y0M0DT0H0M0Sに補正されます。

2.1.3. 文字列型

文字列を表す変数型には、XML Schemaで定義されている文字列型のうち、下記のものを使用できます。

xsd:string

取り得る値は、XML Schemaの仕様に従います。入力される値を次の属性で制約・補正できます。

xsd:normalizedString

取り得る値は、XML Schemaの仕様に従います。入力される値を次の属性で制約・補正できます。

xsd:token

取り得る値は、XML Schemaの仕様に従います。入力される値を次の属性で制約・補正できます。

xsd:anyURI

取り得る値は、XML Schemaの仕様に従います。入力される値を次の属性で制約・補正できます。

xsd:language

取り得る値は、XML Schemaの仕様に従います。入力される値を次の属性で制約・補正できます。

2.1.4. XMLに関する変数型

XMLの仕様に従った文字列を表す変数型には、XML Schemaで定義されている文字列型のうち、下記のものを使用できます。

xsd:QName

取り得る値は、XML Schemaの仕様に従います。入力される値を次の属性で制約・補正できます。

xsd:Name

取り得る値は、XML Schemaの仕様に従います。入力される値を次の属性で制約・補正できます。

xsd:NCName

取り得る値は、XML Schemaの仕様に従います。入力される値を次の属性で制約・補正できます。

xsd:NOTATION

取り得る値は、XML Schemaの仕様に従います。入力される値を次の属性で制約・補正できます。

xsd:NMTOKEN

取り得る値は、XML Schemaの仕様に従います。入力される値を次の属性で制約・補正できます。

xsd:NMTOKENS

取り得る値は、XML Schemaの仕様に従います。入力される値を次の属性で制約・補正できます。

xsd:ID

取り得る値は、XML Schemaの仕様に従います。入力される値を次の属性で制約・補正できます。

xsd:IDREF

取り得る値は、XML Schemaの仕様に従います。入力される値を次の属性で制約・補正できます。

xsd:IDREFS

取り得る値は、XML Schemaの仕様に従います。入力される値を次の属性で制約・補正できます。

xsd:ENTITY

取り得る値は、XML Schemaの仕様に従います。入力される値を次の属性で制約・補正できます。

xsd:ENTITIES

取り得る値は、XML Schemaの仕様に従います。入力される値を次の属性で制約・補正できます。

2.1.5. その他の単純型

XML Schemaで定義されている単純型のうち、下記のものを使用できます。

xsd:boolean

取り得る値は、XML Schemaの仕様に従います。入力される値を次の属性で制約・補正できます。

xsd:hexBinary

取り得る値は、XML Schemaの仕様に従います。入力される値を次の属性で制約・補正できます。

xsd:base64Binary

取り得る値は、XML Schemaの仕様に従います。入力される値を次の属性で制約・補正できます。

2.1.6. 独自に定義されている変数型

型制約に基づく補正入力機能のために独自に定義されている変数型は、以下のとおりです。

fixupper:anyURL

URL参照を表現する変数型です。次の文字列を対象とします。

  • RFC2396で定義され、RFC2732で修正されたURL参照の文字列
  • 空文字列

対象とする文字列に当てはまらない場合は、空文字列として扱われます。

fixupper:currency

通貨を表現する変数型です。必ず次の属性で通貨コードを指定して使用します。

指定された通貨コードに従って通貨記号や桁区切り、小数点以下の桁数などの書式を判断し、その書式に従って数値文字列が整形されます。

fixupper:regex

入力された文字列が、指定された正規表現文字列に適合するように制限する変数型です。次の属性を使用して正規表現文字列と初期値を記述します。

fixupper:pattern属性で指定した正規表現文字列に適合しない文字列が入力された場合は、fixupper:default-value属性に記述された値が使用されます。

正規表現文字列中で{}を使用する場合、属性値テンプレートとして展開されないようにするために、{''}で囲んで記述します。

[例][0-9]{3}という正規表現文字列を記述する場合

{'[0-9]{3}'}

2.1.7. リスト型

リスト構造を表現するために定義されているデータ型と、リストを構成する項目のデータ型を指定する属性を説明します。

リストを構成する項目の記述方法

リストを構成する個々のデータを空白で結合して、要素内に記述します。そのため、空白を含むデータをリストの1項目として設定することはできません。空白を含むデータを設定した場合は、空白ごとに区切られた複数の項目として扱われます。

fxs-list:list

XML Schemaのデータ型に定義されているxs:list要素に相当するデータ型定義を実現するデータ型です。リスト自体の制限には、次の属性を使用できます。

リストを構成する項目のデータ型は、 fxs-list:itemType属性で指定します。

fxs-list:itemType 属性

リストを構成する項目のデータ型を指定する属性です。この仕様書に記述されている変数型のうち、 fxs-list:listを除く変数型を、QNameで記述します。

必ずfxs-list:list型と組にして使用します。

リスト内の値に対する制限は、この属性で指定したデータ型で使用できる条件を、単独の値のときと同じ方法で設定します。

2.2. 値の制限

入力される値を制限するときは、要素に大域属性で制限する条件を記述します。以下、入力される値を制限するときに使用する大域属性を説明します。

2.2.1. 基本的な制限

基本的に、入力される値を制限するときには以下の属性を使用します。

fxs:length 属性

XML Schemaで制約ファセットとして定義されているxs:length要素と同じ役割を果たす属性です。

fxs:minLength 属性

XML Schemaで制約ファセットとして定義されているxs:minLength要素と同じ役割を果たす属性です。

fxs:maxLength 属性

XML Schemaで制約ファセットとして定義されているxs:maxLength要素と同じ役割を果たす属性です。

fxs:maxInclusive 属性

XML Schemaで制約ファセットとして定義されているxs:maxInclusive要素と同じ役割を果たす属性です。 fxs:maxExclusive属性と同時に指定された場合はこの属性が優先され、fxs:maxExclusive属性は無視されます。

fxs:maxExclusive 属性

XML Schemaで制約ファセットとして定義されているxs:maxExclusive要素と同じ役割を果たす属性です。 fxs:maxInclusive属性と同時に指定された場合は無視されます。

fxs:minInclusive 属性

XML Schemaで制約ファセットとして定義されているxs:minInclusive要素と同じ役割を果たす属性です。 fxs:minExclusive属性と同時に指定された場合はこの属性が優先され、fxs:minExclusive属性は無視されます。

fxs:minExclusive 属性

XML Schemaで制約ファセットとして定義されているxs:minExclusive要素と同じ役割を果たす属性です。 fxs:minInclusive属性と同時に指定された場合は無視されます。

fxs:totalDigits 属性

XML Schemaで制約ファセットとして定義されているxs:totalDigits要素と同じ役割を果たす属性です。

fxs:fractionDigits 属性

XML Schemaで制約ファセットとして定義されているxs:fractionDigits要素と同じ役割を果たす属性です。

fxs:whiteSpace 属性

XML Schemaで制約ファセットとして定義されているxs:whiteSpace要素と同じ役割を果たす属性です。

fxs:pattern 属性

XML Schemaで制約ファセットとして定義されているxs:pattern要素と同じ役割を果たす属性です。

正規表現文字列中で{}を使用する場合、属性値テンプレートとして展開されないようにするために、{''}で囲んで記述します。

[例][0-9]{3}という正規表現文字列を記述する場合

{'[0-9]{3}'}

fxs:enumeration 属性

取り得る値を列挙する属性です。取り得る値を、次の形式で結合した文字列を指定します。

  • カンマ( , )、クォーテーション( ' )、半角空白を含む値は、クォーテーション( ' )で囲みます。
    このとき、値に含まれるクォーテーションの前には、クォーテーションを重ねて「''」とします。
  • 列挙するそれぞれの値を、カンマ( , )で結合します。

値に設定する文字列を生成するために、 fixupper:quote-for-enumeration()関数が用意されています。

2.2.2. 通貨コードの指定

通貨を記述する場合、次の属性で使用する通貨の種類を指定します。

fixupper:currencyCode 属性

通貨の種類を表す通貨コードを記述する属性です。通貨の種類によって、表示される通貨記号や桁の区切り方、許容される小数点以下の桁数が異なります。

通貨コードには、ISO 4217の通貨コードを使用します。現在対応しているのは、下記の通貨です。

通貨名 通貨コード 許容される小数点以下の桁数
JPY 0
ドル USD 2
人民元 CNY 2
ポンド GBP 2
ユーロ EUR 2

これら以外の通貨コードが指定された場合は、その通貨コードをそのまま出力します。通貨コードとしてISO 4217で定義されていない文字列を使用した場合は、デフォルトのロケールから取得した通貨の通貨記号を出力します。

2.2.3. 正規表現による入力文字列の制限

文字列の場合、正規表現で表された条件に従うように制限できます。その場合は、以下の属性を使用します。

fixupper:pattern 属性

正規表現文字列を記述する属性です。必ず、 fixupper:regex の変数型指定と一緒に使用します。

正規表現文字列中で{}を使用する場合、属性値テンプレートとして展開されないようにするため、{''}で囲んで記述します。

[例][0-9]{3}という正規表現文字列を記述する場合

{'[0-9]{3}'}

fixupper:default-value 属性

fixupper:regex の変数型が指定されている要素に、 fixupper:pattern属性に記述された正規表現文字列に適合しない文字列が入力されたときに使用する値を指定する属性です。必ず、fixupper:regexの変数型指定と一緒に使用します。

2.2.4. リスト型の制限

リスト内の値に対する制限は、単独の値のときと同じ方法で設定します。リスト自体に対する制限には、次の属性を使用します。

fxs-list:length 属性

リストに設定できる項目の数を記述する属性です。

fxs-list:minLength 属性

リストに設定できる項目数の範囲の最小値を記述する属性です。

fxs-list:maxLength 属性

リストに設定できる項目数の範囲の最大値を記述する属性です。

2.3. 関数

fxs:enumeration属性の値に設定する文字列を生成するために、次の関数が用意されています。

fixupper:quote-for-enumeration 関数

与えられたノードセットの各ノードに含まれる文字列から、fxs:enumeration属性で使用するために適切な形式の文字列を生成する関数です。fxs:enumeration属性で使用する文字列の形式は、次のとおりです。

  • カンマ( , )、クォーテーション( ' )、半角空白を含む値は、クォーテーション( ' )で囲みます。
    このとき、値に含まれるクォーテーションの前には、クォーテーションを重ねて「''」とします。
  • 列挙するそれぞれの値を、カンマ( , )で結合します。
構文:
string fixupper:quote-for-enumeration( node-set )
引数:
node-set node-set

各ノードにfxs:enumeration属性で列挙する文字列を含むノードセットを指定します。

返値:
string

ノードセットの各ノードに含まれる文字列を、fxs:enumeration属性で使用するために適切な形式で連結した文字列を返します。