>サイトトップへ >このカテゴリの一覧へ

X 4178

:2007  目次

(1)

目  次

ページ

序文

1

0

  適用範囲

1

1

  概要

1

1.1

  背景

1

1.2

  規定を読む前に

1

1.3

  規定の構成

1

1.4

  文書規約

2

2

  XForms への導入

2

2.1

  例

3

2.2

  XML インスタンスデータの供給

5

2.3

  値の制約

6

2.4

  単一文書内の複数フォーム

7

3

  文書構造

9

3.1

  XForms 名前空間

9

3.2

  XForms 主要属性集合

9

3.3

  XForms 主要モジュール

10

3.4

  XForms MustUnderstand モジュール

14

3.5

  XForms 拡張モジュール

15

4

  処理モデル

15

4.1

  イベント概要

16

4.2

  初期化イベント

17

4.3

  相互作用イベント

19

4.4

  通知イベント

23

4.5

  誤り表示

27

4.6

  イベント列

28

5

  データ型

29

5.1

  W3C XML Schema 組込みデータ型

29

5.2

  XForms データ型

31

6

  モデル項目特性

31

6.1

  モデル項目特性定義

31

6.2

  W3C XML Schema 制約

37

7

  XForms における XPath 

38

7.1

  XPath データ型

38

7.2

  hasFeature メソッド呼出しのための機能文字列

38

7.3

  インスタンスデータ

39

X 4178

:2007


X 4178

:2007  目次

(2)

ページ

7.4

  評価文脈

40

7.5

  結合式

41

7.6

  XForms 主要関数ライブラリ

42

7.7

  論理関数

42

7.8

  数値関数

42

7.9

  文字列関数

43

7.10

  日付及び時間関数

44

7.11

  ノード集合関数

45

7.12

  拡張関数

45

8

  フォーム制御

46

8.1

  XForms のフォーム制御モジュール

46

8.2

  選択制御のための共通マーク付け

59

8.3

  その他の要素

60

9

  XForms 利用者インタフェース

62

9.1

  XForms グループモジュール

62

9.2

  XForms スイッチモジュール

63

9.3

  XForms 繰返しモジュール

64

10

  XForms アクション

73

10.1

  XForms アクションモジュール

73

11

  送付

80

11.1

  xforms-submit イベント

80

11.2

  送付任意機能

81

11.3

  application/xml としての直列化

82

11.4

  multipart/related としての直列化

83

11.5

  multipart/form-data としての直列化

84

11.6

  application/x-www-form-urlencoded としての直列化

85

11.7

  postmultipart-postform-data-post 及び urlencoded-post 送付メソッド

86

11.8

  put 送付メソッド

86

11.9

  get 送付メソッド

86

12

  適合性

86

12.1

  適合性レベル

86

12.2

  適合性定義

87

13

  定義

87

附属書 A(規定)XForms のための W3C XML Schema 

90

附属書 B(規定)文献

91

附属書 C(規定)プライバシの問題

94

附属書 D(規定)再計算順序アルゴリズム

95

附属書 E(規定)入力モード

99

附属書 F(参考)XForms 及びスタイル設定

104


X 4178

:2007  目次

(3)

ページ

附属書 G(参考)完全な XForms の例

106

附属書 H(参考)変更履歴

116

附属書 I(参考)貢献者

117

附属書 J(参考)原勧告の作成メモ

119


X 4178

:2007  目次

(4)

まえがき

この規格は,工業標準化法第 12 条第 1 項の規定に基づき,財団法人日本規格協会(JSA)から,工業標準

原案を具して日本工業規格を制定すべきとの申出があり,日本工業標準調査会の審議を経て,経済産業大

臣が制定した日本工業規格である。

この規格は,著作権法で保護対象となっている著作物である。

この規格の一部が,特許権,出願公開後の特許出願,実用新案権又は出願公開後の実用新案登録出願に

抵触する可能性があることに注意を喚起する。経済産業大臣及び日本工業標準調査会は,このような特許

権,出願公開後の特許出願,実用新案権又は出願公開後の実用新案登録出願に係る確認について,責任は

もたない。

原勧告の標題及びまえがき

XML

フォーム言語(XForms1.0

W3C

勧告 2003 年 10 月 14 

この版の掲載場所

http://www.w3.org/TR/2003/REC-xforms-20031014/

最新の版の掲載場所

http://www.w3.org/TR/xforms/

以前の版の掲載場所

http://www.w3.org/TR/2003/PR-xforms-20030801/

編集者

Micah Dubinko, Cardiff Software <mdubinko@Cardiff.com>

Leigh L. Klotz, Jr., Xerox Corporation <Leigh.Klotz@pahv.xerox.com>

Roland Merrick, IBM <Roland_Merrick@uk.ibm.com>

T. V. Raman, IBM <tvraman@almaden.ibm.com>

原勧告については,規定の修正を幾つか含むことがあるため,正誤表

(http://www.w3.org/2006/03/REC-xforms-20060314-errata.html)

も参照されたい。

原勧告の翻訳版が入手可能であるが,英語による原勧告を唯一の正式な規定として扱う。

著作権 © 2003 W3C®(MIT,ERCIM,慶應義塾)が,すべての権利を保有する。免責,商標,文書の

使用及びソフトウエアの使用許諾に関する W3C の規則を適用する。

この文書の状態

ここでは,公開時における原勧告の状態を示す。他の規定が,この勧告に置き換わることもある。現在

の W3C 出版物のリスト及びこの技術文書の最新版は,http://www.w3.org/TR/の W3C 技術文書索引で入手

できる。


X 4178

:2007  目次

(5)

この文書は,W3C の勧告であり,W3C XForms 作業グループによって,XForms 活動の一環として作成

された。この文書の作成者は,XForms 作業グループの関係者である。

原勧告は,W3C のメンバ及び他の関係者によってレビューされ,W3C 勧告として技術統括責任者によ

って承認された。原勧告は,安定したものであって,参考資料として使用してよく,他の文書から標準参

照として引用してもよい。勧告作成において,W3C は,原勧告を広く知らせ,普及させる役割をもつ。こ

れによってウェブの機能性及び相互運用性が高まる。

XForms 1.0

勧告候補の中にあった X フォーム基本プロファイル(XForms Basic Profile)は,今では独立し

た規定になっている。制約のある装置及び環境の要求に合わせた XForms 処理に関しては,X フォーム基

本プロファイル[XForms Basic]を参照されたい。

コメントは,公開メーリングリスト www-forms-editor@w3.org(アーカイブ)で受け付けている。このア

ドレスに議論の電子メールを送ることは,控えられたい。

W3C XForms

作業グループは,実装報告とともに,XForms1.0 用の公開テストスイートを提供している。

XForms

実装として知られる一覧が利用可能である。

この勧告に関係する特許声明は,W3C の方針に基づいて,XForms 作業グループの公開特許声明のペー

ジで閲覧できる。

X 4178

:2007


X 4178

:2007  目次

(6)

白      紙


日本工業規格

JIS

 X

4178

:2007

XML

フォーム言語(XForms)1.0

XForms 1.0

序文

この規格は,

2003

年 10 月に World Wide Web Consortium (W3C)から公表された XForms 1.0 勧告を翻訳し,

その後に発行された正誤表を取り込んで,技術的内容を変更することなく作成した日本工業規格である。

なお,この規格で点線の下線を施してある箇所は,原勧告にはない事項である。

0

適用範囲

この規格は,ウェブ用の次世代フォーム(Forms)を表現するための XML 応用である XForms について規

定する。HTML 4.01 で規定する XHTML フォームを三つの部分,XForms モデル,インスタンスデータ及

び利用者インタフェースに分けることによって,それは,内容から表示を分離し,再利用を可能にし,強

い型付けを与える。その結果,サーバへの(アクセスの)往復の回数を減らすとともに,装置非依存性を

提供し,スクリプト化の必要性を減らす。

XForms

は,独立した文書型ではなく,XHTML,SVG などの他のマーク付け言語に統合されることを意

図している。

1

概要

1.1

背景

フォームは,ウェブの重要な位置を占めており,対話型ウェブアプリケーションを実現するための主要

な手段として現在でも使用されている。

ウェブアプリケーション及び電子商取引ソリューションによって,

対話機能を豊富に備えた,より優れたウェブフォームが要求されるようになった。XForms 1.0 は,これに

こたえるものであり,XForms

プロセサを介した,利用者とその相手(通常は遠隔エージェント)とのオ

ンライン対話のための,プラットフォームに依存しない新しいマーク付け言語を提供する。XForms は,

HTML

フォームの後継であり,HTML フォームから得た教訓が生かされている。

XForms

の背景情報の詳細については,http://www.w3.org/MarkUp/Forms/を参照する。

1.2

規定を読む前に

この規定は,さまざまな読者を想定して記述されているが,特に,XForms の文書作成者及び実装者を

対象としている。この規定によって,効果的,魅力的,かつ多くの利用者からアクセス可能な文書を記述

するのに必要な情報を,実装の詳細には過度に触れることなく XForms の文書作成者に提供できるものと

考える。ただし,実装者が XForms 適合プロセサを作成するのに必要となる情報は,すべて記述されてい

る。規定ではまず,XForms に関する一般的な情報を記述し,次に XForms の各構成要素の技術的な詳細に

ついて記述する。

1.3

規定の構成


2

X 4178

:2007

この規定は,次のように構成される。

箇条 及び箇条 2

XForms

への導入。XForms の設計原則の概説及び XForms についての簡潔な手引を含む。

箇条 以降

XForms

の参照マニュアル。この参照マニュアルの大部分は,XForms の規定から成る。ここでは,

XForms

を定義し,XForms プロセサを規定に適合させるために各構成要素をどのように解釈しなければ

ならないかについて定義する。

附属書

附属書は,W3C XML Schema で記述される XForms の規定,参照情報及び他の有用な情報を含む。

1.4

文書規約

この規格では,次の名前空間接頭辞及び対応する名前空間識別子を使用する。

xforms

:XForms 名前空間(http://www.w3.org/2002/xforms)(3.1 参照)

html

:XHTML 名前空間(http://www.w3.org/1999/xhtml)[XHTML 1.0]

xsd

:W3C XML Schema 名前空間(http://www.w3.org/2001/XMLSchema)[XML Schema part 1]

xsi

:インスタンスから W3C XML Schema を参照するための名前空間

(http://www.w3.org/2001/XMLSchema-instance)[XML Schema part 1]

ev

:XML イベント名前空間(http://www.w3.org/2001/xml-events)[XML Events]

my

:任意の利用者定義の名前空間

これは,

(規定ではなく)単なる規約に過ぎない。実際には,どんな名前空間接頭辞を使用してもよい。

この規格では,技術内容を表示するために,次の表記上の規約を使用する。

正式な用語は,ほとんどの用語について箇条 13 の中に定義する。用語は,必要に応じて,特に

強調表記

されている。

XForms

内におけるさまざまな要素の XML 表現は,XHTML のモジュール化[XHTML Modularization]に

おける抽象モジュールの構文を用いて表される。

例は,次のとおりに強調表記される。

例  項目例

Example Item

外部文書への参照は次のとおりに表記される。この規格の参照箇所へのリンクをもつ[参照の例]

参照の例

参照  [参照の例]からリンクされている。

注記  この規格では参照箇所へのリンクは記載しない。

次の表記規約は,参考情報である注釈に使用される。

注記  読者に対する親切な説明,又は忠告。

2

XForms

への導入

XForms

は,数年にわたる HTML フォームの経験を基にして設計されている。HTML フォームは,電子

商取引革命の中心的な役割としてその価値を示し,改良の余地のある点を多く示した。

XForms

が XML 形式であることを別にすれば,XForms と HTML フォームとの一つ目の相違点は,収集

されるデータと個々の値を収集する制御のマーク付けとの分離である。この分離によって,何をどこに送


3

X 4178

:2007

付するのかを明確にできるため,XForms は HTML フォームと比較して扱いが容易である。また,フォー

ムの本質的な部分が,それが使用されるページから取り出しやすくなったため,フォームの再使用も容易

に行える。

主要な相違点の二つ目は,XForms は XHTML に組み込まれるように設計されてはいるが,XHTML に限

らず,その他の適切なマーク付け言語にも組込みが可能である点である。

XForms

では,文書作成,再使用,国際化,アクセシビリティ,操作性及びデバイスからの独立に関し

て改良が行われた。

強い型付け

送付されるデータは,強く型付けされたものであり,一般的なツールによって検査が可能なものと

する。この機能によって,妥当性検証のためにデータをサーバとの間で往復させる必要が少なくなる

ため,フォームの入力を迅速化できる。

XML

送付

これによって,送付されたデータをバックエンドのアプリケーションに整合するように変換する仕

組みをサーバ側に独自に用意する必要がなくなる。バックエンドのアプリケーションでは,受信した

XML

文書を直接,妥当性検証し,処理できる。

既存のスキーマの再使用

これによって,スキーマを二重に保持する必要がなくなる。背後にあるビジネスロジックの変更に

起因して検証規則を更新する場合でも,XForms アプリケーション内で妥当性検証制約を再記述する

必要はない。

外部スキーマの援用

XForms

の文書作成者は,

バックエンドで用意された制約の基本セット以外にも制約を指定できる。

XForms

モデルの一部として制約を追加指定することで,ウェブアプリケーションの操作性は,全体

的に向上する。

国際化

インスタンスデータに XML 1.0 を使用することで,送付されるデータを国際化対応にできる。

アクセシビリティの向上

XForms

では,内容と表示とは分離されている。ラベルなどの関連するメタデータはすべて,利用

者インタフェース制御によってカプセル化されるため,さまざまな表示様式を使用した場合にアプリ

ケーションのアクセシビリティを向上させることができる。XForms 利用者インタフェース制御は,

特定の表示様式に限定されず,デバイスに依存しない。

複数装置への対応

利用者インタフェース制御は抽象的なものであるため,利用者インタフェースの記述は目的に基づ

いたものとなり,利用者との対話を別の装置向きなものにすることが可能になる。

スクリプトの削減

一般的な状況に対応できる XML ベースで宣言するイベントハンドラを定義することによって,

XForms

文書の大多数は静的に組み立てられる。その結果,イベントハンドラ用のスクリプトの必要

性を削減している。

2.1

XForms

の場合,フォームは,そのフォームが何を行うのかについて記述する XForms

モデルと呼ばれ

る部分と,フォームがどのように表示されるのかを記述する別の部分とで構成される。


4

X 4178

:2007

図 のとおりに可視化される単純な電子商取引のフォームについて考えてみる。

図 1−単純な電子商取引のフォーム

収集する値は,現金及びクレジットカードのいずれを使用するのかを表す値,クレジットカードの場合

はさらに,クレジットカードの番号及び有効期限とする。

これは XForms の model 要素で表すことができ,XHTML では通常 head セクションに含められる。

<xforms:model>

  <xforms:instance>

    <ecommerce xmlns="">

            <method/>

            <number/>

            <expiry/>

    </ecommerce>

  </xforms:instance>

  <xforms:submission action="http://example.com/submit"

                                                  method="post"

                                                  id="submit" includenamespaceprefixes=""/>

</xforms:model>

この記述は単に,三つの情報を収集し(型については言及していないことに注意)

,それらを action 属性

内の URL を使用して送付することを示している。

XForms 1.0

で定義しているフォーム制御は,はん用的に使用でき,デバイスに中立,プラットフォーム

非依存なものとする。

フォーム制御は XForms の結合機構を介して XForms モデルに

結合

される。この例

では,制御において ref 属性を使用している。XHTML では,このマーク付けは通常,body セクション内

に記述される(ここでは意図的に XForms 名前空間接頭辞を省略している。

<select1 ref="method">

  <label>

支払い方法の選択:</label>

  <item>

        <label>

現金</label>

    <value>cash</value>

  </item>

  <item>

        <label>

クレジットカード</label>

    <value>cc</value>


5

X 4178

:2007

  </item>

</select1>

<input ref="number">

  <label>

クレジットカード番号:</label>

</input>

<input ref="expiry">

  <label>

有効期限:</label>

</input>

<submit submission="submit">

  <label>

送付</label>

</submit>

ここでは,次の点に注意する。

−  利用者インタフェースは,ラジオボタンを使用するようにハードコーディングされず,場合によって,

音声ブラウザなどの異なるデバイスでは適切な方法で“一つを選択(select1)”の概念を表現できる。

−  フォーム制御には必ずラベルが直接関連付けられており,そのラベルは子要素として記述される。こ

の機能は,アクセシビリティを強化するためのかぎ(鍵)となる。

− HTML のように,form 要素で囲む必要はない(単一文書内に複数のフォームを記述する方法の詳細に

ついては,2.4 を参照する。

−  フォーム制御を指定するマーク付けは,HTML フォームと比較して簡略化されている。

このようにしてフォーム制御をモデルに結合でき,任意のフォーム制御マーク付けをモデルとの結合に

使用できるため,XForms を他の

呼出し側の言語に組み込むのは容易である。

2.2

XML

インスタンスデータの供給

XForms

プロセサは,収集されたデータを XML として直接送付できる。

図 の例において,送付される

データは次のとおりになる。

例  送付されるデータ

<ecommerce>

  <method>cc</method>

  <number>1235467789012345</number>

  <expiry>2001-08</expiry>

</ecommerce>

XForms

プロセサは,この

インスタンスデータを介して,部分的に記入されたフォームの状態を常に把

握する。インスタンスデータには初期値が指定されることもあるが,この例のとおりに空のままの場合も

ある。要素 instance は実質,XML 文書の骨格を保持するもので,この骨格は利用者がフォームに記入した

ときに更新される。これによって,文書作成者は,送付される XML データの構造を十分に制御すること

ができる。これには名前空間情報も含まれる。フォームが送付されるとき,

このインスタンスデータは XML

文書として順次直列化される。次に示すのは,前述の例に対する別の方法である。

例  モデル

<xforms:model>

  <xforms:instance>


6

X 4178

:2007

    <payment method="cc"

              xmlns="http://commerce.example.com/payment">

            <number/>

            <expiry/>

        </payment>

  </xforms:instance>

  <xforms:submission action="http://example.com/submit"

                                                  method="post"

                         includenamespaceprefixes="#default"/>

</xforms:model>

この場合,送付されるデータは次のようになる。

例  送付されるデータ

<payment method="cc" xmlns="http://commerce.example.com/payment">

  <number>1235467789012345</number>

  <expiry>2001-08</expiry>

</payment>

ここでは,次の点に注意する。

− XML インスタンスデータの構造には,属性の使用方法を含めて,柔軟性が十分にある。XML 名前空

間が使用されていること,文書作成者が選択したラッパ要素にインスタンスデータが含まれているこ

とに注意する。

− number 及び expiry の二つの空要素は,XML 構造内のプレースホルダとして機能し,利用者が指定し

たフォームデータが格納される。

−  フォーム制御に対する初期値("cc")はインスタンスデータで指定される。この例では,属性 method に

対して指定されている。利用者がフォーム制御に表示されているデータを変更した場合,送付される

XML

内では,この初期値は利用者の入力で置き換えられる。

このインスタンスデータをフォーム制御と関連付けるためには,フォーム制御上の ref 属性を,次の

合式を使用して,インスタンスデータ上の適切な部分を指すように変更する必要がある。

例 ref を使用したフォーム制御のインスタンスノードへの結合

... xmlns:my="http://commerce.example.com/payment"

   ...

  <xforms:select1 ref="@method">...</xforms:select1>

  ...

  <xforms:input ref="my:number">...</xforms:input>

  ...

  <xforms:input ref="/my:payment/my:expiry">...</xforms:input>

結合式の基本は XPath [XPath 1.0]であり,次に示すとおりに属性を参照するのに“@”を使用する。こ

こでは説明の都合上,最初の二つの式で XPath の文脈ノードを使用している。この場合の文脈ノードは最

上位要素の my:payment である。三つ目の式では,絶対パスを使用している。

2.3

値の制約


7

X 4178

:2007

XForms

では,フォームへの入力時に,データの妥当性を検証することができる。収集される値の型に

関する情報が足りない場合には値はすべて文字列として返されるが,インスタンスデータ内の値には型を

割り当てることができる。この例では,number には 14∼18 けたの数だけを,expiry には月及び年の組合

せとして有効なものだけを入力できるようにすることが望ましい。

さらに,number 及び expiry に対するクレジットカード情報のフォーム制御は,method で"cc"が選択され

た場合にだけ意味をもつ。その場合には必す(須)である。

文書作成者は,付加的な

モデル項目特性を指定することで,フォーム内に多くの宣言的な妥当性検証情

報を含めることができる。この検証情報は W3C XML Schema だけでなく,relevant などの XForms 固有の

追加情報からも取得される。XForms 固有の特性は bind 要素に指定される。一方,W3C XML Schema

制約

は内部又は外部の W3C XML Schema の素片として記述される。例を次に示す。

例  モデル項目特性を使用する宣言的な妥当性検証情報

... xmlns:my="http://commerce.example.com/payment" ...

  <xforms:model>

    ...

    <xforms:bind nodeset="/my:payment/my:number"

                                      relevant="/my:payment/@method = 'cc'"

                                      required="true()"

                                      type="my:ccnumber"/>

    <xforms:bind nodeset="/my:payment/my:expiry"

                                      relevant="/my:payment/@method = 'cc'"

                                      required="true()"

                                      type="xsd:gYearMonth"/>

    <xsd:schema ...>

      ...

      <xsd:simpleType name="ccnumber">

        <xsd:restriction base="xsd:string">

                    <xsd:pattern value="¥d{14,18}"/>

                </xsd:restriction>

            </xsd:simpleType>

      ...

        </xsd:schema>

  </xforms:model>

注記  前記の例で,relevant 式には(“/”で始まる)XPath の絶対記法が使用されている。これは,計

算される式の評価文脈ノードは bind ref の結合式によって決定され(7.4 参照),例えば,最初

の bind 要素の relevant 属性の相対ノードパスはすべて/my:payment/my:number が基準になるため

である。

2.4

単一文書内の複数フォーム

XForms

処理では,フォームを含んでいる(単一の)文書において個々のフォームの数についての制限

はない。単一文書に複数のフォームを含める場合,各フォームに対して個別の model 要素が必要であり,


8

X 4178

:2007

文書の他の場所から参照できるように,それぞれに id 属性を付ける必要がある。

さらに,フォーム制御では,結合するインスタンスデータを含む model 要素を指定することが望ましい。

これは結合属性の一部である model 属性を使用して行う。model 属性が結合要素上に指定されない場合,

最も近い祖先の結合要素の model 属性が使用され,それも指定されない場合は,文書順で最初の XForms

モデルが使用される。この方法は,“有効範囲を考慮した解決”と呼ばれ,XForms で頻繁に使用される。

次の例では,前記の電子商取引フォームに意見調査を加える。

例 poll モデルを加える。

<xforms:model>

  <xforms:instance>

    ...payment instance data...

  </xforms:instance>

  <xforms:submission action="http://example.com/submit"

                                                  method="post"/>

</xforms:model>

<xforms:model id="poll">

  <xforms:instance>

        <helpful/>

  </xforms:instance>

  <xforms:submission id="pollsubmit" .../>

</xforms:model>

次のマーク付けが文書の body セクションに追加される。

例 poll モデル用のフォーム制御

<xforms:select1 ref="/helpful" model="poll">

  <xforms:label>

このページは役立ちましたか?</xforms:label>

  <xforms:item>

    <xforms:label>

まったく役に立たなかった。</xforms:label>

        <xforms:value>0</xforms:value>

  </xforms:item>

  <xforms:item>

    <xforms:label>

ほとんど役に立たなかった。</xforms:label>

        <xforms:value>1</xforms:value>

  </xforms:item>

  <xforms:item>

    <xforms:label>

少しは役に立った。</xforms:label>

        <xforms:value>2</xforms:value>

  </xforms:item>

  <xforms:item>

    <xforms:label>

非常に役に立った。</xforms:label>

        <xforms:value>3</xforms:value>


9

X 4178

:2007

  </xforms:item>

</xforms:select1>

<xforms:submit submission="pollsubmit">

  <xforms:label>

送付</xforms:label>

</xforms:submit>

ここでの主な相違は,インスタンスを特定する model="poll"の使用である。submit は ID によって

submission

要素を参照し,結合属性を必要としないことに注意する。

XForms

の例は

附属書 にもある。

3

文書構造

XForms 1.0

は XML [XML 1.0]アプリケーションであり,他の XML 語い(彙)

,特に XHTML [XHTML 1.0]

の将来版の中で使われるように設計されている。XForms はこの

呼出し側の言語を必要とする。ここでは,

XForms

を他の文書型とともに使用することを可能にする,XForms の構造について記述する。

3.1

XForms

名前空間

XForms

名前空間の URI は http://www.w3.org/2002/xforms とする。

XForms

プロセサは,この名前空間の要素及び属性を認識できるように,XML 名前空間メカニズム[XML

Names]

を使用しなければならない。

3.2

XForms

主要属性集合

3.2.1

共通属性

共通属性集合は XForms 名前空間のすべての要素に適用される。

任意の属性

すべての XForms 要素で外来の属性を使用できる。

呼出し側の言語は,XForms の各要素で xsd:ID 型の属性を許可しなければならない。

3.2.2

リンク付け属性

リンク付け属性集合は,遠隔の資源へのリンクを含む XForms 要素に適用される。

src

src

属性には,自動的な取得を行うための,取得先 URI を割り当てる。

注記  リンク付け属性の URI は W3C XML Schema データ型 xsd:anyURI として定義されているので,

[XML Schema part 2]

に記述されている国際化に関する恩恵及び空白についての注意が同様に適

用される。

リンクにおける相対 URI の振る舞いは,[XML Base]による処理が強く推奨されてはいるが,

呼出し側の

言語に依存する。

注記 XForms 作業グループは,リンク構造の記述に関して,HTML 作業グループの動向を追ってい

る。

3.2.3

単一ノード結合属性

次の属性は一つのフォーム制御又はアクションと,XPath 式で指定される一つのインスタンスデータノ

ードとの結合を定義する。

ref

XPath

として解釈される

結合式。bind 属性が指定されている場合,この属性は意味をもたない。


10

X 4178

:2007

model

XForms

モデルセレクタ。この結合要素に関連付けられる XForms モデルの ID を指定する。この属

性は,bind 属性が指定されている場合,この結合要素に関して意味をもたない。XForms モデルの文

脈決定規則については,7.4 を参照する。

bind

bind

要素への参照。

ref

又は bind のいずれかを指定する必要がある。bind が指定された場合,ノードは参照先の bind によっ

て決定される。

model

属性に指定された IDREF が model 要素上にはない ID を指している場合,又は bind 属性に指定さ

れた IDREF が bind 要素上にはない ID を指している場合,XForms プロセサは例外(4.5.1 参照)を発生さ

せる。

先頭ノード規則:サイズが 1 を超えるノード集合が単一ノード結合属性に割り当てられている場合,ノ

ード集合の中から文書順で先頭のノードが使われる。

3.2.4

ノード集合結合属性

次の属性はフォーム制御又はアクションと,XPath 式で指定されるノード集合との結合を定義する。

nodeset

XPath

として解釈される

結合式。bind 属性が指定されている場合,この属性は意味をもたない。

model

XForms

モデルセレクタ。この結合要素に関連付けられる XForms モデルの ID を指定する。この属

性は,bind 属性が指定されている場合,この結合要素に対して意味をもたない。XForms モデルの文

脈決定規則については,7.4 を参照する。

bind

bind

要素への参照。

nodeset

又は bind のいずれかを指定する必要がある。bind が指定された場合,ノード集合は参照先の bind

によって決定される。

model

属性に指定された IDREF が model 要素上にはない id を指している場合,又は bind 属性に指定さ

れ た IDREF が bind 要 素 上 に は な い id を 指 し て い る 場 合 , XForms プ ロ セ サ は , 例 外 ( 4.5.1 

xforms-binding-exception

イベントを参照する。

)を発生させる。

3.2.5

モデル項目特性属性

この集合はモデル項目特性のそれぞれに対応して属性を一つ含む。この属性の名前は,6.1 で定義されて

いるモデル項目特性の名前に正確に一致する。

3.3

XForms

主要モジュール

XForms

主要モジュールは XForms の主な構造化要素を定義するもので,XForms を含む側の文書に包含

することが意図されている。このモジュールに含まれる要素及び属性は

表 のとおりとする。


11

X 4178

:2007

表 1−主要モジュールに含まれる要素及び属性

要素

属性

最小内容モデル

model

共通,イベント,functions (QNameList),schema(xsd:anyURI のリスト) (instance|xsd:schema|

submission|bind|

アクション)*

instance

共通,リンク付け

(任意)

submission

共通,ref(

結合式),bind (xsd:IDREF),action (xsd:anyURI),method

("post"|"get"|"put"|"form-data-post"|"urlencoded-post"|qname-but-not-ncname),

 version (xsd:NMTOKEN)

,indent (xsd:boolean),mediatype (xsd:string),

 encoding (xsd:string)

,omit-xml-declaration (xsd:boolean),standalone

(xsd:boolean)

,cdata-section-elements (QNameList),replace

("all"|"instance"|"none"|qname-but-not-ncname)

,instance (xsd:IDREF),

separator (';' | '&')

,includenamespaceprefixes (xsd:NMTOKENS)

アクション*

bind

共通,モデル項目特性,nodeset(

モデル結合式) (bind)*

表 に示したとおりに,XForms アクションモジュールで定義されている要素は,そのモジュールが取

り込まれている場合,model 及び submission の内容モデル中でも許可される。

含む側の文書中のこれらの構造化要素は,通常は可視化されない。

XForms

プロセサは,認識できないすべての外来の名前空間属性を無視しなければならない。そして,

認識できない外来の名前空間要素を 3.4 の規則に従って処理しなければならない。

外来の名前空間要素が存在するかどうかは,含む側の文書プロファイルの定義に依存する。

3.3.1

model

要素

この要素は,フォーム定義を表し,XForms モデルを定義する要素を格納する目的で使用される。XForms

を含んでいる文書内の model 要素の数についての制限はない。

共通属性:共通,イベント

オブザーバの作成を容易にするために,XML イベントの属性を使用することができる。この要素は

XForms

アクションではなく,イベントベースの振る舞いは事前定義されていない。

特殊属性:

functions

省略可能。この XForms モデルに必要な XPath 拡張関数(QNames で表される。

)のスペース区切り

のリスト。この属性の使用方法については 7.12 を参照する。

schema

省略可能。この model 要素の外にある W3C XML Schema 文書を指す xsd:anyURI のリスト。XForms

プロセサはこの属性にリストされたすべての W3C XML Schema を処理しなければならない。個々の

XForms

モデルには,名前空間宣言当たり一つの W3C XML Schema という制限があり,これには内部

の W3C XML Schema 及びリンクされた W3C XML Schema も含まれる。

注記 schema リストは,XForms を含んでいる文書内の他の場所にある要素を指す“#myschema”な

どの URI 素片を含んでもよい。

model

の使用方法の単純な例を示す。ここでは,XForms 名前空間は指定されていない。

例  モデル

<model id="Person" schema="MySchema.xsd">

  <instance src="http://example.com/cgi-bin/get-instance" />

  ...


12

X 4178

:2007

</model>

3.3.2

instance

要素

この省略可能な要素は,初期インスタンスデータを含むか参照する。

共通属性:共通

特殊属性:

リンク付け属性

省略可能。外部定義された初期インスタンスデータへのリンク。リンク走査に失敗した場合,例外

4.5.2 参照)として処理する。

この属性及び行内内容の両方が提供された場合,4.2.1 に規定しているとおり,リンクが優先する。

初期インスタンスデータがリンクによって指定された場合,インスタンスデータは,リンクされた資源

の XPath データモデルを作成することで形成される。

初期インスタンスデータが行内内容によって指定された場合,インスタンスデータは,最初に行内内容

の分離コピー(外側の祖先から継承された名前空間を含む。

)を作成し,その分離コピー上に XPath データ

モデルを作成することで得られる。この分離コピーは,独立した別の文書として存在する場合に整形式

XML

となり得るものでなければならない。つまり,instance の要素内容は単一の子要素に制限される。

行内内容でインスタンスが指定され,XML 誤りが原因で分離コピーを作成できなかった場合,処理は

xforms-link-exception

で停止することが望ましい。この誤りは,例えば,行内内容に二つの要素ノードがあ

り,それが,ドキュメント要素が二つ存在する XML 文書の作成を意味している場合などに発生する。

注記 1 XForms

1.1

では,新しい例外イベントが規定される予定である。

注記 2 XPath データモデルのデータは,処理命令,コメントノード及びすべてのホワイトスペース

も含め,すべて処理中及び送付中に維持されなければならない。

注記 3 XForms 文書作成者は,名前空間ノードの直列化に関する制御を追加する必要がある場合,

submission

要素の includenamespaceprefixes 属性を使用することができる。

3.3.3

submission

要素

この要素は,送付の対象及び方法についての宣言的な指示を表す。送付処理の詳細については,箇条 11

を参照する。

共通属性:共通

特殊属性:

bind

省略可能。bind 要素への参照。この属性が指定された場合,ref 属性に指定されたどの結合参照より

も優先する。

ref

省略可能。インスタンスデータの部分送付を可能にするセレクタ

結合式。選択されたノード及びそ

のすべての子孫が送付対象となる。  既定値は“/”とする。

action

必す(須)

。インスタンスデータの送付先 URI。リンクにおける相対 URI の振る舞いは,[XML Base]

による処理が強く推奨されてはいるが,呼出し側の言語に依存する。

method

必す(須)

。直列化されたインスタンスデータの送付に使われるプロトコルを示す。既定値はない。


13

X 4178

:2007

version

省略可能。直列化される XML の版数(version)を示す属性。

indent

省略可能。

直列化するときに読みやすくするための空白ノードを挿入するべきかどうかを示す属性。

mediatype

省略可能。XML インスタンスの直列化のためのメディア型を示す属性。文書作成者は,指定した型

が application/xml と互換性があることを確実にすることが望ましい。

encoding

省略可能。直列化のための符号化を示す属性。

omit-xml-declaration

省略可能。インスタンスデータを直列化するときに XML 宣言を省略するかどうかを示す属性。

standalone

省略可能。直列化される XML に standalone 宣言を含めるかどうかを示す属性。

cdata-section-elements

省略可能。CDATA セクションを伴う形式で直列化する要素名を示す属性。

replace

省略可能。送付実行後に返された情報をどのように処理するかを示す属性。この属性が指定されな

かった場合,

“all”が仮定される。

instance

省略可能。replace 属性の値が"instance"のときに置き換えるインスタンスを指定する属性。属性が存

在しない場合の既定値は送信データを含んでいるインスタンスとする。この属性が送信に関する同じ

モデル内のインスタンスを指定していない場合,xforms-binding-exception イベント(4.5.1 参照)を生

じる。

separator

省略可能。URL 符号化において,名前及び値の組のそれぞれを区切る文字を示す属性。省略時の値

は“;”とする。

includenamespaceprefixes

省略可能。名前空間の直列化に対する制御を指定する属性。指定しなかった場合は,インスタンス

データ内のすべての名前空間ノードが直列化の対象になる。指定する場合,明示的に使用されるもの

を除いた,直列化の対象とする名前空間接頭辞のリストを指定する。[Exc-C14N]にあるように,特別

な値#default は,既定の名前空間を示す。

次の例は,submission 要素のさまざまな任意機能が application/xml としての直列化にどのように影響す

るかを示す。次の XForms の素片を考える。

<xforms:model xmlns:xforms="http://www.w3.org/2002/xforms"

                 xmlns:my="http://ns.example.org/2003">

  <xforms:instance>

        <qname xmlns="">my:sample</qname>

  </xforms:instance>

  <xforms:submission method="post" action="..."/>


14

X 4178

:2007

</xforms:model>

includenamespaceprefixes

属性が指定されていないため,すべての名前空間ノードが直列化される。結果

として直列化されるインスタンスデータは次のとおりになる。

<qname xmlns:xforms="http://www.w3.org/2002/xforms"

       xmlns:my="http://ns.example.org/2003">my:sample</qname>

特に,XForms 名前空間が直列化されていることに注意する。この例で,必要な my 接頭辞を維持しなが

ら,不要な XForms 名前空間を含めないようにするには,includenamespaceprefixes="my"を submission 要素

に追加しなければならない。この属性を指定する場合,文書作成者は,送付されたインスタンスデータに

よって非明示的に使用されるすべての名前空間接頭辞を指定しなければならない。

次の属性は,"yes"|"no"ではなく xsd:boolean を使用することを除いて,[XSLT 1.0]の output 要素の属性と

(名前,処理及び既定値の点で)同一とする。

version

indent

encoding

omit-xml-declaration

cdata-section-elements

注記  次の XSLT 属性に相当するものは,XForms には存在しない。

doctype-system

doctype-public

XForms

アクションモジュールで定義される要素は,そのモジュールが取り込まれる場合,submission 内

容モデルでも許可される。

3.3.4

bind

要素

bind

要素は,nodeset 属性に指定されている

モデル結合式によって,インスタンスデータからノード集合

を選択する。bind 要素の他の属性には,ノード集合の個々のノードに適用される

モデル項目特性が符号化

されている。bind に xsd:ID 型の属性が存在する場合,bind はその識別子を選択されたノード集合に関連付

ける。

共通属性:共通,モデル項目特性

特殊属性:

nodeset

bind

が作用するノードの集合を示す

モデル結合式。モデル結合式は,7.5.2 に定義する。

insert

アクションによってノードが追加されたとき,新しく追加されたノードは結合式に一致するすべて

のノード集合に含められる(9.3.5 参照)

評価文脈に対する結合の影響の詳細については,7.4 を参照する。

3.4

XForms MustUnderstand

モジュール

extension

要素又は,

呼出し側の言語で定義された外来の名前空間の要素は,フォームによっては操作上

重要な場合もある。このことを示すために,MustUnderstand モジュールは,すべての要素で使用できる一

つの属性を定義する。


15

X 4178

:2007

表 2MustUnderstand モジュール

要素

属性

最小内容モデル

すべて xforms:mustUnderstand

(xsd:boolean)

要素が mustUnderstand="true"とマークされていて,XForms プロセサにその要素の処理が実装されていな

い場合,利用者に誤りを報告し,終了しなければならない。

3.5

XForms

拡張モジュール

呼出し側の言語に XForms を含める方法は幾つかある。その一つに,整形式処理だけを使用し,妥当性

検証を行わない方法がある。別の方法として,XHTML 1.0 のように,事前定義されている要素だけを許す

厳密な妥当性検証を行う方法がある。もう一つの普通の方法として,幾つかの選択された場所に規制外の

内容を配置する方法がある。この方法を選択する呼出し側の言語では拡張モジュールを使用できる。

表 3−拡張モジュール

要素

属性

最小内容モデル

extension

共通

任意

3.5.1

extension

要素

省略可能。extension 要素は,XForms 名前空間以外の名前空間に属するアプリケーション固有の拡張要

素を格納する。この規定では,この要素についての処理は定義しない。

共通属性:共通

例えば,次のとおりに RDF メタデータをフォーム制御に追加できる。

<input ref="dataset/user/email" id="email-input">

  <label>

電子メールアドレスを入力してください</label>

  <extension>

    <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">

      <rdf:Description rdf:about="#email-input">

        <my:addressBook>personal</my:addressBook>

            </rdf:Description>

        </rdf:RDF>

  </extension>

</input>

4

処理モデル

ここでは XForms プロセサによって導かれるさまざまな状態及びそれらの各状態で起こり得る状態遷移

を列挙することによって XForms 処理モデルを宣言的に定義する。また,それらの状態のそれぞれで満足

しなければならない前状態及び後状態を列挙する。XForms プロセサは,最終結果がここで規定している

内容に一致する限りは,どのような方法で実装してもよい。

状態遷移は通常,XForms 木の一部にイベントを発生することで開始される。XForms 処理モデルは次の

分類のイベントから構成される。

−  初期化


16

X 4178

:2007

−  相互作用

−  通知

−  誤り状態

4.1

イベント概要

XForms

の処理はイベント,

イベントハンドラ及びイベント応答の観点から定義される。

XForms

は[DOM2

Events] [XML Events]

で定義されるイベントシステムを使用するが,このイベントシステムでは,イベント

捕獲,ターゲットへのイベントの到達及び最後のイベントバブル動作の各過程が定義されている。

箇条 を通じて,

ターゲット要素として

“フォーム制御”

という語が使用された場合,

それは input,

secret

textarea

,output,upload,trigger,range,submit,select,select1 及び group のすべてが対象であることを示

す。

表 4−イベント名,取消し可能の可否,バブルの可否及びターゲット要素

イベント名

取消し可能

バブル

ターゲット要素

4.2

初期化イベント

xforms-model-construct

いいえ

はい model

xforms-model-construct-done

いいえ

はい model

xforms-ready

いいえ

はい model

xforms-model-destruct

いいえ

はい model

4.3

相互作用イベント

xforms-previous

はい

いいえ

フォーム制御

xforms-next

はい

いいえ

フォーム制御

xforms-focus

はい

いいえ

フォーム制御

xforms-help

はい

はい

フォーム制御

xforms-hint

はい

はい

フォーム制御

xforms-rebuild

はい

はい model

xforms-refresh

はい

はい model

xforms-revalidate

はい

はい model

xforms-recalculate

はい

はい model

xforms-reset

はい

はい model

xforms-submit

はい

はい submission

4.4

通知イベント

DOMActivate

はい

はい

フォーム制御

xforms-value-changed

いいえ

はい

フォーム制御

xforms-select

いいえ

はい item,itemset 又は case

xforms-deselect

いいえ

はい item,itemset 又は case

xforms-scroll-first

いいえ

はい repeat

xforms-scroll-last

いいえ

はい repeat

xforms-insert

いいえ

はい instance

xforms-delete

いいえ

はい instance

xforms-valid

いいえ

はい

フォーム制御

xforms-invalid

いいえ

はい

フォーム制御

DOMFocusIn

いいえ

はい

フォーム制御

DOMFocusOut

いいえ

はい

フォーム制御

xforms-readonly

いいえ

はい

フォーム制御

xforms-readwrite

いいえ

はい

フォーム制御

xforms-required

いいえ

はい

フォーム制御


17

X 4178

:2007

表 4−イベント名,取消し可能の可否,バブルの可否及びターゲット要素(続き)

イベント名

取消し可能

バブル

ターゲット要素

xforms-optional

いいえ

はい

フォーム制御

xforms-enabled

いいえ

はい

フォーム制御

xforms-disabled

いいえ

はい

フォーム制御

xforms-in-range

いいえ

はい

フォーム制御

xforms-out-of-range

いいえ

はい

フォーム制御

xforms-submit-done

いいえ

はい submission

xforms-submit-error

いいえ

はい submission

4.5

誤り表示

xforms-binding-exception

いいえ

はい

結合式を 含むこ とができ
るすべての要素

xforms-link-exception

いいえ

はい model

xforms-link-error

いいえ

はい model

xforms-compute-exception

いいえ

はい model

4.2

初期化イベント

ここでは

初期化

過程のさまざまな段階を定義する。プロセサは XForms モデルを含んでいる文書内のそ

れぞれの XForms モデルに xforms-model-construct イベントを発生することによって初期化を開始する。

XForms

プロセサに対する初期化要求がどのように行われるのかについては,実装依存とする。

4.2.1

xforms-model-construct

イベント

XForms

プロセサによって各 XForms モデルに発生する。

ターゲット:model

バブル:はい

取消し可能:いいえ

文脈情報:なし

このイベントに対する既定アクションは次のとおりとする

(結果がこれと同じになるように実装する。

1)

すべての W3C XML Schema を読み込む。遠隔の文書にアクセスしているとき,又は遠隔の文書を処理

しているときに誤りが発生した場合,処理は例外(4.5.2 参照)を生成して終了する。

2)

初期インスタンスデータ用に外部ソースが指定されている場合,それから XPath データモデル(箇条

7

参照)を構築する。外部ソースが指定されず,内部の初期インスタンスデータが指定されている場

合は,それを代わりに使用する。外部の初期インスタンスデータが整形式 XML でない場合,又は取

得できない場合,処理は例外(4.5.2 参照)を生成して終了する。いずれも指定されていない場合,こ

の過程ではデータモデルを構築せず,利用者インタフェース構築(4.2.2 参照)の過程で構築する。

3)

該当する場合,P3P [P3P 1.0]を初期化する。

4)

インスタンスデータを構築する。インスタンスデータに挿入される文字列はすべて,Unicode 正規化

の対象となる。bind 要素をすべて文書順に処理することで,すべてのモデル項目特性を初期化する。

各 bind 要素に対して行う処理は次のとおりとする。

a) bind

要素の nodeset 属性を評価し,ノード集合を選択する。

b)

ノード集合の各ノードに対して,bind 要素内の残りの属性に従ってモデル項目特性を適用する。各

属性(6.1 で定義される特性に一致する名前をもつ)の文字列値を同じ名前のモデル項目特性の局所

値として複写する。


18

X 4178

:2007

c)

同名のモデル項目特性がノードに既に含まれている場合,この XForms を含んでいる文書の XForms

処理は例外(4.5.1 参照)を生成して終了する。

5)

この model 要素に対して,xforms-rebuild,xforms-recalculate,xforms-revalidate を順番に実行する(利

用者インタフェースがまだ初期化されていないため,xforms-refresh は実行しない。

すべての XForms モデルが初期化された後,xforms-model-construct-done イベントが各 model 要素に発生

する。

4.2.2

xforms-model-construct-done

イベント

xforms-model-construct

処理の完了後に発生する。

ターゲット:model

バブル:はい

取消し可能:いいえ

文脈情報:なし

このイベントに対する既定アクションは,XForms モデルを含んでいる文書に含まれている XForms モデ

ルの数によらず 1 回だけ実行され,それぞれのフォーム制御について次の処理を行う(結果がこれと同じ

になるように実装する。

処理の進行には二通りあるが,

いずれの方法で進行するのかは,

最初のフォーム制御を処理したときに,

model

内の instance が存在していたかどうかに依存する。

(instance に関する)最初のフォーム制御を処理したときに,フォーム制御から参照される instance が存

在していた場合:

1)

結合式を評価し,それが指しているノードが存在することを確認する。ノードが存在しない場合,フ

ォーム制御は,それが結合しているモデル項目の relevant モデル項目特性の評価結果が false である場

合と同様に振る舞うことが望ましい。

instance

に関する最初のフォーム制御を処理したときに,フォーム制御から参照される instance が存在し

ていなかった場合:

1) instance

への最初の参照では,次に示す規則に従って,既定の instance を作成する。

a)

ルート instanceData 要素を作成する。

b)

利用者インタフェース制御の結合式を使用して,インスタンスデータ要素ノードを name として作

成する。name が QName として妥当でない場合,処理は例外(4.5.1 参照)を生成して終了する。

2)

(自動的に作成された)instance への 2 回目以降の参照では,次の処理を行う。

a)

一致するインスタンスデータノードが見つかった場合,利用者インタフェース制御をその要素に関

連付ける。

b)

一致するインスタンスデータノードが見つからない場合,利用者インタフェース制御の結合式を使

用して,インスタンスデータノードを name として作成する。name が QName として妥当でない場

合,処理は例外(4.5.1 参照)を生成して終了する。

すべてのフォーム制御が初期化された後,xforms-ready イベントが各 model 要素に発生する。

4.2.3

xforms-ready

イベント

xforms-model-construct-done

処理の一部として発生する。

ターゲット:model

バブル:はい

取消し可能:いいえ


19

X 4178

:2007

文脈情報:なし

このイベントは通知イベントであり,このイベントに対する既定アクションは存在しない。

4.2.4

xforms-model-destruct

イベント

XForms

プロセサが終了することを通知する目的で,プロセサによって発生する。プロセサの終了は利

用者の動作,load XForms 動作,又はフォーム送付の結果として生じる。

ターゲット:model

バブル:いいえ

取消し可能:いいえ

文脈情報:なし

このイベントは通知イベントであり,このイベントに対する既定アクションは存在しない。

4.3

相互作用イベント

4.3.1

xforms-next

及び xforms-previous イベント

利用者からの,次又は前のフォーム制御へのナビゲーション要求に対応して発生する。

ターゲット:フォーム制御

バブル:いいえ

取消し可能:はい

文脈情報:なし

これらのイベントに対する既定アクションは,

“既定のナビゲーション順序に従って移動する”とする。

インタフェースとしてキーボードを考えた場合,“tab”キーに対して xforms-next イベントが生成され,

“shift”キー+“tab”キーに対して xforms-previous イベントが生成されることが考えられる。

ナビゲーションは XForms を含んでいる文書全体をベースに決定され,ナビゲーション順序は呼出し側

の言語で定義される。考えられる方法として,navindex 属性を使用し,個々のフォーム制御をナビゲーシ

ョン単位とする例を示す。<group>,<repeat>及び<switch>構造もナビゲーション単位として機能するが,

これらは単一のナビゲーションポイントを提供するのではなく,子のフォーム制御(及びその他の構造)

のための局所ナビゲーションコンテキストを作成する。ナビゲーション順序は次のとおりにして決定され

る。

1)

最初にナビゲーションの対象になるのは,navindex が指定され,その値に正の整数が割り当てられて

いるフォーム制御とする。

a)

最も外側のフォーム制御を navindex 値の昇順にナビゲートする。値は連続しなくてもよく,特別な

値で始まる必要もない。同一の navindex 値をもつフォーム制御は文書順にナビゲートする。

b)

祖先のフォーム制御(<group>,<repeat>及び<switch>)によって局所ナビゲーション順序が作成さ

れる。局所内のすべてのフォーム制御をその外側をナビゲートする前に navindex 値の昇順でナビゲ

ートする。同一の navindex 値をもつフォーム制御は文書順にナビゲートする。

2)

次に,navindex が指定されていないか,navindex の値として“0”が指定されているフォーム制御をナ

ビゲートする。これらのフォーム制御は文書順にナビゲートする。

3)

無効で非表示にされているフォーム制御,つまり relevant ではないフォーム制御には全体における相

対的な順序は割り当てられるが,ナビゲート対象にはならない。

4)

最後のフォーム制御の次(又は最初のフォーム制御の前)のナビゲーション順序については定義され

ない。XForms プロセサは,最初又は最後の制御に循環して移動する,フォーム上に着目対象(以下,

フォーカスとする。

)を置かない及びそれ以外のことをしてもよい。


20

X 4178

:2007

4.3.2

xforms-focus

イベント

フォーム制御にフォーカスが置かれた場合に発生する。

ターゲット:フォーム制御

バブル:いいえ

取消し可能:はい

文脈情報:なし

このイベントに対する既定アクションは次のとおりとする。

フォーム制御がフォーカスを受け入れることができる場合,フォーカスをターゲットのフォーム制御に

置く。繰返し構造へのフォーカス設定では,繰返しインデクスによって示される繰返し項目にフォーカス

を設定する。

4.3.3

xforms-help

及び xforms-hint イベント

ヘルプ又はヒント情報に関する利用者要求に対応して発生する。

ターゲット:フォーム制御

バブル:はい

取消し可能:はい

文脈情報:なし

これらのイベントに対する既定アクションは“help 要素又は hint 要素がフォーム制御に指定されている

場合はそれを使用して利用者に表示するメッセージを構成する”とする。これらの要素が指定されていな

い場合は,利用者エージェントは既定のヘルプ又はヒントメッセージを提供してもよいが,必す(須)で

はない。

4.3.4

xforms-refresh

イベント

特定の XForms モデルに関連付けられているすべてのフォーム制御を更新するリクエストに対応して発

生する。

ターゲット:model

バブル:はい

取消し可能:はい

文脈情報:なし

このイベントに対する既定アクションは次のとおりとする。

1)

すべての UI 結合は必要に応じて再評価されることが望ましい。

2)

ノードは確認されたフォーム制御への利用者入力によって,xforms-recalculate(4.3.6 参照)によって,

又は setvalue アクション(10.1.9 参照)によって変更することができる。インスタンスデータノード

の値が変更された場合,ノードは xforms-value-changed イベントを発生するためにマークされなければ

ならない。

3)

(ノードが)xforms-value-changed イベントを発生するためにマークされている場合,適切なモデル項

目特性通知イベント(xforms-optional 又は xforms-required,xforms-readwrite 又は xforms-readonly 及び

xforms-enabled

又は xforms-disabled)のすべてについても発生するために(ノードは)マークされなけ

ればならない。

4)

それぞれのフォーム制御のために,それぞれ結合されたノードに発生するためにマークされている通

知イベント(xforms-value-changed,xforms-valid,xforms-invalid,xforms-optional,xforms-required,

xforms-readwrite

,xforms-readonly,xforms-enabled 及び xforms-disabled)は発生されなければならない。


21

X 4178

:2007

通知イベント xforms-out-of-range 又は xforms-in-range も適切に発生されなければならない。この規定

はイベントの順序を規定しない。

5)

“利用者インタフェースはモデルの次に示す状態を反映する”とする。これは,すべてのフォーム制

御に,それに結合されているインスタンスデータの次の値が反映されることを意味する。

−  現在の値

−  妥当性

− required,readonly 又は relevant であるかどうか

4.3.5

xforms-revalidate

イベント

特定の XForms モデルに対する再検証要求に対応して発生する。

ターゲット:model

バブル:はい

取消し可能:はい

文脈情報:なし

インスタンスノードは次の状態を保つならば妥当とする。

− constraint モデル項目特性が真である。

−  ノードが(type モデル項目特性によって関連付けられるものを含む。)すべての可能な W3C XML

Schema

定義を満たす。

注記  前記の状態を満たすノードは,それが空であっても必す(須)であるならば妥当である。

このイベントに対する既定アクションは次のとおりとする。

モデル内のすべての instance 要素内のすべてのインスタンスデータノードは,前述の定義に従って妥当

性を検査される。ノードの妥当性が変化する場合,そのノードは,次に示す xforms-refresh 中にフォーム制

御に結合される適切な通知イベント(xforms-valid 又は xforms-invalid)を発生させるためにマークされる。

−  ノードが非妥当から妥当に変化する場合,ノードは xforms-valid イベントを発生させるためにマーク

される。

−  ノードが妥当から非妥当に変化する場合,ノードは xforms-invalid イベントを発生するためにマークさ

れる。

4.3.6

xforms-recalculate

イベント

特定の XForms モデルに関連付けられるすべての計算を再計算する要求に対応して発生する。

ターゲット:model

バブル:はい

取消し可能:はい

文脈情報:なし

このイベントに対する既定アクションは次のとおりとする。

すべてのインスタンスデータ項目の値を,それらに“calculate”制約が関連付けられている場合,その

制約に一致させる。計算される式を含むことができるすべてのモデル項目特性を評価して,その値を決定

する。変化するモデル項目特性は,xforms-refresh で xforms-value-changed 通知を引き起こす更なるノード

値の変更に寄与する。どんなイベントを発生させるかを決定するために,そのモデル項目特性をマークし

て xforms-revalidate 及び xforms-refresh を補助する。

− required モデル項目特性が変更されるとき,required が真であれば,xforms-required イベントを発生さ

せるためにマークされなければならず,required が偽であれば,xforms-optional イベントを発生させる


22

X 4178

:2007

ためにマークされなければならない。

− readonly モデル項目特性が変更されるとき,readonly が真の場合,xforms-readonly イベントを発生させ

るためにマークされなければならず,readonly が偽の場合,xforms-readwrite イベントを発生させるた

めにマークされなければならない。

− relevant モデル項目特性が変更されるとき,relevant が真の場合,xforms-enabled イベントを発生させる

ためにマークされなければならず,relevant が偽の場合,xforms-disabled イベントを発生させるために

マークされなければならない。

XPath

式は一つ以上のインスタンスノードの,値又はモデル項目特性(例えば,required,relevant)のい

ずれかと結合する。XPath 式と単一インスタンスノードの値又はモデル項目特性との組合せを,再計算の

対象となる一つの計算単位,つまり

代入式と考える。

モデル項目特性を再計算するときに XPath 式が評価されるが,その評価文脈は,7.4 で計算される式に対

して定義されているとおりに,そのモデル項目特性を適用するモデル結合式によって決まる。XPath 式で

他のインスタンスノードを

参照(reference)又は言及(refer to)してもよいが,その場合はそのインスタンスノ

ードの値が

参照される。参照される各インスタンスノードから見た場合,そのインスタンスノードを直接

参照するそれらの代入式はそのインスタンスノードに

依存するものとする。calculate 式における現在のノ

ード値への参照は明示的に無視される。すなわち,ある代入式内でその代入式が関連付けられているイン

スタンスノードを参照している場合,そのインスタンスノードはそれ自身に依存しない。あるインスタン

スノードから代入式に至る依存の経路がある場合(他のインスタンスノードを経由する場合も含める。

代入式にとってそのインスタンスノード(値は計算されるものでも,そうでなくてもよい。

)は

計算に必要

なものとする。代入式が自身を計算に必要とする場合,その代入式は循環依存の一部とする。

注記  文書作成者は,その結果が十分に定義されていないため,calculate 式で現在のノード値を参照

することは避けることが望ましい。ただし,required 又は readonly などの他のモデル項目特性

では,自己参照の存在が十分に定義されている。

再計算イベントの開始時には,例えば,利用者入力がインスタンスに伝ぱしたことによって値が変更さ

れている一つ以上のインスタンスノードのリスト が存在する。

1) XForms

プロセサは,中のいずれの要素も計算に必要としない代入式については再計算を行わないほ

うがよい。

2) XForms

プロセサは,中の一つ以上の要素を計算に必要とする代入式について,再計算を 1 回だけ実

行することが望ましい。

3) XForms

プロセサは,代入式 の再計算を,が必要とするすべてのインスタンスノードの代入式の

再計算の後に行わなければならない(同様に,XForms プロセサは,に関連付けられているインスタ

ンスノードを計算に必要とするすべての代入式の再計算の前に,代入式 を再計算しなければならな

い。

4)

最後に,代入式が循環依存の一部であり,中の要素を計算に必要とする場合,XForms プロセサは例

外(4.5.4 参照)を報告しなければならない。

附属書 では,適切な再計算動作を達成する方法の一つについて説明している。

4.3.7

xforms-rebuild

イベント

ある XForms モデル内で計算に必要な依存関係をたどる内部データ構造を再構築するための要求に対応

して発生する。

ターゲット:model


23

X 4178

:2007

バブル:はい

取消し可能:はい

文脈情報:なし

このイベントに対する既定アクションは次のとおりとする。

このイベントに対する既定アクションは,計算に必要な依存関係についてのデータ構造を再構築し,次

回 xforms-recalculate イベントがモデルに対して発生されたときに

完全な

再計算を行うために必要な,計算

式が関連付けられているインスタンスノードへの参照をすべて,変更リスト に含めることとする。

4.3.8

xforms-reset

イベント

モデルを再設定するための利用者要求に対応して発生する。

ターゲット:model

バブル:はい

取消し可能:はい

文脈情報:なし

このイベントに対する既定アクションは次のとおりとする。

xforms-ready

イベントを実行した直後の値及び木構造にインスタンスデータを再設定する。その後,

xforms-rebuild

,xforms-recalculate,xforms-revalidate 及び xforms-refresh の各イベントを順番に model 要素に

対して発生させる。

4.3.9

xforms-submit

イベント

箇条 11 に示す。

4.4

通知イベント

4.4.1

DOMActivate

イベント

ボタン又は“enter”キーの押下など,フォーム制御に対する“既定アクション要求”に対応して発生す

る。

ターゲット:フォーム制御

バブル:はい

取消し可能:はい

文脈情報:なし

このイベントは通知イベントであり,このイベントに対する既定アクションは存在しない。

4.4.2

xforms-value-changed

イベント

フォーム制御に結合されているインスタンスデータノードの変更に対応して発生する。

ターゲット:フォーム制御

バブル:はい

取消し可能:いいえ

文脈情報:なし

このイベントは通知イベントであり,このイベントに対する既定アクションは存在しない。

変更に対応してこのイベントを発生するとして,結合されているインスタンスデータノードがマークさ

れている場合,このイベントは xforms-refresh イベント(4.3.4 参照)中に発生する。

注記 1  増分処理の場合,この規定はこれらのイベントを XForms プロセサがどの頻度で発生させる

かを定義しない。実装では処理を最適化することが望ましい(例えば,入力されるそれぞれ

の文字に対して画面をフラッシュしないなど)


24

X 4178

:2007

注記 2  このイベントに関連付けられるインスタンスデータへの変更は,イベントの発生前に行われ

ている。

4.4.3

xforms-select

及び xforms-deselect イベント

select

,select1 又は switch 中のアイテムの選択若しくは選択解除に対応して発生する。

ターゲット:item,itemset 又は case

バブル:はい

取消し可能:いいえ

文脈情報:なし

これらのイベントは通知イベントであり,これらのイベントに対する既定アクションは存在しない。

4.4.4

xforms-scroll-first

及び xforms-scroll-last イベント

setindex

動作が repeat の範囲外のインデクスの設定を試みたときに発生する。

ターゲット:repeat

バブル:はい

取消し可能:いいえ

文脈情報:なし

これらのイベントは通知イベントであり,これらのイベントに対する既定アクションは存在しない。

4.4.5

xforms-insert

及び xforms-delete イベント

イベントハンドラが insert 又は delete の XForms 動作を呼び出し,繰返し項目を正常に追加又は削除した

ときに発生する。

ターゲット:instance

バブル:はい

取消し可能:いいえ

文脈情報:挿入又は削除に使用された Path 式 (xsd:string)

これらのイベントは通知イベントであり,これらのイベントに対する既定アクションは存在しない。

4.4.6

xforms-valid

イベント

インスタンスデータノードが妥当となったときに発生する。

ターゲット:フォーム制御

バブル:はい

取消し可能:いいえ

文脈情報:なし

このイベントは通知イベントであり,このイベントに対する既定アクションは存在しない。

xforms-revalidate

イベント(4.3.5 参照)中にこのイベントを発生するとして,結合されているインスタ

ンスデータノードがマークされている場合,このイベントは xforms-refresh イベント(4.3.4 参照)中に発

生する。

4.4.7

xforms-invalid

イベント

インスタンスデータノードが妥当でなくなったときに発生する。

ターゲット:フォーム制御

バブル:はい

取消し可能:いいえ

文脈情報:なし


25

X 4178

:2007

このイベントは通知イベントであり,このイベントに対する既定アクションは存在しない。

xforms-revalidate

イベント(4.3.5 参照)中にこのイベントを発生するとして,結合されているインスタ

ンスデータノードがマークされている場合,このイベントは xforms-refresh イベント(4.3.4 参照)中に発

生する。

4.4.8

DOMFocusIn

イベント

フォーム制御にフォーカスが当たったときに発生する。

ターゲット:フォーム制御

バブル:はい

取消し可能:いいえ

文脈情報:なし

このイベントは通知イベントであり,このイベントに対する既定アクションは存在しない。

4.4.9

DOMFocusOut

イベント

フォーム制御がフォーカスを失ったときに発生する。

ターゲット:フォーム制御

バブル:はい

取消し可能:いいえ

文脈情報:なし

このイベントは通知イベントであり,このイベントに対する既定アクションは存在しない。

4.4.10  xforms-readonly

イベント

インスタンスデータノードが読込み専用になったときに発生する。

ターゲット:フォーム制御

バブル:はい

取消し可能:いいえ

文脈情報:なし

このイベントは通知イベントであり,このイベントに対する既定アクションは存在しない。

xforms-recalculate

イベント(4.3.6 参照)又は xforms-refresh イベント(4.3.4 参照)中にこのイベントを

発生するとして,結合されているインスタンスデータノードがマークされている場合,このイベントは

xforms-refresh

イベント(4.3.4 参照)中に発生する。

4.4.11  xforms-readwrite

イベント

インスタンスデータノードが読書き可能となったときに発生する。

ターゲット:フォーム制御

バブル:はい

取消し可能:いいえ

文脈情報:なし

このイベントは通知イベントであり,このイベントに対する既定アクションは存在しない。

xforms-recalculate

イベント(4.3.6 参照)又は xforms-refresh イベント(4.3.4 参照)中にこのイベントを

発生するとして,結合されているインスタンスデータノードがマークされている場合,このイベントは

xforms-refresh

イベント(4.3.4 参照)中に発生する。

4.4.12  xforms-required

イベント

インスタンスデータノードが必す(須)となったときに発生する。


26

X 4178

:2007

ターゲット:フォーム制御

バブル:はい

取消し可能:いいえ

文脈情報:なし

このイベントは通知イベントであり,このイベントに対する既定アクションは存在しない。

xforms-recalculate

イベント(4.3.6 参照)又は xforms-refresh イベント(4.3.4 参照)中にこのイベントを

発生するとして,結合されているインスタンスデータノードがマークされている場合,このイベントは

xforms-refresh

イベント(4.3.4 参照)中に発生する。

4.4.13  xforms-optional

イベント

インスタンスデータノードが任意指定になったときに発生する。

ターゲット:フォーム制御

バブル:はい

取消し可能:いいえ

文脈情報:なし

このイベントは通知イベントであり,このイベントに対する既定アクションは存在しない。

xforms-recalculate

イベント(4.3.6 参照)又は xforms-refresh イベント(4.3.4 参照)中にこのイベントを

発生するとして,結合されているインスタンスデータノードがマークされている場合,このイベントは

xforms-refresh

イベント(4.3.4 参照)中に発生する。

4.4.14  xforms-enabled

イベント

インスタンスデータノードが有効となったときに発生する。

ターゲット:フォーム制御

バブル:はい

取消し可能:いいえ

文脈情報:なし

このイベントは通知イベントであり,このイベントに対する既定アクションは存在しない。

xforms-recalculate

イベント(4.3.6 参照)又は xforms-refresh イベント(4.3.4 参照)中にこのイベントを

発生するとして,結合されているインスタンスデータノードがマークされている場合,このイベントは

xforms-refresh

イベント(4.3.4 参照)中に発生する。

4.4.15  xforms-disabled

イベント

インスタンスデータノードが無効となったときに発生する。

ターゲット:フォーム制御

バブル:はい

取消し可能:いいえ

文脈情報:なし

このイベントは通知イベントであり,このイベントに対する既定アクションは存在しない。

xforms-recalculate

イベント(4.3.6 参照)又は xforms-refresh イベント(4.3.4 参照)中にこのイベントを

発生するとして,結合されているインスタンスデータノードがマークされている場合,このイベントは

xforms-refresh

イベント(4.3.4 参照)中に発生する。

4.4.16  xforms-in-range

イベント

インスタンスデータノードの値がフォーム制御によって表示できる値に変更されたときに発生する。


27

X 4178

:2007

ターゲット:フォーム制御

バブル:はい

取消し可能:いいえ

文脈情報:なし

このイベントは通知イベントであり,このイベントに対する既定アクションは存在しない。

このイベントは,フォーム制御に指定された制約条件から表示が不可能であったインスタンスデータノ

ードの値が,フォーム制御で表示することができるように変更されたときに発生する。

4.4.17  xforms-out-of-range

イベント

インスタンスデータノードの値がフォーム制御によって表示できないように変更されたときに発生する。

ターゲット:フォーム制御

バブル:はい

取消し可能:いいえ

文脈情報:なし

このイベントは通知イベントであり,このイベントに対する既定アクションは存在しない。

このイベントは,フォーム制御に指定された制約条件から,インスタンスデータノードの値を表示する

ことができないときに発生する。

4.4.18  xforms-submit-done

イベント

返された文書の処理も含めて送付処理が完了したときに発生する。

ターゲット:submission

バブル:はい

取消し可能:いいえ

文脈情報:なし

このイベントは通知イベントであり,このイベントに対する既定アクションは存在しない。

4.4.19  xforms-submit-error

イベント

箇条 11 で定義されている送付処理の失敗の指示として発生する。

ターゲット:submission

バブル:はい

取消し可能:いいえ

文脈情報:失敗した送付メソッド URI (xsd:anyURI)

このイベントは通知イベントであり,このイベントに対する既定アクションは存在しない。

4.5

誤り表示

誤り表示は XForms プロセサの非通常の状態の結果として発生する。これらの幾つかは処理を停止させ

る“致命的な(fatal)”誤りであり,接尾辞“exception”を伴う。他は単なる報告のためであり,接尾辞“error”

を伴う。ここで定義するすべてのイベントについて,XForms プロセサは,例えば,ファイルに誤りメッ

セージを記録するような,既定の操作を実行してもよい。

4.5.1

xforms-binding-exception

イベント

次に列挙する不正な結合式の通知として発生する。

− model 要素の ID を正しく参照しない model 属性

− bind 要素の ID を正しく参照しない bind 属性

− submission 要素の ID を正しく参照しない submission 属性


28

X 4178

:2007

−  送付に関係する同じ model 要素内の instance 要素を正しく参照しない submission 要素の instance 属性

ターゲット:結合式を含むことができるすべての要素

バブル:はい

取消し可能:いいえ

文脈情報:なし

このイベントに対する既定アクションは“致命的な誤りとして処理する”とする。

4.5.2

xforms-link-exception

イベント

リンク付け属性のリンク走査の失敗の通知として発生する。

ターゲット:model

バブル:はい

取消し可能:いいえ

文脈情報:読込みに失敗した URI (xsd:anyURI)

このイベントに対する既定アクションは“致命的な誤りとして処理する”とする。

4.5.3

xforms-link-error

イベント

フォーム処理上重要ではない状況で,リンク付け属性のリンク走査の失敗の通知として発生する。

ターゲット:model

バブル:はい

取消し可能:いいえ

文脈情報:読込みに失敗した URI (xsd:anyURI)

このイベントは通知イベントであり,このイベントに対する既定アクションは存在しない。

4.5.4

xforms-compute-exception

イベント

XPath

の評価中に生じた誤りの通知として発生する。

ターゲット:model

バブル:はい

取消し可能:いいえ

文脈情報:実装固有の誤り文字列

このイベントに対する既定アクションは“致命的な誤りとして処理する”とする。

4.6

イベント列

ここまででは個々のイベントに関連する処理について規定した。ここでは,一般的な幾つかの状況にお

いて必ず発生する関連するイベントの全体的な順序について規定する。次のリストでは,1 回以上発生し

てもよいイベントを接頭辞[n]で示す。

4.6.1

input

secrettextarearange

及び upload 制御の場合

−  フォーム制御が対話的に変更され,incremental="true"が設定されているとき,4.6.7 で規定しているイ

ベント列を実装に依存する間隔で起動してもよい。

−  フォーム制御が対話的に変更され,incremental="true"が設定されていないとき,イベントを発生する

必要はない。したがって,順序は定義されない。

−  フォーカスがフォーム制御から変更され,値が変更されているとき,イベント列は 4.6.7 で規定してい

るとおりとする。

4.6.2

output

制御の場合

−  イベント列は定義されない。


29

X 4178

:2007

4.6.3

select

又は select1 制御の場合

−  選択が対話的に変更され,incremental="true"が設定されているとき,イベント列は 4.6.6 に規定してい

るとおりとし,この直後に 4.6.7 に規定している列が続いてもよい。

−  フォーム制御が対話的に変更され,incremental="true"が設定されていないとき,イベント順序は 4.6.6

に規定しているとおりとする。

−  フォーカスがフォーム制御から変更され,値が変更されているとき,イベント列は 4.6.7 で規定してい

るとおりとする。

4.6.4

trigger

制御の場合

−  フォーム制御の活性化によって,4.6.8 で定義されるイベント列が発生する。

4.6.5

submit

制御の場合

−  フォーム制御の活性化によって,4.6.8 で定義されるイベント列が発生し,直後に 4.6.9 で定義される

イベント列が発生する。

4.6.6

シーケンス:値の変更を伴わない選択

1) xforms-deselect

2) xforms-select

4.6.7

シーケンス:値の変更

1) xforms-recalculate

2) xforms-revalidate

3) xforms-reflesh

は,妥当性の変化,モデル項目特性の変化及び値の変化に従って次のイベントを発生す

るときに,UI 結合式の再評価を行う。

− [n]

xforms-value-changed

− [n]

xforms-valid

又は xforms-invalid

− [n]

xforms-enabled

又は xforms-disabled

− [n]

xforms-optional

又は xforms-required

− [n]

xforms-readonly

又は xforms-readwrite

− [n]

xforms-out-of-range

又は xforms-in-range

(前記のイベントが発生する順序は定義しない。

4)

必要に応じて遅延更新を行う。

4.6.8

シーケンス:トリガの活性化

1) DOMActivate

4.6.9

シーケンス:送付

1) xforms-submit

2) xforms-submit-done

又は xforms-submit-error

5

データ型

ここでは XForms

モデルの定義で使用されるデータ型を定義する。

5.1

W3C XML Schema

組込みデータ型

XForms

は,xsd:duration,xsd:ENTITY,xsd:ENTITIES 及び xsd:NOTATION を除くすべての W3C XML

Schema

データ型を利用可能とする。値空間,字句空間及びファセット制約の概念は,[XML Schema part

2]

に記述されている。W3C XML Schema のデータ型の中には,別途作成されている,より小さな XForms


30

X 4178

:2007

適合性プロファイルの一部として指定されているものがあり,

これらはアスタリスク

*

で示されている。

XForms

はこれらの基本型から

制限によって派生した

データ型及び

リストによって派生した

データ型を含

む。XForms プロセサは,W3C XML Schema を取り込むことなく,ここで列挙されるデータ型を現在有効

なものとして処理しなければならない。

組込みプリミティブ型:

dateTime * 

time * 

date * 

gYearMonth * 

gYear * 

gMonthDay * 

gDay * 

gMonth * 

string * 

boolean * 

base64Binary * 

hexBinary

float

decimal * 

double

anyURI * 

QName

注記  組込みデータ型 xsd:duration で利用できるのは,抽象データ型としてだけとする。このデータ型

の代替として,xforms:dayTimeDuration 又は,xforms:yearMonthDuration を使用することが望ま

しい。

組込み派生型:

normalizedString

token

language

Name

NCName

ID

IDREF

IDREFS

NMTOKEN

NMTOKENS

integer * 

nonPositiveInteger * 

negativeInteger * 

long * 


31

X 4178

:2007

int * 

short * 

byte * 

nonNegativeInteger * 

unsignedLong * 

unsignedInt * 

unsignedShort * 

unsignedByte * 

positiveInteger * 

5.2

XForms

データ型

XForms

用の W3C XML Schema では,XForms における model の定義を容易にするための次のデータ型

が派生定義されている。

5.2.1

xforms:listItem

このデータ型は xforms:listItems データ型の基礎として機能する。listItem の値空間には,空白を除く,

xsd:string

として妥当な一つ以上の文字を使用できる。

5.2.2

xforms:listItems

XForms

には単純型のリスト項目を生成するフォーム制御が含まれる。これはリストによって派生する

(derived-by-list)

データ型を定義することによって容易になる。listItems の値空間は,listItem からのリスト

派生によって定義される。

注記  ほとんどの場合で,リスト内の項目を区別するためにマーク付けを使用することが推奨される。

9.3.3

を参照する。

5.2.3

xforms:dayTimeDuration

XForms

には日,時,分,1 秒未満の秒の期間を表すことができる全順序期間データ型がある。このデー

タ型の値空間は 1 秒未満の秒の集合とする。このデータ型は xsd:duration から派生している。

5.2.4

xforms:yearMonthDuration

XForms

には年及び月の期間を表すことができる全順序期間データ型がある。このデータ型の値空間は

整数の月の値とする。このデータ型は xsd:duration から派生している。

6

モデル項目特性

ここでは,bind 要素を使用してインスタンスデータノードに結合されることができる,情報集合への追

加について定義する(3.3.4 参照)

。ある

インスタンスデータノードに対するこれらの情報集合への追加の

組合せを

モデル項目と呼ぶ。これらの情報集合への追加をまとめて,モデル項目特性と呼び,6.1 で定義す

る。それに対し,用語“W3C XML Schema

制約”はデータ型のファセットに指定される W3C XML Schema

制約を単に表す。

6.1

モデル項目特性定義

モデル項目特性は,さまざまな観点で区別することができる。

計算される式及び固定特性

−  固定特性は XForms プロセサが 1 度だけ評価する静的な値とする。この特性はリテラルで構成され,

XPath

として評価されない。

計算される式は XForms プロセサに値を提供する XPath 式とする。この値は XForms 処理モデルで規


32

X 4178

:2007

定されるとおりに,特定のタイミングで再計算される(箇条 参照)

。これらの式によって動的な特性

が符号化されるが,この動的な特性は多くの場合,データ項目間の依存性などの制約とする。計算さ

れる式は,それが適用されるインスタンスデータノードの値を検査すること以外にも使用される。

XPath

式はインスタンスデータを走査する手段を提供する。より複雑な計算が外部スクリプトの呼出

しとして符号化されてもよい。

継承規則:

モデル項目特性の幾つかでは継承規則が定義される。その場合,XForms プロセサは二つの値を把握し

ている必要がある。一つは bind 要素の属性からの

局所値であり,もう一つは,評価された局所値とインス

タンスデータ中の祖先ノードからの評価値との組合せとする

継承値である。

注記  附属書 で定義されるサンプル再計算アルゴリズムは,モデル項目特性の局所値だけを対象に

定義されている。このサンプルは,結合された値が実装によってノードの子孫に伝ぱされるも

のと仮定している。

局所値の割当て:

局所値は XForms モデル内のすべての結合要素を文書順に処理することによって割り当てられる。同一

ノードに対し,あるモデル項目特性を 2 回設定しようとする試みは誤りとする。この処理の詳細について

は 4.2.1 に示す。

次にすべての

モデル項目の一部として使用可能なモデル項目特性をリストする。それぞれについて,次

の情報を示す。

説明

計算される式かどうか(はい又はいいえ)

使用できる値

既定値

継承規則

6.1.1

type

特性

説明:W3C XML Schema データ型を関連付ける。

計算される式かどうか:いいえ

使用できる値:データ型定義を表すすべての xsd:QName

既定値:xsd:string

継承規則:継承しない

このモデル項目特性の効果は,インスタンスデータ上に xsi:type 属性を記述するのと同じとする。ただ

し,xsi:type と異なり,type は要素及び属性の両方に付与することができる。

例 W3C

XML

Schema

型制約の付与

<instance>

    <my:person-name>

        <my:first-name />

    <my:last-name xsi:type="my:nonEmptyString" />

  </my:person-name>

</instance>

<bind type="my:nonEmptyString"


33

X 4178

:2007

       nodeset="/my:person-name/my:first-name" />

ここでは,W3C XML Schema 型を要素に関連付ける二つの方法が示されている。

6.1.2

readonly

特性

説明:値を変更できるかどうかを示す。

計算される式かどうか:はい

使用できる値:boolean()を使用して XPath の boolean 型に変換できるすべての式

既定値:false(),calculate 特性が指定された場合は true()

継承規則:true と評価される祖先ノードが存在する場合,この値は true として扱われる。それ以外の場

合は,局所値が使用される。

注記  これはすべての祖先ノード及び局所の readonly 特性の評価値の論理和(OR)をとることと等価と

する。

true

に評価された場合,このモデル項目特性は,結合されるインスタンスデータノードに対するどのよ

うな変更も XForms プロセサは許可しないほうがよいことを示す。

値変更の制限に加えて,readonly モデル項目特性は,XForms 利用者インタフェースにヒントを与える。

readonly

モデル項目特性をもつインスタンスデータノードに結合されたフォーム制御は,値の入力又は変

更が許されないことを示すことが望ましい。この規定では,可視性,フォーカス及びナビゲーション順に

対する影響については定義しない。

例 readonly 特性の付与

<instance>

    <my:person-name>

    <my:first-name>Roland</my:first-name>

        <my:last-name/>

  </my:person-name>

</instance>

<bind nodeset="/my:person-name/my:first-name" readonly="true()"/>

ここでは,要素に readonly 特性が関連付けられている。

6.1.3

required

特性

説明:インスタンスデータが送付される前に値が必要とされるかどうかを示す。

計算される式かどうか:はい

使用できる値:boolean()を使用して XPath の boolean 型に変換できるすべての式

既定値:false()

継承規則:継承しない

フォームはある値を

必す(須)

としてもよく,この要求事項は動的であってもよい。true に評価された

場合,このモデル項目特性は,空でないインスタンスデータノードがインスタンスデータの送付前に必要

とされることを示す。空でないインスタンスデータノードの定義は次のとおりとする。

1)

結合されるインスタンスデータノードが要素である場合,要素の xsi:nil 属性が true に設定されていて

はならない。


34

X 4178

:2007

2)

結合されるインスタンスデータノードの値は,長さが 1 以上である XPath string に変換可能でなけれ

ばならない。

次に示すことを除き,required モデル項目特性は可視性,フォーカス又はナビゲーション順に関して

XForms

利用者インタフェースにヒントを提供しない。XForms の文書作成者は,required データを受け入

れるフォーム制御を可視化することを強く求められる。XForms プロセサはフォーム制御が必す(須)で

あることを示唆してもよく,ナビゲーションの制限を含む,即時フィードバックを提供してもよい。箇条

4

に,どのように XForms プロセサが必す(須)値を強要するのかについての詳細な説明がある。

例 required 特性の付与

<instance>

    <my:person-name>

    <my:first-name>Roland</my:first-name>

        <my:last-name />

  </my:person-name>

</instance>

<bind nodeset="/my:person-name/my:last-name" required="true()"/>

ここでは,値が提供されなければならないことを示すために my:last-name 要素に required 属性が

関連付けられている。

注記 W3C

XML

Schema

には,use="required|optional|prohibited"という同様の概念がある。これは次の

二つの点で XForms モデル項目特性と異なる。

一つ目は,

use

が属性にだけ適用されるのに対し,

XForms

の required はあらゆるノードに適用されるという点である。二つ目は,use がすべての

属性が指定されているかを問題にするのに対して(値の有無は無関係)

,required はノードの値

が必す(須)かどうかを送付前に評価する点である。

6.1.4

relevant

特性

説明:モデル項目が現在

有効

であるかどうか示す。この特性が false に評価されるインスタンスデータノ

ードは送付時に直列化されない。

計算される式かどうか:はい

使用できる値:boolean()を使用して XPath の boolean 型に変換できるすべての式

既定値:true()

継承規則:false と評価される祖先ノードが存在する場合,この値は false として扱われる。それ以外の

場合は,局所値が使用される。

注記  これはすべての祖先ノード及び局所の relevant 特性の評価値の論理積(AND)をとることと等価

とする。

フォームの多くには,他の状態に依存するデータ入力領域がある。例えば,フォームが,返答者が車を

所有しているかどうかを尋ねる場合がある。その車について更に情報を尋ねるのは,車を所有していると

いう回答を受けた場合にだけ適切である。

relevant

モデル項目特性は可視性,フォーカス及びナビゲーション順に関して XForms 利用者インタフェ

ースにヒントを提供する。一般に,true のとき,関連するフォーム制御は表示される。false のとき,関連

するフォーム制御(及びすべての子ノード)

(内容を含む)group 要素及び(内容を含む)switch 要素は非


35

X 4178

:2007

表示になり,フォーカスされず,ナビゲーション順から除外されることが望ましい。

注記  一つのフォーム制御,group 要素又は switch 要素を一つのインスタンスノードと関連付けるた

めには単一ノード結合を指定しなければならない。

例 relevant 特性の付与

<instance>

  <my:order>

    <my:item>

            <my:amount />

      <my:discount>100</my:discount>

        </my:item>

  </my:order>

</instance>

<bind nodeset="my:item/my:discount" readonly="true()"

       relevant="../my:amount &gt; 1000"/>

ここでは,my:discount 要素に relevant 特性を関連付け,注文数量が 1 000 より大きい場合に割引が

有効であることを示している。

表 は required と relevant との間の利用者インタフェース相互作用を示す。

表 5required と relevant との間の利用者インタフェース相互作用

 required="true()"  required="false()"

relevant="true()"

フォーム制御(及びすべての子)は可視又

は利用者から利用可能でなければならな
い。XForms 利用者インタフェースは値(の
入力)が必す(須)であることを示しても

よい。

フォーム制御(及びすべての子)は可視又

は利用者から利用可能でなければならな
い。XForms 利用者インタフェースは値(の
入力)が省略可能であることを示してもよ

い。

relevant="false()"

フォーム制御(及びすべての子)は不可視
又は利用者から利用不可能でなければなら

ない。値の入力又はフォーカスを与えるこ
とは許可しないことが望ましい。XForms 利
用者インタフェースは,フォーム制御が有

効(relevant)になった場合には値が必す(須)
であることを示してもよい。

フォーム制御(及びすべての子)は不可視
又は利用者から利用不可能でなければなら

ない。値の入力又はフォーカスを与えるこ
とは許可しないことが望ましい。

6.1.5

calculate

特性

説明:関連付けられるインスタンスデータノードの値を計算するために使用される式を提供する。

計算される式かどうか:はい

使用できる値:任意の XPath 式

既定値:なし

継承規則:継承しない

XForms

モデルは他の値から計算されるモデル項目を含んでもよい。例えば,各品目の数量及び単価の

積の合計,注文に支払われる税金の量などの計算値は,他のモデル項目の値を使用する計算される式とし


36

X 4178

:2007

て表現することができる。箇条 で,計算がいつ,どのように実行されるのかについて詳細に説明してい

る。

例 calculate 特性の付与

<instance>

  <my:order>

    <my:item>

            <my:amount />

            <my:discount />

        </my:item>

  </my:order>

</instance>

<bind nodeset="my:item/my:discount" calculate="../my:amount * 0.1"

       relevant="../my:amount &gt; 1000"/>

ここでは,注文数量が 1 000 より大きいとき 10  %の割引が適用対象となることを示すために

my:discount

要素に relevant 特性を関連付けている。

6.1.6

constraint

特性

説明:関連付けられるインスタンスデータノードが妥当であると評価されるために満足する必要のある

条件式を示す。

計算される式かどうか:はい

使用できる値:boolean()を使用して XPath の boolean 型に変換できるすべての式

既定値:true()

継承規則:継承しない

XPath

が false と評価されるとき,

関連付けられるモデル項目は妥当ではない。

逆は必ずしも真ではない。

箇条 で,いつ,どのように制約が計算されるのか及び妥当性検証がいつ実行されるのかについて詳細に

説明している。

例 constraint 特性の付与

<instance>

    <my:range>

        <my:from />

    <my:to />

  </my:range>

</instance>

<bind nodeset="my:to" constraint=". &gt; ../my:from" />

ここでは,my:to 要素に関連付けられる constraint 特性は,その値が my:from 要素の値より大きく

なければならないことを示している。

注記  インスタンスデータ中のノード数の最小値及び最大値は,constraint 特性内で count()関数を使用

することで指定することができる。


37

X 4178

:2007

6.1.7

p3ptype

特性

説明:インスタンスデータノードに P3P データ要素を付与する。これは,特定の種類のデータがそこで

収集されることを示す。

計算される式かどうか:いいえ

使用できる値:xsd:string

既定値:なし

継承規則:継承しない

このモデル項目特性は,P3P データ型システム[P3P 1.0]に基づき,関連付けられるインスタンスデータ

ノードによって収集されるデータの種類についての情報を保持する。この情報は,既知のデータを供給す

るなど,フォーム入力を楽にするための機能として使用されてもよい。

例  結合を使用する型制約の付与

<instance>

    <my:person-name>

        <my:first-name />

        <my:last-name />

  </my:person-name>

</instance>

<bind type="my:nonEmptyString" nodeset="my:first-name"

              p3ptype="user.name.given"/>

ここでは,bind 要素を使用して,first-name 要素に P3P 及び W3C XML Schema の両方の型情報を

付与している。

6.2

W3C XML Schema

制約

箇条 では,XForms が W3C XML Schema データ型システムを使用して,XForms モデルによって収集

されたデータ値の

値空間を制約する仕組みについて説明した。このデータ型制約は W3C XML Schema を通

じて提供することができる。制約の別の方法として,ここではインスタンスデータに型制約を付与するさ

ま ざ ま な 方 法 を 列 挙 す る 。 W3C XML Schema を 特 定 す る 方 法 と し て , xsi:schemaLocation 及 び

xsi:noNamespaceSchemaLocation

属性は無視される。

6.2.1

原子データ型

XForms

処理モデルは妥当性検証処理の一部として W3C XML Schema ファセットを使用する。最も単純

なレベルで,モデル項目及びファセットの集合を(W3C XML Schema データ型を通じて)関連付けること

が必要である。これは,関連付けられるインスタンスデータノードに対して許容される値をデータ型の字

句空間の表現として妥当なものに制限する効果をもつ。

モデル項目に関連付けられるファセットの集合は,次の項目を指定された順序で処理した結果として決

定されなければならない。複数のデータ型制限を同じモデル項目に対して適用する場合,指定されたすべ

ての制限の組合せが適用されなければならない。満足することが不可能である制限の組合せを指定するこ

とが可能であることに注意する。文書作成者にはこれを回避することが推奨される。

1)

インスタンスデータに関連付けられる W3C XML Schema

2)

インスタンスデータ内の W3C XML Schema xsi:type 属性


38

X 4178

:2007

3) XForms

結合を使用してインスタンスデータノードと関連付けられる XForms の type 制約

4)

型制約が提供されない場合,インスタンスデータノードは type="xsd:string"となる(文字列を既定値と

する規則)

次に示すデータ型の定義は,xsd:string を基本とし,制約ファセットが追加されたものとする。

例 W3C

XML

Schema

を使用する型制約

<xsd:simpleType name="nonEmptyString">

  <xsd:restriction base="xsd:string">

    <xsd:minLength value="1"/>

  </xsd:restriction>

</xsd:simpleType>

この新しいデータ型は,ここで説明したいずれかの方法によって,一つ以上のモデル項目特性に

関連付けられる。

例  型制約の付与

<my:first-name xsi:type="my:nonEmptyString"/>

これは first-name 要素を my:nonEmptyString 型となるように定義する。

例 XForms 結合を使用する型制約の付与

<instance>

  <my:first-name />

</instance>

<bind type="my:nonEmptyString" nodeset="/my:first-name"/>

ここでは,bind 要素を使用して first-name 要素に型情報を付与している。このように,XForms 文

書作成者は外部の W3C XML Schema を変更することができない場合でも,外部の W3C XML Schema

を拡張できる。

7

XForms

における XPath 

XForms

は,結合式で

インスタンスデータノードを特定するため,制約を表現するため,及び計算を指

示するために XPath を使用する。定義されていない関数の呼出しなど,構文的に妥当でない XPath 式は例

外 xforms-compute-exception イベント(4.5.4 参照)を発生させる。ただし,結合式については,別の例外

xforms-binding-exception

イベント(4.5.1 参照)を生成する。

7.1

XPath

データ型

XPath

データ型は

結合式及び計算される式でだけ使用される。XForms は,boolean,string,number 及び

node-set

の各 XPath データ型を使用する。

XForms

の将来の版では,

W3C XML Schema

データ型に対応する,

XPath 2.0

の使用が期待される。

7.2

hasFeature

メソッド呼出しのための機能文字列

この版の XForms 規定の場合,[DOM2 Core] DOMImplementation インタフェースの hasFeature メソッド呼

出しのための機能文字列は“org.w3c.xforms.dom”とし,版数文字列は“1.0”とする。


39

X 4178

:2007

7.3

インスタンスデータ

各 model 要素について,XForms プロセサは XPath データモデル[XPath 1.0]に適合する

インスタンスデー

タと呼ばれる内部構造で状態を管理する。DOM を実装する XForms プロセサは,次で定義するインタフェ

ースを介したこのインスタンスデータへの DOM アクセスを提供しなければならない。

注記  インスタンスデータは常に一つのルート要素をもち,したがって,DOM 文書に合致する。

このインタフェースのための IDL は次のとおりになる。

#include "dom.idl"

pragma prefix "w3c.org"

module xforms {

    interface XFormsModelElement : dom::Element {

    dom::Document getInstanceDocument(in dom::DOMString instanceID)

      raises(dom::DOMException);

    void rebuild();

    void recalculate();

    void revalidate();

    void refresh();

    };

};

7.3.1

getInstanceDocument()

メソッド

このメソッドは,instance-id パラメタと一致する ID を含む instance 要素に関連付けられたインスタンス

データに合致する DOM 文書を返す。一致するインスタンスデータがない場合,DOM Exception を発行す

る。

7.3.2

rebuild()

メソッド

このメソッドは,この XForms モデル内にある,計算に必要な依存関係をたどるために使用されるすべ

ての内部データ構造を再構築するように XForms プロセサに指示する。このメソッドはパラメタをもたず,

例外を発生させない。

7.3.3

recalculate()

メソッド

このメソッドは,この XForms モデルの完全な再計算を行うように XForms プロセサに指示する。この

メソッドはパラメタをもたず,例外を発生させない。

注記 recalculate()のスクリプト呼出しは再計算アクションハンドラの実行と必ずしも等価ではない。

スクリプトの場合,recalculate()の実行前にインスタンスデータを変更していることが想定され

ているが,その DOM 変更はキャッシュされない。したがって,

完全

な再計算を行い,適切な

変更が XForms モデル全体にわたって行われることを保証する必要がある。

7.3.4

revalidate()

メソッド

このメソッドは,

この XForms モデルの完全な妥当性再検証を行うように XForms プロセサに指示する。

このメソッドはパラメタをもたず,例外を発生させない。

7.3.5

refresh()

メソッド

このメソッドは,この XForms モデル内のインスタンスノードに結合されているフォーム制御の完全な

リフレッシュを行うように XForms プロセサに指示する。このメソッドはパラメタをもたず,例外を発生


40

X 4178

:2007

させない。

7.4

評価文脈

XForms

内では,XPath 式は具体的な XML 文書の代わりに,抽象インスタンスデータを参照する。この

規定では,この参照を

結合式と呼ぶ。すべての XPath 式は評価文脈を必要とする。XForms の一部として

XPath

を評価するときには,評価文脈の決定に次の規則が使用される。

1)

最も外側の結合要素のための文脈ノードは,最上位要素ノード,つまり/*によって返される単一ノー

ドとする。

結合要素は結合式属性をもつことを明示的に許可された要素とする。結合要素が最も外側

であるのは,XPath 式 ancestor::*によって返されるノード集合に結合要素ノードが含まれない場合とす

る。

2)

最も外側でない結合要素のための文脈ノードは,一つ外側の要素の結合式の最初のノードとする。要

素が

一つ外側であるのは,それが XPath 式 ancestor::*によって返されるノード集合内の最初の結合要

素ノードの場合とする。これは“有効範囲を考慮した解決”とも呼ばれる。

3)

文脈ノードは常に文脈モデル内にあるが,その文脈モデルは次のうち,該当する最初の項目によって

決定される。

a) model

属性が結合要素上に存在している場合,その属性が文脈モデルを決定する。

b)

結合要素の一つ外側に結合要素が存在する場合,一つ外側の結合要素の文脈モデルが使用される。

c)

文書順で最初のモデルが使用される。

4)

(結合要素に現れる)計算される式のための文脈ノードは,現在処理されているノードとする。

5)

単一ノード結合式の場合,文脈サイズ及び文脈位置は 1 とする。ノード集合結合式の場合,文脈サイ

ズはノード集合のサイズであり,文脈位置はノード集合中で現在処理されているノードの文書順の位

置とする。

6)

変数は存在しない。

7)

次に定義されるものに加えて実装が提供するすべての関数が,利用可能な関数ライブラリとする。フ

ォームの処理に必要な拡張関数は,7.12 で説明するとおりに,宣言することが望ましい。

8)

式を定義する属性の有効範囲におけるすべての名前空間宣言がその式に適用される。

例  文脈ノードの結合式

<group ref="level2/level3">

    <select1 ref="@attr" ... >

    <label> ... </label>

  </select1>

</group>

この例で,group は level2/level3 の結合式をもつ。前記の規則によって,この最も外側の要素ノードは

/level1

の文脈ノードをもつが,これはインスタンスデータの最上位要素ノードとする。次に,select1 フォ

ーム制御は親グループから文脈ノードを継承する。これに対応するインスタンスデータを直列化された

XML

として表すと次のようになる。

例  サンプル XML インスタンスデータ

<level1>

  <level2>

    <level3 attr="xyz"/>


41

X 4178

:2007

  </level2>

</level1>

7.5

結合式

結合式は,モデル項目特性の一つ以上のインスタンスデータノードへの結合,フォーム制御のインスタ

ンスデータへの結合及びアクションによる操作のためのノード又はノード集合の指定に使用される XPath

の PathExpr とする。既定で,すべての結合式は文脈モデル中の最初のインスタンスを参照する。この振る

舞いは instance()関数で変更できる。

7.5.1

動的依存性

あらゆる XPath 式が結合式として受け入れられるわけではない。特に,

動的依存性を生成するモデル結

合式に関して制限がある。動的依存性は次のとおりに定義される。

XPath

の角括弧内の述語には,間接的に表現される可能性のある論理テストを示す。動的依存性は,テ

スト内のすべての項が“固定”である場合を除いて,すべての述語に存在する。固定とは,定数を意味す

るか,計算に必要な依存関係の再構築として明示的に定義される操作間に変更されない値を意味する。

注記  動的依存性を決定する目的上,position(),last(),count()及び property()の各部分式は“固定”と

考えられる。これは,これらの関数によって返される値を変更する可能性のあるすべてのイベ

ントの後に依存性の再構築を実行することが規定されているためである。

もう一つの動的依存性は,関数のパラメタ及びそれに対応する xsd:ID 型の属性の両方が固定でない場合

の,id()関数の使用とする。同様に,instance()関数は,関数のパラメタが固定されないのであれば動的とす

る。

ある再計算と次の再計算との間で値が変わる XPath 変数も動的依存性を生成する(ただし,XForms 1.0

ではすべての XPath 式に対して空の変数文脈が定義されている。

拡張関数を定義する文書作成者はこれらの規則に従うことが推奨される。

7.5.2

モデル結合式

モデル結合式は,モデル項目特性を宣言するのに使用できる結合式であり,bind 要素の属性で使用され

る。

通常,モデル結合式内の動的依存性は手動による依存性の再構築を必要とする。

7.5.3

UI

結合式

結合参照は,ここで記述するとおりに,フォーム制御をその背後にあるインスタンスデータに結合する

ために使用される。属性名 ref 及び nodeset は,それぞれ単一ノードとノード集合とを区別する。3.2.3 及び

3.2.4

を参照する。

UI

結合式内では,動的依存性は適合プロファイルに基づいて許可される。

7.5.4

他の XML 語い(彙)内での UI 結合

XForms

の結合メカニズムは,他の XML 語い(彙)がここに示す任意の方法を使用して利用者インタフ

ェース制御を XForms モデルに結合することを可能にする。例として,XForms 結合属性 bind は,XHTML

1.x

利用者インタフェース制御内で次のとおりに使用される。3.2.3 及び 3.2.4 を参照する。

例 XHTML

1.x

利用者インタフェース制御での XForms 結合

<html:input type="text" name="..." xforms:bind="fn"/>

7.5.5

結合の例

XForms

モデルを一つだけもつ,次の文書を考える。


42

X 4178

:2007

<xforms:model id="orders">

  <xforms:instance xmlns="">

        <orderForm>

            <shipTo>

                <firstName>John</firstName>

            </shipTo>

    </orderForm>

  </xforms:instance>

    <xforms:bind nodeset="/orderForm/shipTo/firstName" id="fn" />

</xforms:model>

次の例は,前記に示したモデル内に定義された firstName 要素インスタンスに xforms:input 利用者インタ

フェースを結合する三つの方法を示している。

例 ref 属性を使用する UI 結合

<xforms:input ref="/orderForm/shipTo/firstName">...

例 bind 属性を使用する UI 結合

<xforms:input bind="fn">...

例  インスタンスを含んでいるモデルを明示的に指定する

<xforms:input model="orders" ref="/orderForm/shipTo/firstName">...

7.6

XForms

主要関数ライブラリ

XForms

主要関数ライブラリは,[XPath 1.0]主要関数ライブラリ全体を含み,これにはノード集合,文字

列,数値及び論理値に対する操作が含まれる。

次に XForms で使用するその他の必要な関数を定義する。

7.7

論理関数

7.7.1

boolean-from-string()

関数

boolean boolean-from-string(string)

関数 boolean-from-string は,必す(須)の引数 string が“true”又は“1”の場合に true を返し,引数

string

が“false”又は“0”の場合に false を返す。これは XPath 式での W3C XML Schema の xsd:boolean

データ型を参照するとき便利である。大文字及び小文字を区別しない比較の結果,引数文字列が前記

のどの文字列にも一致しない場合,戻り値は false とする。

7.7.2

if()

関数

string if(booleanstringstring)

関数 if は最初の引数を論理値として評価し,その結果が true のときに 2 番目の引数を,そうでない

とき(false のとき)に 3 番目の引数を返す。

7.8

数値関数

7.8.1

avg()

関数

number avg(node-set)

関数 avg は,引数の node-set のそれぞれのノードの文字列値を数値に変換し,それらの算術平均を

返す。合計が sum()を用いて計算され,count()によって得られた値で,div を使用して除算が行われる。

引数に空のノード集合が指定されたか,いずれかのノードが NaN と評価された場合,戻り値は NaN


43

X 4178

:2007

とする。

7.8.2

min()

関数

number min(node-set)

関数 min は,引数 node-set のそれぞれのノードの文字列値を数値に変換し,それらの最小値を返す。

“最小”は < 演算子によって決定される。引数に空のノード集合が指定されたか,いずれかのノー

ドが NaN と評価された場合,戻り値は NaN とする。

7.8.3

max()

関数

number max(node-set)

関数 max は,引数 node-set のそれぞれのノードの文字列値を数値に変換し,その最大値を返す。

“最

大”は < 演算子によって決定される。引数に空のノード集合が指定されたか,いずれかのノードが

NaN

と評価された場合,戻り値は NaN とする。

7.8.4

count-non-empty()

関数

number count-non-empty(node-set)

関数 count-non-empty は,引数 node-set 内の空でないノードの数を返す。ノードは,ゼロより長い文

字列に変換できる場合に,空でないと考えられる。

7.8.5

index()

関数

number index(string)

関数 index は,repeat の IDREF を示す文字列型の引数を採り,指定されている repeat の 1 を基準と

する現在の繰返しインデクスを返す。repeat 及びそれに関連する繰返しインデクスの詳細については

9.3.1

を参照する。指定された引数が repeat を特定できるものでない場合,NaN を返す。

例 index

<xforms:trigger>

  <xforms:label>Add to Shopping Cart</xforms:label>

  <xforms:insert ev:event="DOMActivate" position="after"

                    nodeset="items/item" at="index('cartUI')"/>

</xforms:trigger>

7.9

文字列関数

7.9.1

property()

関数

string property(string)

関数 property は,文字列引数で指定された XForms 特性を返す。

次の特性を参照できる(変更はできない。

version

は,XForms 1.0 の場合,文字列“1.0”のとおりに定義される。

conformance-level

文字列は箇条 12 で定義される。

例 property

<xforms:instance>

  ...

  <xforms:bind nodeset="message"

                 calculate="concat( 'created with XForms ', property('version'))"/>

...


44

X 4178

:2007

</xforms:instance>

7.10

日付及び時間関数

注記 xsd:time,xsd:gYearMonth,xsd:gYear,xsd:gMonthDay,xsd:gDay 及び xsd:gMonth のそれぞれの

W3C XML Schema

のデータ型に対する操作を XForms 式内で行うための関数は用意されていな

い。これらのデータ型に必要な操作を行うために,拡張関数(7.12 参照)を使用してもよい。

7.10.1  now()

関数

string now()

now

関 数は , 現在 のシ ス テム 日付 及 び時 間を 文 字 列値 とし て ,正 準化 の W3C XML Schema

xsd:dateTime

形式で返す。時間帯情報を利用できる場合は,その情報が含められる(UTC に正規化さ

れる)

。時間帯情報を利用できない場合は,実装の既定値が使用される。

注記  “now()”の計算をインスタンスデータノードに付加しても,XForms モデルの再計算を連続的

に行い続けることにはならない。

7.10.2  days-from-date()

関数

number days-from-date(string)

この関数は次の規則に従って日付の通し日を返す。

文字列引数が適切な字句 xsd:date 又は xsd:dateTime を表す場合,戻り値は指定された date 又は

dateTime

(UTC に正規化)と 1970-01-01 との差で表される日数とする。時間,分及び秒部分は正規化

後に無視される。それ以外の入力引数が指定された場合の戻り値は NaN とする。

days-from-date("2002-01-01")

は 11688 を返す

days-from-date("1969-12-31")

は-1 を返す

7.10.3  seconds-from-dateTime()

関数

number seconds-from-dateTime(string)

この関数は次の規則に従って秒数の値を返す。秒数は小数になる場合もある。

文字列引数が適切な字句 xsd:dateTime を表す場合,戻り値は指定された dateTime(UTC に正規化)

と 1970-01-01T00:00:00Z との差で表される秒数とする。時間帯が指定されない場合は,UTC が使用さ

れる。それ以外の入力引数が指定された場合の戻り値は NaN とする。

7.10.4  seconds()

関数

number seconds(string)

この関数は次の規則に従って秒数の値を返す。秒数は小数になる場合もある。

文字列変数が適切な字句 xsd:duration を表す場合,戻り値は“

(秒部分に指定された数値)+(60×

分部分に指定された数値)+(60×60×時間部分に指定された数値)+(60×60×24×日部分に指定

された数値)

”とする。結果の正負号は期間の正負号に一致する。年及び月部分が存在する場合は無

視される。それ以外の入力引数が指定された場合の戻り値は NaN とする。

seconds("P1Y2M")

は 0 を返す

seconds("P3DT10H30M1.5S")

は 297001.5 を返す

seconds("3")

は NaN を返す

注記  この関数は字句 xsd:duration を基本に定義されているが,xsd:duration から派生したデータ型,


45

X 4178

:2007

特に xforms:dayTimeDuration でだけ使用されることが意図されている。

7.10.5  months()

関数

number months(string)

この関数は次の規則に従って通し月を返す。

文字列引数が適切な字句 xsd:duration を表す場合,戻り値は“

(月部分に指定された数値)+(12×

年部分に指定された数値)”とする。結果の正負号は期間の正負号に一致する。日,時間,分及び秒

部分が存在する場合は無視される。それ以外の入力引数が指定された場合の戻り値は NaN とする。

months("P1Y2M")

は 14 を返す

months("-P19M")

は-19 を返す

注記  この関数は字句 xsd:duration を基本に定義されているが,xsd:duration から派生したデータ型,

特に xforms:yearMonthDuration でだけ使用されることが意図されている。

7.11

ノード集合関数

7.11.1  instance()

関数

node-set instance(string)

一つの XForms モデルが複数のインスタンスを含む場合がある。この関数を使用すれば,文脈ノー

ドを含むインスタンスデータ以外の,同一 XForms モデル内の他のインスタンスデータにアクセスす

ることができる。

引数は string 関数が呼ばれたかのように文字列に変換される。この文字列は IDREF として扱われ,

含む側の文書内の instance 要素に照らして,その一致が検査される。一致するインスタンスが存在し,

そのインスタンスデータが現在の文脈ノードと同じ XForms モデルに関連付けられている場合,この

関数はそのインスタンスデータのルート要素ノード(文書要素ノードとも呼ばれる。

)だけを含むノ

ード集合を返す。それ以外の場合は,空のノード集合を返す。

次の XML に一致するインスタンスデータを考える。

<xforms:instance xmlns="" id="orderform">

  <orderForm>

        <shipTo>

      <firstName>John</firstName>

        </shipTo>

  </orderForm>

</xforms:instance>

次の式は firstName ノードを選択する。instance 関数が一つの要素ノードを返し,その結果,パスの最も

左側に指定された位置を置き換えている。

ref="instance('orderform')/shipTo/firstName"

7.12

拡張関数

XForms

文書では,ここに示した以外の XPath 拡張関数を使用してもよい。多くの有用なコミュニティ

拡張が[EXSLT]に定義されている。この拡張関数の名前は model 要素の functions 属性に宣言されなければ

ならない。この宣言は,XForms プロセサによって,利用可能な拡張関数に照合するのに使用される。XForms

プロセサはこの照合を文書の読込み時に実行する。XForms 文書で宣言されている拡張関数をプロセサが


46

X 4178

:2007

実装していない場合,プロセサは例外(4.5.4 参照)を生成して処理を停止する。

注記  拡張関数を明示的に宣言すれば,XForms プロセサによる未実装の拡張関数の検出は文書の読込

み時に行われるため,この致命的な誤りが利用者との対話中に発生するのを避けることができ

る。文書作成者が拡張関数を宣言しなかった場合,利用者との対話中に XForms プロセサが致

命的な誤りで停止する可能性がある。

8

フォーム制御

8.1

XForms

のフォーム制御モジュール

フォーム制御はマーク付け要素を使用して宣言され,その振る舞いの詳細はマーク付け属性によって指

定される。

表 6−フォーム制御の要素,属性及び最小内容モデル

要素

属性

最小内容モデル

input

共通,UI 共通,単一ノード結合,inputmode (xsd:string),incremental (xsd:boolean)

label

,(UI 共通)*

secret

共通,UI 共通,単一ノード結合,inputmode (xsd:string),incremental (xsd:boolean)

label

,(UI 共通)*

textarea

共通,UI 共通,単一ノード結合,inputmode (xsd:string),incremental (xsd:boolean)

label

,(UI 共通)*

output

共通,単一ノード結合(省略可能)

,appearance

("full"|"compact"|"minimal"|xforms:QNameButNotNCNAME)

,value

(XPathExpression)

label?

upload

共通,UI 共通,単一ノード結合,mediatype (xsd:string),incremental (xsd:boolean)

label

,filename?,

mediatype?

,(UI 共通)*

range

共通,UI 共通,単一ノード結合,start (xsd:string),end (xsd:string),step

(xsd:string)

,incremental (xsd:boolean)

label

,(UI 共通)*

trigger

共通,UI 共通,単一ノード結合(省略可能) label,(UI 共通)*

submit

共通,UI 共通,単一ノード結合(省略可能)

,submission (xsd:IDREF)

label

,(UI 共通)*

select

共通,UI 共通,単一ノード結合,selection ("open" | "closed"),incremental

(xsd:boolean)

label

,(List UI 共通)+,(UI

共通)*

select1

共通,UI 共通,単一ノード結合,selection ("open" | "closed"),incremental

(xsd:boolean)

label

,(List UI 共通)+,(UI

共通)*

choices

共通

label?

,(List UI 共通)+

item

共通

label

,value,(UI 共通)*

filename

共通,単一ノード結合 EMPTY

mediatyp

e

共通,単一ノード結合 EMPTY

value

共通,単一ノード結合(省略可能) (PCDATA|ANY)*

label

共通,単一ノード結合(省略可能)

,リンク付け (PCDATA|(UI

Inline))*

help

共通,単一ノード結合(省略可能)

,リンク付け (PCDATA|(UI

Inline))*

hint

共通,単一ノード結合(省略可能)

,リンク付け (PCDATA|(UI

Inline))*

alert

共通,単一ノード結合(省略可能)

,リンク付け (PCDATA|(UI

Inline))*

9.3.3

も参照する。

注記  インスタンスデータノードは,フォーム制御と結合しない限り,利用者に提示されることはな

い。したがって,HTML の input type="hidden"に相当するフォーム制御は必要ない。

表 の UI 共通属性グループは,利用者インタフェースに関連する多くの XForms 要素に共通とする。


47

X 4178

:2007

表 7UI 共通属性

要素

属性

(多種) appearance

("full"|"compact"|"minimal"|QName-but-not-NCName)

appearance

表示形式を定義する省略可能な属性。指定されない場合,利用者エージェントは適切な視覚化を自

由に選択してよい。

注記  呼出し側の言語は,CSS のクラスセレクタによって照合される文字列の一覧を保持する class

属性及び xml:lang などの属性に対応することが望ましい。

さらに,呼出し側の言語は,フォーム制御及びその呼出し側の言語に含まれるその他の要素間のナビゲ

ーション順序を指定する方法,並びにキーボードによる,つまり直接的な特定要素へのナビゲーション手

段を提供しなければならない。その方法の一つが,navindex 及び accesskey と呼ばれる属性の組を使用する

ことであり,これらの属性は次のとおりに定義される。

navindex

この省略可能な属性はナビゲーション順序を定義するために使用され,0∼32767 の負でない整数値

をとる。文書作成者はこの属性を使用することで,

フォーム制御をたどる順序を制御できるようにな

る。既定のナビゲーション順序は箇条 に定義されている。

accesskey

この省略可能な属性は,特定の

フォーム制御に入力フォーカスを直接移動させるためのショートカ

ットを定義する。この属性の値は,プラットフォーム固有の修飾キー(例えば“Alt”キー)とともに

押されたときにこの

フォーム制御にフォーカスを移動させることになる単一の文字とする。

利用者エージェントは,ある提示の中で使用可能なアクセスキーを識別する手段を提供しなければ

ならない。これを実現する方法は,アプリケーションとの直接的な対話,利用者手引の使用など,実

装によって異なってよい。文書作成者によって要求されたアクセスキーが,プレーヤで使用できない

場合がある(例えば,使用する装置に存在していない場合又は,プレーヤ自身によって使用される場

合)

。したがって,利用者エージェントは指定されたキーを利用可能にすることが望ましいが,アク

セスキーを異なる対話の振る舞いにマップしてもよい。

さらに,このモジュールは

表 の内容集合を定義する。

表 8UI 共通内容集合

内容集合

最小内容モデル

UI

共通 (help|hint|alert|アクション)*

List UI

共通 (choices|item|itemset)+

フォーム制御 (input|secret|textarea|output|upload|range|trigger|submit|select|select1)*

UI Inline

(output)*

表 に示すとおりに,XML イベントモジュールによってアクション内容集合が UI 共通内容集合に加え

られる。呼出し側の言語は内部のマーク付けを行内内容集合に加えることが望ましい。XForms 拡張モジ

ュールが存在する場合は,それも UI 共通内容集合に含めることが望ましい。

8.1.1

すべてのフォーム制御に共通の実装必要条件


48

X 4178

:2007

XForms

利用者インタフェース制御は,箇条 で定義される

結合属性を使用して,背後にあるインスタ

ンスデータに結合される。

フォーム制御は,ラベル,ヘルプ文,ナビゲーション,及びキーボードのショートカットキーなどの各

機能において統一的な手法を採用することによって,アクセシビリティを実現する。国際化の問題につい

ては,XHTML と同じ設計指針に従うことで解決される。フォーム制御はすべて,聴覚メディア及び視覚

メディアとして提示するのに適している。

フォーム制御は,具体的な実装を提供する能力を維持しながら,抽象度の高い意味をカプセル化する。

例えば,フォーム制御 select は,利用者に

集合から項目を選択させるもの

とする。これらのフォーム制御

では,基底にある制御の機能的な側面と,提示又は振る舞いの側面とは区別される。この分離によって,

特定のフォーム制御の基底にある目的を表現することが可能になる。この利用者との対話の基本概念の定

義については[AUI97]を参照する。

フォーム制御は,可視化されたとき,そのフォーム制御に結合している背後にあるデータの値を表示す

る。フォーム制御を介して利用者に提示されるデータは,結合しているインスタンスデータに直接対応し

なければならないが,表示形式が字句値と一致している必要はない。例えば,利用者エージェントは,区

切り文字も含め,日付,時刻,期間及び数値を表示するのに適切な規約を使用することが望ましい。

フォーム制御はすべて,実装についての次の要求事項を満たさなければならない。

− simpleContent をインスタンスデータに書込むフォーム制御は,10.1.9 で定義されるのと全く同じに動

作しなければならない。

− simpleContent のインスタンスデータを読込むフォーム制御はすべて,次のように動作しなければなら

ない。

要素ノード:テキスト子ノードが存在する場合,最初のテキスト子ノードの文字列の値を返す。そ

うでなければ“”

(空の文字列)を返す。

属性ノード:ノードの文字列の値を返す。

テキストノード:ノードの文字列の値を返す。

名前空間ノード,処理命令ノード,コメントノード及び XPath のルートノード:振る舞いは未定義

とする。

−  フォーム制御は,妥当な状態のときの可視化と妥当でない状態のときの可視化とを区別しなければな

らない。この振る舞いはスタイルシートから制御可能にすることが望ましい。

−  フォーム制御は,結合しているインスタンスデータにそのフォーム制御で可視化できない値が含まれ

ている場合に,それを示さなければならない。この振る舞いはスタイルシートから制御可能にするこ

とが望ましい。

−  フォーム制御は,要求に応じて,妥当性又は関連するモデル項目特性などのフォーム制御の現在の状

態について説明を可視化しなければならない。この振る舞いはスタイルシートで制御可能にすること

が望ましい。

−  利用者指定の説明が利用不可能な場合,フォーム制御は前記のものに既定の説明を提供しなければな

らない。

箇条 では,次を指定することによってさまざまなフォーム制御を定義する。

説明

共通属性

特殊属性


49

X 4178

:2007

データ結合制限

実装必要条件

8.1.2

input

要素

説明:このフォーム制御は,自由形式でのデータ入力を可能にする。

共通属性:共通,UI 共通,単一ノード UI 結合

特殊属性:

inputmode

このフォーム制御は入力モードのヒントを受け入れる(

附属書 参照)。

incremental

true

の場合,このフォーム制御は xforms-value-changed イベントを追加生成する。この属性の既定値

は false。

例  住所の入力

<input ref="order/shipTo/street" class="streetAddress">

  <label>

市町村及び番地</label>

  <hint>

市町村名及び番地を入力してください。</hint>

</input>

前記の例では,class 属性はフォーム制御の表示サイズを指定するためにスタイルシートで使用される。

入力できる文字数に関する制約はこれらの表示上の特性から得られるのではなく,背後にある XForms モ

デル定義から得られる。

前記の例のグラフィカルブラウザでの可視化の例を

図 に示す。

図 2input 要素の可視化例(テキスト入力ボックス)

データ結合制限:任意の simpleContent(xsd:base64Binary,xsd:hexBinary 又はこれらから派生した任意の

データ型を除く。

)に結合。

実装必要条件:結合されたデータ型に対応する字句値の入力を許可しなければならない。実装は,デー

タ型の入力のための便利な手段を提供することが望ましく,数の表現などの現地化及び国際化の問題も考

慮に入れることが望ましい。例えば,xsd:date 型のインスタンスデータノードと結合している input でカレ

ンダ制御を提供すること,同様に,boolean 型と結合している input 制御をチェックボックスとして可視化

することが考えられる。

例  発送日の入力

<input ref="order/shipDate">

            <label>発送日</label>

            <hint>この注文品の発送日を入力してください。</hint>

</input>

前記の例のグラフィカルブラウザでの可視化の例を

図 及び図 に示す。


50

X 4178

:2007

図 3input 要素の可視化例(日付入力ボックス)

利用者は,テキスト編集ボックスに日付を入力するか,ボタンを押してカレンダを開くことができる。

図 4input 要素の可視化例(カレンダ表示)

8.1.3

secret

要素

説明:このフォーム制御は,操作を監視する他の利用者によって入力内容が読み取られないようにしな

がらシステムに情報を入力する手段を利用者に提供する。一般にはパスワード入力のために使われる。

共通属性:共通,UI 共通,単一ノード結合

特殊属性:

入力モード:このフォーム制御は入力モードのヒントを受け入れる(

附属書 参照)。

incremental

true

の場合,このフォーム制御は xforms-value-changed イベントを追加生成する。この属性の既定値

は false。

例  パスワードの入力

<secret ref="/login/password">

  <label>

パスワード</label>

  <hint>

入力するパスワードは表示されません。</hint>

</secret>

前記の例のグラフィカルブラウザでの可視化の例を

図 に示す。

図 5secret 要素の可視化例

データ結合制限:input と同じ。

実装必要条件:アクセシビリティを考慮しているものも含め,実装は,このフォーム制御に入力される

値を隠さなければならない。考えられる一つの方法として,実際に入力された文字の代わりに“*”又は同


51

X 4178

:2007

様の文字を可視化する方法がある。これによって提供されるセキュリティのレベルは簡略的なものにすぎ

ないことに注意する必要がある。機密性が非常に高い情報を扱うには,XForms で論じる範囲を超えた,

別のセキュリティ対策が必要になる。

8.1.4

textarea

要素

説明:このフォーム制御は自由形式でのデータ入力を可能とするもので,複数行からなる内容(例えば

電子メールメッセージの本体)の入力に使用されることが意図されている。

共通属性:共通,UI 共通,単一ノード結合

特殊属性:

入力モード:このフォーム制御は入力モードのヒントを受け入れる(

附属書 参照)。

incremental

true

の場合,このフォーム制御は xforms-value-changed イベントを追加生成する。この属性の既定値

は false。

例  電子メールの本文

<textarea ref="message/body" class="messageBody">

  <label>

メッセージ本文</label>

  <hint>

メッセージをここに入力してください。</hint>

</textarea>

前記の例では,class 属性はフォーム制御の表示サイズを指定するためにスタイルシートで使用される。

入力できる文字数に関する制約はこれらの表示上の特性から得られるのではなく,背後にある XForms モ

デル定義から得られる。

前記の例のグラフィカルブラウザでの可視化の例を

図 に示す。

図 6textarea 要素の可視化例

データ結合制限:xsd:string 又は派生した任意の simpleContent に結合する。

実装必要条件:複数行のテキストを含む,結合するデータ型に対応する字句値の入力を許可しなければ

ならない。

8.1.5

output

要素

説明:このフォーム制御はインスタンスデータの値を可視化するが,データの入力又は変更の手段を提

供しない。これはインスタンスの値を表示するために使用され,レイアウトの目的で display:inline として

扱われる。要素 output は,結合式を使用することで,インスタンス中の特定の位置にある値を表示するの

に使用することができる。また,評価対象の XPath 式を ref ではなく value 属性に指定することで,XPath


52

X 4178

:2007

式の評価結果を表示するのに使用することができる。要素 output 中の属性 ref 及び value は相互に排他的で

あることに注意する必要がある。

共通属性:共通,単一ノード結合(省略可能)

特殊属性:

appearance

このフォーム制御は UI 共通属性グループを使用しないが,前記で定義したとおりに,appearance 属

性は含んでいる。

value

評価対象の XPath 式。評価結果の文字列がフォーム制御によって可視化される。結合属性がノード

を選択するために存在する場合,この属性は無効になる。評価文脈は,単一ノード結合の評価に適用

されるものと同じとする。式が参照するいずれかのノードに変更があった場合,XPath 式は常に再評

価される。

例  説明書き

請求額:

<output ref="order/totalPrice"/>

円 - 請求理由は次のとおりです

前記の例のグラフィカルブラウザでの可視化の例を

図 に示す。

図 7output 要素の可視化例

データ結合制限:任意の simpleContent に結合する。

実装必要条件:結合されたデータ型に対応する字句値の表示を許可しなければならない。実装は,デー

タ型の視覚化のための便利な手段を提供し,数値の表現などの現地化及び国際化の問題を考慮することが

望ましい。

8.1.6

upload

要素

説明:このフォーム制御は,Web サイトに一般的に見られるローカルファイルシステムからファイルを

アップロードする機能,及びマイクロフォン,ペン,ディジタルカメラを含むさまざまな入力装置からの

入力の受入れを実現する。

共通属性:共通,UI 共通,単一ノード結合

特殊属性:

mediatype

アップロードの対象となり得るデータのソースを決定するのに XForms プロセサによって使用され

る,スペースによって区切られたメディア型の一覧。

incremental

true

の場合,このフォーム制御は xforms-value-changed イベントを追加生成する。この属性の既定値

は false。

割 引 期 間 終 了


53

X 4178

:2007

例  イメージをアップロードする

<upload ref="mail/attachment" mediatype="image/*">

  <label>

画像を選択:</label>

  <filename ref="@filename" />

  <mediatype ref="@mediatye" />

</upload>

前記の例のグラフィカルブラウザでの可視化の例を

図 に示す。

図 8upload 要素の可視化例

実装必要条件:

−  活性化されたとき,子要素 filename が存在してファイル名が利用可能な場合,upload はアップロード

するデータのファイル名をインスタンス内の,子要素 filename 上の結合属性によって示されるノード

に置く。

−  活性化されたとき,子要素 mediatype が存在してメディア型が利用可能な場合,upload はアップロー

ドするデータのメディア型をインスタンス内の,子要素 mediatype 上の結合属性によって示されるノ

ードに置く。

データ結合制限:xsd:anyURI,xsd:base64Binary 及び xsd:hexBinary,又はこれらから制限によって派生し

たデータ型だけにこのフォーム制御を結合できる。

実装必要条件:base64Binary 又は hexBinary データ結合に関して

− xsd:base64binary,xsd:hexBinary 又はこれらから制限によって派生した型のインスタンスデータノード

に結合されている場合,活性化されたときに,upload は指定された符号化を使用してバイナリの内容

をノードの内容として配置する。

実装必要条件:anyURI データ結合に関して

− xsd:anyURI 型(又はこれから制限によって派生した型)のインスタンスデータノードに結合している

場合,活性化されたとき,upload はノードの内容として URI を配置する。

セキュリティ上の理由から,XForms プロセサは,明示的な利用者の許可なしに,このフォーム制御

に結合する URI が指す場所を参照してはならない。

注記  実装者は,multipart/related としての直列化(11.4 参照)及び multipart/form-data としての直列化

11.5 参照)に必要になるため,upload でバイナリデータ,メディア型及びファイル名とその

URI

とを結び付けなければならないことに注意する。

−  ファイルシステムを伴う実装は特定のファイルを選択する file upload を利用可能とすることが望まし

い。また,既定で表示されるファイル型には,mediatype 属性に指定されたメディア型が反映されるこ

とが望ましい。例えばメディア型に“audio/*”型が指定された場合,既定でファイルダイアログに表

示されるのは audio ファイル型だけになるようにする。


54

X 4178

:2007

実装必要条件:すべてのデータ結合に関して

−  特定のペン・座標読取装置を伴う実装では,

ペン書き任意機能

を利用可能とし,ペン使用の入力をそ

の場で行えるようにすることが望ましい(その他のポインティングデバイスを伴う実装ではこれを利

用可能としてもよい。

−  特定のオーディオ録音機能を伴う実装では,

オーディオ録音任意機能

を利用可能とし,オーディオク

リップの録音をその場で行えるようにすることが望ましい。

−  ディジタルカメラ,スキャナインタフェース又はスクリーンキャプチャを伴う実装では,

イメージ取

得任意機能

を利用可能とし,接続された装置からのイメージのアップロードをその場で行えるように

することが望ましい。

−  ビデオ録画機能を伴う実装では,

ビデオ録画任意機能

を利用可能とすることが望ましい。

− 3D 機能を伴う実装では,3D インタフェース任意機能を提供することが望ましい。

−  実装では,独自の実装を提供してもよい(例えば,mediatype が text/rtf の場合に編集ウィンドウで独

自のワードプロセサを起動するなど)

−  ここで言及されなかった入力装置を実装で利用可能とすることも推奨される。

−  特定の mediatype のアップロードを利用できない場合,実装はそのことを利用者に明らかにしなけれ

ばならない。

filename

子要素については 8.3.1,mediatype については 8.3.2 を参照する。

8.1.7

range

要素

説明:このフォーム制御は,連続する範囲からの値の選択を許可する。

共通属性:共通,UI 共通,単一ノード結合

特殊属性:

start

(背後にあるデータに適切な)範囲の開始点を示す省略可能なヒント。指定された場合,この値は

背後のモデルによって指定された制約を更に限定する。

end

(背後にあるデータに適切な)範囲の終了点を示す省略可能なヒント。指定された場合,この値は

背後のモデルによって指定された制約を更に限定する。

step

値の増分又は減分を示す省略可能な値。背後のデータの二つの値の差分を表すことができる型でな

ければならない。

incremental

true

の場合,このフォーム制御は xforms-value-changed イベントを追加生成する。この属性の既定値

は false。

例  範囲内の選択

<range ref="/stats/balance" start="-2.0" end="2.0" step="0.5">

  <label>

バランス</label>

</range>

前記の例のグラフィカルブラウザでの可視化の例を

図 に示す。


55

X 4178

:2007

図 9range 要素の可視化例

データ結合制限:xsd:duration,xsd:date,xsd:time,xsd:dateTime,xsd:gYearMonth,xsd:gYear,xsd:gMonthDay,

xsd:gDay

,xsd:gMonth,xsd:float,xsd:decimal,xsd:double の各データ型及びこれらから制限によって派生

したデータ型だけを結合する。

実装必要条件:結合するデータ型に対応する値の入力を許可しなければならない。実装では,上限値,

下限値及びステップサイズが指定されていればそれらを利用者に知らせることが望ましい。インスタンス

データの値が上限又は下限を超えている場合,フォーム制御は範囲外状態を示さなければならない。グラ

フィカル環境では,このフォーム制御は“スライダ”又は“回転式制御”として可視化されてもよい。

この要素の各属性はメタデータをカプセル化するが,このメタデータは,XForms モデルから得られる

型情報と組み合わせることで,例えばスピーチなどの提示様式を使用するなど,アクセシビリティ支援を

行う場合に意味のあるプロンプトを生成するのに十分なものとする。つまり,次に示す例では,聴覚に頼

る利用者のためのエージェントが“2001 年 1 月 1 日から 2001 年 12 月 31 日までの範囲にある日付を選ん

でください”のように発声することが考えられる。

背後にあるデータ型と start 及び end とが重なっている場合,最も限定的な範囲を使用することが望まし

い。

例  範囲から日付を選択する

<range ref="/order/shipDate" start="2001-01-01" end="2001-12-31">

  <label>

出荷日</label>

</range>

8.1.8

trigger

要素

説明:このフォーム制御は HTML の button 要素に類似するもので,利用者はこれを使用してある動作を

起動することができる。このフォーム制御を他のフォーム制御を構築するために使用してもよい。

共通属性:共通,UI 共通,単一ノード結合(省略可能)

例  簡単な trigger

<trigger>

  <label>

ここをクリック</label>

</trigger>

データ結合制限:任意のノードに結合できる。このフォーム制御は,結合するノードのモデル項目特性

から影響を受けるが,フォームデータとの直接の相互作用はない。したがって,結合属性は必す(須)で

はない。

実装必要条件:利用者エージェントは,フォーム制御上に DOMActivate イベントを生成する手段を提供

しなければならない。グラフィカルな実装では,ラベルの付いた押しボタンとしてこのフォーム制御を可

視化することが考えられる。スタイルシートを使用して,このフォーム制御をイメージ,ハイパーリンク

又は他の表示形式としてスタイル設定することができる。

8.1.9

submit

要素

説明:このフォーム制御は,結合するインスタンスデータのすべて又は一部の送付を開始する。


56

X 4178

:2007

共通属性:共通,UI 共通,単一ノード結合(省略可能)

特殊属性:

submission

submission

要素を指す必す(須)の属性。

例  送付

<submit submission="timecard">

  <label>

タイムカードの送付</label>

</submit>

データ結合制限:任意のノードに結合できる。このフォーム制御は,結合するノードのモデル項目特性

から影響を受けるが,フォームデータとの直接の相互作用はない。したがって,結合属性は必す(須)で

はない。

実装必要条件:イベント DOMActivate を受け取ると,このフォーム制御は必す(須)の属性 submission

によって指定された submission 要素にイベント xforms-submit を発生する。一度活性化されると,送付処理

が xforms-submit-done イベント又は xforms-submit-error イベントで完了するまで,この制御はさらなる活性

化に利用できてはならない。

8.1.10  select

要素

説明:このフォーム制御は,利用者が選択肢の中から複数を選択することを可能にする。

共通属性:共通,UI 共通,単一ノード結合

特殊属性:

selection

リスト中に自由な入力を許可するかどうかを決定する省略可能な属性。既定値は“closed”とする。

incremental

true

の場合,このフォーム制御は xforms-value-changed イベントを追加生成する。このフォーム制御

の既定値は true とする。

例  アイスクリームの味の選択

<select ref="my:flavors">

<label>

味</label>

  <choices>

        <item>

            <label>

バニラ</label>

            <value>v</value>

    </item>

        <item>

            <label>

ストロベリ</label>

            <value>s</value>

    </item>

        <item>

        <label>

チョコレート</label>

            <value>c</value>


57

X 4178

:2007

    </item>

  </choices>

</select>

前記の例では,複数の味を選択することができる。

フォーム制御 select は,グラフィカルブラウザでは

図 10 のいずれかのように可視化されることが考えら

れる。

appearance="full" appearance="compact"

appearance="minimal"

図 10select 要素の可視化例(appearance 属性の値による違い)

通常,フォーム制御の外観を厳密に決定するのにはスタイルシートが使用されるが,外観を指定する手

段として appearance 属性を使用できる。属性の値は次のいずれかとする。

“full”

:選択肢のすべてを常に可視化する。

“compact”

:可視化する選択肢の数を固定する。必要に応じてスクロール機能を使用する。

“minimal”

:可視化する選択肢の数を最小にする。一時的に選択肢を追加表示する機能をもつ。

データ結合制限:シーケンスを保持することができる任意の simpleContent に結合できる。simpleContent

への結合の制限は,ここで規定しているとおりに,選択肢が利用者インタフェース制御の一部として記述

される場合に存在する。動的に選択肢を作成するための itemset 要素(9.3.3 参照)を使用することで,利

用可能にする選択肢を XForms モデルから入手することができるが,その場合は simpleContent への結合の

制限は緩和される。

注記 W3C

XML

Schema

の list データ型の制限によって,格納値(value 要素)中の空白は個々のデー

タ間の区切りとして常に解釈される。したがって,文書作成者は,simpleContent をリストする

格納値に空白を含めるのを避けることが望ましい。

例  正しくない型宣言

<item>

  <value>United States of America</value>

  ...

</item>

この項目が選択された場合,この項目が一つの選択肢として扱われるのではなく,“America”,“of”,

“States”

,及び“United”の四つの選択肢が新たに追加される。

実装必要条件:選択肢のそれぞれについてラベルが存在しなければならず,何も選択されないことも含

め,選択は幾つでも許可されなければならない。このフォーム制御は,選択された選択肢に対応する値を

ref

属性によって示される場所にスペース区切りのリストとして格納する。格納される値は,value 要素の

内容として直接指定されるか,value 要素上の結合属性によって間接的に指定される。


58

X 4178

:2007

このフォーム制御に結合されるデータ型には,xsd:string などの非一覧表型の値空間,及び一覧表型と非

一覧表型とのユニオン(追加可能な一覧表と呼ばれる。

)を含めてもよいことに注意する。この場合,制御

select

に属性 selection="open"が存在してもよく,それに対して,フォーム制御は 8.1.2 に規定しているよう

な自由形式での入力を許可することが望ましい。フォーム制御は,自由形式の入力を介して複数の値が入

力されるのを許可してもよい。

“closed”の場合:指定された項目の格納値の一つ以上と初期インスタンス値とが一致する場合,その

項目が選択される。一致するものがない場合,最初に選択される項目はない。選択された値のいずれかが,

選択肢のどの格納値とも一致しない場合,フォーム制御は範囲外状態を示さなければならない。

“open”の場合:一つ以上の項目によって指定される格納値と初期インスタンス値とが一致する場合,

それらの項目がすべて選択される。一つ以上の項目によって指定される格納値と初期インスタンス値とが

一致しない場合,それらの一致しない項目は,自由形式入力を介して入力されたのと同じように,選択さ

れた値になる。自由形式入力のテキストは 8.1.2 の場合と同様に扱われ,複数になることもある。

complexTypes

を伴う動的な選択を行う場合,

“open”は無効となる。

実装のヒント:アクセシビリティ支援として,選択肢の最初から最後まで,利用者に一通り確認させる

ことが考えられる。その場合,マーク付け内で選択肢をグループ化することで,選択肢が多数である場合

のナビゲーションを改善することも検討する。

8.1.11  select1

要素

説明:このフォーム制御は,利用者が複数の選択肢から一つだけ選択するのを可能にする。

共通属性:共通,UI 共通,単一ノード結合

特殊属性:

selection

リスト中に自由な入力を許可するかどうかを決定する省略可能な属性。既定値は“closed”とする。

incremental

true

の場合,このフォーム制御は xforms-value-changed イベントを追加生成する。このフォーム制御

の既定値は true とする。

例  味を選択する

<select1 ref="my:flavor">

  <label>

味</label>

  <item>

        <label>

バニラ</label>

        <value>v</value>

  </item>

  <item>

        <label>

ストロベリ</label>

        <value>s</value>

  </item>

  <item>

        <label>

チョコレート</label>

    <value>c</value>


59

X 4178

:2007

  </item>

</select1>

前記の例で,選択肢から一つを選択すると,選択した項目に関連する値,つまりその項目の value 要素

で指定される値が,背後のインスタンスデータ内の場所 icecream/flavor に設定される。

フォーム制御 select1 は,グラフィカルブラウザでは

図 11 のいずれかのように可視化されることが考え

られる。

appearance="full" appearance="compact"

appearance="minimal"

図 11select1 要素の可視化例(appearance 属性の値による違い)

データ結合制限:任意の simpleContent に結合できる。simpleContent への結合の制限は,ここで規定して

いるとおりに,選択肢が利用者インタフェース制御の一部として記述される場合に存在する。動的に選択

肢を作成するための itemset 要素(9.3.3 参照)を使用することで,利用可能にする選択肢を XForms モデル

から入手することができるが,その場合は simpleContent への結合の制限は緩和される。

実装必要条件:選択肢のそれぞれについてラベルが存在していなければならず,選択は常に一つだけ許

可されなければならない。このフォーム制御は,選択された選択肢に対応する値を ref 属性によって示さ

れる場所に格納する。格納される値は,value 要素の内容として直接指定されるか,value 要素上の結合属

性によって間接的に指定される。

このフォーム制御に結合されるデータ型には,xsd:string などの非一覧表型の値空間,及び一覧表型と非

一覧表型とのユニオン(追加可能な一覧表と呼ばれる。

)を含めてもよいことに注意する。この場合,制御

select1

に属性 selection="open"が存在してもよく,それに対して,フォーム制御は 8.1.2 に規定しているよ

うな自由形式での入力を許可することが望ましい。

“closed”の場合:指定項目の格納値の一つと初期インスタンス値が一致する場合,その項目が選択さ

れる。一致するものがない場合,フォーム制御は範囲外状態を示さなければならない。

“open”の場合:項目の一つによって指定される格納値と初期インスタンス値とが一致する場合,最初

に一致した項目が選択される。一致しない場合,最初の字句値が選択された値になる。自由形式入力のテ

キストは 8.1.2 の場合と同様に扱われる。

利用者インタフェースは,このフォーム制御をプルダウンリスト,ラジオボタンのグループなどに可視

化してもよい。appearance 属性はどの表示が最も適切かについてのヒントを提供するが,CSS などのスタ

イル情報を優先させることが望ましい。

8.2

選択制御のための共通マーク付け

8.2.1

choices

要素

この要素は選択肢をグループ化する目的で選択フォーム制御内で使用される。これは HTML の optgroup

要素と機能的に同一とする。

共通属性:共通


60

X 4178

:2007

8.2.2

item

要素

この要素は,リスト中の項目を表すために,格納値及びラベルを指定する。この要素は,select1 要素及

び select 要素内に存在する。又は,choices 要素内でグループ化される。

共通属性:共通

8.2.3

value

要素

この要素は,item が選択された場合に使用される格納値を提供する。

共通属性:共通,単一ノード結合(省略可能)

データ結合制限:結合する選択制御のデータ型に従うすべての字句値が有効でなければならない。

行内内容及び ref 属性が両方とも指定された場合,ref 属性が使用される。

8.3

その他の要素

次に詳述する子要素は,フォーム制御にメタデータを付加するのに使用できる。

フォーム制御のラベルを label 要素内の行内内容として指定するようなメタデータの指定方法の代わり

として,これらの要素上で単純なリンク付け属性 src を使用することでメタデータを参照することができ

る。この機能を体系的に使用することは,XForms 利用者インタフェースの国際化において有効である。

手順を次に示す。

−  利用者に読ませるメッセージをすべて別の資源 XML に分離記述する。

−  この XML 資源束の URI を各 label 要素で使用する。

− XForms 実装で,クライアントからの accept-language ヘッダを使用するなど,内容交渉を使用して適

切な XML 資源束を取得する。このようにすることで,メッセージが利用者のロケールに現地化され

た利用者インタフェースを提供できる。

8.3.1

filename

要素

省略可能な要素 filename 上の結合属性は,活性化されたときに親要素 upload によって配置され,選択さ

れたバイナリ資源のインスタンス内における配置場所を指定する。セキュリティ上の理由から,

upload

は,

ノードに存在する値に起因する処理を行ってはならない。

共通属性:共通,単一ノード結合

次の例では,利用者はイメージを選択するように促される。活性化されたとき,upload はイメージのバ

イナリデータ又はイメージの URI を mail/attachment に配置する。いずれが配置されるかは,mail/attachment

に宣言された型による。ファイル名(例えば“me.jpg”

)が属性ノード mail/attachment@filename に配置さ

れ,mediatype(例えば“image/jpeg”

)が属性ノード mail/attachment@mediatype に配置される。

<upload ref="mail/attachment" mediatype="image/*">

  <label>

添付する画像を選択してください</label>

  <filename ref="@filename"/>

  <mediatype ref="@mediatype"/>

</upload>

8.3.2

mediatype

要素

省略可能な要素 mediatype 上の結合属性は,該当する場合に,活性化されたときに親要素 upload によっ

て配置される,選択されたバイナリ資源のメディア型のインスタンス内における配置場所を指定する。

共通属性:共通,単一ノード結合


61

X 4178

:2007

8.3.3

label

要素

この必す(須)の要素は,それを含むフォーム制御に説明的な名前のラベルを付ける。さらに,label 要

素は,フォーム制御を見ることができない利用者に,フォーム制御間のナビゲーション中に簡単な説明を

与えることを可能にする。

共通属性:共通,単一ノード結合(省略可能)

,リンク付け

特殊属性:

リンク付け属性

外部ラベルへのリンク。リンク走査に失敗した場合は,誤りとして扱われる(4.5.3 参照)

指定されたラベルはインスタンスデータ内,遠隔ドキュメント又は内部テキストとして存在できる。要

素内にラベルのソースが複数指定された場合,その優先順位は,単一ノード結合属性,リンク付け属性,

内部テキストの順とする。

XForms

を含んでいるフォーム制御にフォーカスが移動したとき,ここにカプセル化されたメタデータ

は,アクセシビリティ支援によって発声されることが考えられる。

8.3.4

help

要素

省略可能な要素 help は,フォーム制御にヘルプ情報を付加する便利な方法を提供する。これは<message

level="modeless" ev:event="xforms-help" ev:propagate="stop">

と等価とする。

共通属性:共通,単一ノード結合(省略可能)

,リンク付け

特殊属性:

リンク付け属性

外部ヘルプ情報へのリンク。リンク走査に失敗した場合は誤りとして扱われる(4.5.3 参照)

指定されたメッセージは,インスタンスデータ,遠隔のドキュメント,又は内部のテキストとして存在

することができる。要素内に複数のメッセージが指定された場合,その優先順位は,単一ノード結合属性,

リンク付け属性,内部テキストの順とする。

この要素の例については,10.1.12 を参照する。

8.3.5

hint

要素

省略可能な要素 hint は,フォーム制御にヒント情報を付加する便利な方法を提供する。これは,<message

level="ephemeral">

で応答する xforms-hint イベントのハンドラと等価とする。

共通属性:共通,単一ノード結合(省略可能)

,リンク付け

特殊属性:

リンク付け属性

外部ヒントへのリンク。リンク走査に失敗した場合は誤りとして扱われる(4.5.3 参照)

指定されたメッセージは,インスタンスデータ,遠隔のドキュメント,又は内部のテキストとして存在

することができる。要素内に複数のメッセージが指定された場合,その優先順位は,単一ノード結合属性,

リンク付け属性,内部テキストの順とする。

この要素の例については,10.1.12 を参照する。

8.3.6

alert

要素

省略可能な alert 要素は,フォーム制御に警告又は誤り情報を付加する便利な方法を提供する。この要素

の可視化の定義は実装に依存し,modal 又は ephemeral など,表示されるメッセージに関する既定の level

は存在しない。

共通属性:共通,単一ノード結合(省略可能)

,リンク付け


62

X 4178

:2007

特殊属性:

リンク付け属性

外部警告へのリンク。リンク走査に失敗した場合は誤りとして扱われる(4.5.3 参照)

指定されたメッセージは,インスタンスデータ,遠隔のドキュメント,又は内部のテキストとして存在

することができる。要素内に複数のメッセージが指定された場合,その優先順位は,単一ノード結合属性,

リンク付け属性,内部テキストの順とする。利用者への提示の例については,

附属書 を参照する。

9

XForms

利用者インタフェース

ここでは,

フォーム制御を利用者インタフェースに組み入れるための XForms の機能について記述する。

9.1

XForms

グループモジュール

箇条 で定義されているフォーム制御はすべて,XHTML 処理などにおいて視覚的な配置目的でそれぞ

れ単独で扱われる。箇条 で定義するマーク付けを使用して複数のフォーム制御をまとめることで,利用

者インタフェース制御間の関係が意味付けられる。この手法は関連する UI を小形の装置で扱うのに役立

つ。例えば,利用者インタフェースを幾つかの画面上に分離させる必要がある場合,通常は,同じまとま

り内にある制御を同一画面又はページに可視化する。このモジュールに含まれる要素及び属性を

表 に示

す。

表 9−グループモジュール

要素

属性

最小内容モデル

group

共通,UI 共通,単一ノード結合(省略可能)

label?

,((フォーム制御)|group|switch|repeat|UI 共通)*

9.1.1

group

要素

group

要素はフォーム制御の階層を定義するためのコンテナとして使用される。group を入れ子にして複

雑な階層を作成することもできる。単一ノード結合が空のノード集合又は有効でないノードと解釈される

場合,グループは有効でないと考えられる。

共通属性:共通,UI 共通,単一ノード結合(省略可能)

注記  グループが有効でない場合,有効でないことを示す描画方式がそのグループのすべての内容に

適用される。

省略可能な label 要素は,それが group の最初の子要素として現れる場合,特別な意味をもち,グループ

全体のラベルとして機能する。

例  関連制御のグループ化

<group ref="address">

  <label>

発送先住所</label>

  <input ref="line_1">

        <label>

住所 1</label>

  </input>

  <input ref="line_2">

        <label>

住所 2</label>

  </input>

  <input ref="postcode">


63

X 4178

:2007

        <label>

郵便番号</label>

  </input>

</group>

group

に入力フォーカスを設定した場合,その group 内のナビゲーション順で最初のフォーム制御にフォ

ーカスが設定される。

9.2

XForms

スイッチモジュール

ここでは,利用者操作及びイベントによって変化する利用者インタフェースの作成を可能にするスイッ

チ構造を定義する。このモジュールに含まれる要素及び属性を

表 10 に示す。

表 10−スイッチモジュール

要素

属性

最小内容モデル

switch

共通,UI 共通,単一ノード結合(省略可能)

case+

case

共通,selected (xsd:boolean)

label?

,((フォーム制御)|group|switch|repeat)*

toggle

共通,case (xsd:IDREF)

EMPTY

9.2.1

switch

要素

この要素には一つ以上の case 要素が含まれ,ある時間に可視化されるのはそのうちのいずれか一つだけ

とする。switch が有効でないことは group と同じ方法で評価し,すべての内容に同様に適用する。

注記  これは,XForms モデルの現在の状態に基づく XForms relevant 処理(6.1.4 参照)とは異なる。

例えば,アンケート内の利用者の自動車に関連する部分は,

“あなたは車を所有していますか?”

という質問に利用者が肯定的な回答をした場合にだけ,現在有効なものにしてよい。

共通属性:共通,UI 共通,単一ノード結合(省略可能)

例 switch

<switch>

  <case id="in" selected="true">

        <input ref="yourname">

            <label>

名前を教えてください</label>

      <toggle ev:event="DOMActivate" case="out"/>

    </input>

  </case>

  <case id="out" selected="false">

        <html:p>

こんにちは,<output ref="yourname" />さん

      <trigger id="editButton">

                <label>

編集</label>

        <toggle ev:event="DOMActivate" case="in"/>

            </trigger>

        </html:p>

  </case>

</switch>

この例では,最初の case に含まれる利用者インタフェース部分が最初に表示され,利用者に名前の入力


64

X 4178

:2007

を要求する。利用者が値を入力し,enter を押すことなどによって制御を

活性化

することで,読込み専用の

output

を可視化する別の case に切り換える。さらに,

“編集”というラベルが付けられた trigger を活性化

することで元の case に戻る。

9.2.2

case

要素

この要素は,条件付きで可視化されるマーク付けを囲む。selected 属性は選択の初期状態を決定する。

共通属性:共通

特殊属性:

selected

省略可能。case に対する選択の状態。既定値は“false”とする。

switch

内の複数の case が selected="true"である場合,最初の case が選択されたままになり,その他はす

べて選択が解除される。どれも選択されていない場合,最初のものが選択される。

9.2.3

toggle

要素

この XForms アクションは,switch 内の選択肢の排他的なリストから,case を一つ選択する。

このアクションは,指定された case を含む switch の新しい状態を反映するように,影響を受けるすべて

の case 上の選択の状態(属性値ではない)を調整する。

1)

現在選択されている case に xforms-deselect イベントを発生させる。

2)

選択する case に xform-select イベントを発生させる。

共通属性:共通,イベント

特殊属性:

case

必す(須)

。case 要素を示す。

9.3

XForms

繰返しモジュール

XForms

規定では,発注書内の複数品目などの繰返し構造の定義を許可している。XForms モデルを定義

する場合,このより上位の集合は基礎部品から組み立てられる。ここでは同様に,リスト及びコレクショ

ンなどのデータ構造に結合できる利用者インタフェース構造とする repeat を定義する。このモジュールに

含まれる要素及び属性を

表 11 に示す。

表 11−繰返しモジュール

要素

属性

最小内容モデル

repeat

共通,UI 共通,ノード集合結合,startindex (xsd:positiveInteger),number

(xsd:nonNegativeInteger)

((

フォーム制御)|group|repeat)*

itemset

共通,ノード集合結合 label,(value|copy),(UI 共通)*

copy

共通,単一ノード結合(省略可能) EMPTY

insert

共通,イベント,ノード集合結合,at (XPathExpression),position

("before"|"after")

EMPTY

delete

共通,イベント,ノード集合結合,at (XPathExpression)

EMPTY

setindex

共通,イベント,repeat (xsd:IDREF),index (XPathExpression)

EMPTY

(多種)

[repeat-nodeset, repeat-bind, repeat-model]

(ノード集合結合属性)

repeat-startindex (xsd:positiveInteger)

,repeat-number

(xsd:nonNegativeInteger)

N/A

9.3.1

repeat

要素


65

X 4178

:2007

この要素は,

ノード集合結合属性によって選択された同種の集まりに対する UI マッピングを定義する。

このノード集合は,共通の親ノードをもち,同一のローカル名及び名前空間名をもつ連続する子要素ノー

ドで構成されなければならない。異種混在のノード集合に関する repeat 要素の振る舞いは定義されない。

例  買い物かご

<repeat nodeset="/cart/items/item">

  <input ref="." ...>

    <label>...</label>

  </input>

  <html:br/>

</repeat>

共通属性:共通,UI 共通,ノード集合結合

特殊属性:

startindex

省略可能。1 から開始される繰返しインデクス。既定値は 1 とする。

number

省略可能。集合に属する要素のうちの幾つを表示するかに関する XForms プロセサへのヒント。

この要素は,カプセル化された利用者インタフェース制御を同種の集まりの各要素に結合することによ

って,その集まりに対して動作する。この要素の属性は,集まりのメンバの幾つがその時々で利用者に提

示されるかを指定する。

この集まりの操作には,

XForms

アクション

(箇条 10 参照)

insert

delete

及び setindex

を使用できる。特殊な利用者インタフェース相互作用を考慮しない場合,繰返しを表示する別の方法は,

その繰返しを“展開”することとする。返されるノード集合の item 要素の数が四つであると仮定すると,

前記の例は次と同様とする。

例  展開された繰返し

<!-- unrolled repeat -->

  <group ref="/cart/items/item[1]">

    <input ref="." .../><html:br/>

  </group>

  <group ref="/cart/items/item[2]">

    <input ref="." .../><html:br/>

  </group>

  <group ref="/cart/items/item[3]">

    <input ref="." .../><html:br/>

  </group>

  <group ref="/cart/items/item[4]">

    <input ref="." .../><html:br/>

  </group>

例  同種の集まり

<model>

  <instance>


66

X 4178

:2007

        <my:lines>

      <my:line name="a">

        <my:price>3.00</my:price>

            </my:line>

      <my:line name="b">

        <my:price>32.25</my:price>

            </my:line>

      <my:line name="c">

        <my:price>132.99</my:price>

            </my:line>

            </my:lines>

  </instance>

</model>

  ...

<repeat id="lineset" nodeset="/my:lines/my:line">

  <input ref="my:price">

        <label>

品目</label>

  </input>

  <input ref="@name">

        <label>

名称</label>

  </input>

</repeat>

<trigger>

  <label>

新しい品目を現在の品目の後ろに追加</label>

  <action ev:event="DOMActivate">

    <insert nodeset="/my:lines/my:line" at="index('lineset')"

      position="after"/>

    <setvalue ref="/my:lines/my:line[index('lineset')]/@name"/>

    <setvalue ref="/my:lines/my:line[index('lineset')]/price">0.00</setvalue>

    </action>

</trigger>

<trigger>

  <label>

現在の品目を削除</label>

  <delete ev:event="activate" nodeset="/my:lines/my:line"

        at="index('lineset')"/>

</trigger>

9.3.2

属性を使用する繰返し構造の作成


67

X 4178

:2007

要素 repeat を使用することで,繰返し構造に値を設定するための利用者インタフェースを作成すること

ができる。XHTML などの呼出し側の言語で XForms を使用する場合,table などの構造内に繰返し構造を

作成することがしばしば必要になる。その場合,table 内で repeat 要素を使用して表内に行を作成し,各行

を同種の集まりの個々のメンバに結合させることを考えがちであるが,html:table では現在(おそらく今後

も)xforms:repeat 要素を子ノードとして使用できないため,他の構文が必要になる。

例  表及び繰返し構造

<table>

  <repeat nodeset="...">

        <tr>

      <td>...</td>

      ...

        </tr>

  </repeat>

</table>

より一般的にいえば,呼出し側の言語の内容モデルが他モジュールを使用するための適切な拡張点を提

供しない又は提供できない箇所で,繰返しの振る舞いを呼出し側の言語に組み込む必要がある。これを実

現するために,XForms 1.0 は repeat 要素と機能的に等価な別の構文を定義している。この構文は次の属性

を使用する。

repeat-model

repeat-bind

repeat-nodeset

repeat-startindex

repeat-number

前記の属性は,これらから接頭辞 repeat-を除いた名前をもつ repeat の属性と等価とする。呼出し側の言

語の適切な箇所にこれらの属性を含めることで繰返し構造を使用できる。

次に XHTML での使用例を示す。

例  表及び繰返し構造

<html:table xforms:repeat-nodeset="...">

  <html:tr>

    <html:td><xforms:output ref="..."/></html:td>

  </html:tr>

</html:table>

これについては,XForms 繰返しモジュールを含む適切に構成された XHTML のスキーマに照らし

て妥当性を検証できる。繰り返されるのは repeat-属性をもつ要素の子要素であることに注意する。

これは純粋に構文上の変形として考えることが望ましく,

繰り返す処理の意味するものに変わりはない。

純粋に構文上の変形として理解する目的では,要素 repeat は,repeat 要素の内容をラップする名前の付い

ていない group を含むものとして見ることができる。つまり,次のとおりに考える。

<repeat ...>

  ...


68

X 4178

:2007

</repeat>

これは次と等価とする

<repeat ...>

  <group ref=".">...</group>

</repeat>

さらにこれは次と等価とする

<group repeat-...>

  ...

</group>

注記  この等価の結果はグループに指定された単一ノード結合が有効でないことの適用可能性を意味

する。

また,XForms アクション setindex を使用する場合,idref 型の repeat 属性は繰返しの属性をもつ任意の要

素を指すことができる。同様に,repeat-属性を使用して作成された繰返し構造に対して関数 index を使用す

る場合,その要素の id を関数 index の引数として使用できる。

9.3.3

itemset

要素

この要素を使用すれば,select 制御及び select1 制御の選択肢を動的に作成することができ,その場合,

利用可能な選択肢は実行時に決まる。利用可能な選択肢を保持するノード集合は属性 nodeset によって指

定される。repeat の場合と同様,このノード集合は同種の集まりとすることが望ましい。子要素である label

及び value は,ラベル及び格納値を間接的に指定する。itemset の実行時の効果は,利用可能な選択を静的

に記述する choices 要素を使用する場合と同じであることに注意する。

共通属性:共通,ノード集合結合

注記 refresh イベントが発生された場合は常に nodeset が再評価され,利用可能な選択肢のリストが

更新される。

次の例は,アイスクリームの風味の動的なリストを指定するための select 制御内の itemset 要素を示して

いる。

例  アイスクリーム風味の動的な選択

<model id="cone">

  <instance>

    <my:icecream>

            <my:order/>

    </my:icecream>

  </instance>

</model>

<model id="flavors">

  <instance>


69

X 4178

:2007

        <my:flavors>

      <my:flavor type="v">

                <my:description>

バニラ</my:description>

            </my:flavor>

      <my:flavor type="s">

                <my:description>

ストロベリ</my:description>

            </my:flavor>

      <my:flavor type="c">

                <my:description>

チョコレート</my:description>

            </my:flavor>

        </my:flavors>

  </instance>

</model>

<!-- user interaction markup -->

<select model="cone" ref="my:order">

  <label>

味</label>

  <itemset model="flavors" nodeset="/my:flavors/my:flavor">

        <label ref="my:description"/>

    <copy ref="my:description"/>

  </itemset>

</select>

<!-- For all three items selected, this example produces instance

 data like

     <my:icecream>

              <my:order>

                  <my:description>

バニラ</my:description>

                  <my:description>

ストロベリ</my:description>

                  <my:description>

チョコレート</my:description>  

              </my:order>

     </my:icecream>

-->

9.3.4

copy

要素

この要素は構造的な面で value 要素(8.2.3 参照)に類似しているが,使用できるのが itemset 内だけであ

る点と,動作の対象が単純な値ではなくインスタンスデータの部分木である点とが異なっている。

共通属性:共通,単一ノード結合(省略可能)

item

が選択されたとき,次の規則が適用される。


70

X 4178

:2007

−  リストフォーム制御内の結合属性によって指定されたターゲットノードは要素ノードでなければなら

ない。そうでない場合は例外とする(4.5.1 参照)

− item に関連付けられている,copy 上の結合属性によって指定された要素ノードがターゲットノードの

子要素としてディープコピーされる。

−  計算に必要な依存関係が完全に再構築される。

item

の選択が解除されたとき,次の規則が適用される。

−  リストフォーム制御内の結合属性によって指定されたターゲットノードは要素ノードでなければなら

ない。そうでない場合は例外とする(4.5.1 参照)

− item に関連付けられている,copy 上の結合属性によって指定された要素ノードが削除される。

−  計算に必要な依存関係が完全に再構築される。

9.3.5

insert

要素

このアクションは同種の集まり(例えば買い物かご内の品目の集合)に新しい項目を挿入するために使

用される。insert アクションの属性は,新しい項目の集まりへの挿入に関する指定であり,その集まりの中

で新しいノードが現れる位置に関して指定する。新しいノードは,同種の集まりの最後のメンバのクロー

ンを作ることで作成される。この処理で,xsd:ID 型のノードは,インスタンスデータ中で一意な値になる

ように修正される。

共通属性:共通,イベント,ノード集合結合

特殊属性:

at

必す(須)

。挿入位置を決定するために評価される XPath 式。

position

必す(須)

before(前に挿入)又は after(後に挿入)のいずれかを選択する。

insert

処理の規則は次のとおりとする。

1)

ノード集合結合を評価することによって,更新対象の同種の集まりを決定する。集まりが空の場合,

insert

アクションは無効とする。

2)

ノード集合結合はインスタンスデータ中の同種の集まりを特定する。挿入するノードを生成するため

に,この集まりの最後のメンバのクローンを作成する。最後に,この新しく作成したノードを,イン

スタンスデータの,position 属性及び at 属性によって指定された位置に挿入する。

at

属性の評価結果によって,挿入のインデクス,つまりノード集合に対するインデクスを表す数値

が決まる。at 属性は,ノード集合結合の文書順で最初のノードを文脈ノード,ノード集合結合のサイ

ズを文脈サイズとし,文脈位置を 1 として評価される。position 属性によって,新しいノードをそのイ

ンデクスの前又は後のいずれに挿入するのかが決まる。

インデクスの決定規則は次のとおりとする。

a)

属性 at に指定された XPath 表現の戻り値は,

XPath

関数 round()の規則に従って処理される。

例えば,

リテラル“1.5”は“2”になり,リテラル“string”は NaN になる。

b)

結果が NaN である場合,insert はノード集合の最後への追加になる。

c)

結果として得られたインデクスは,それがノード集合の妥当な範囲にない場合,1 又はノード集合

のサイズのいずれか近い値に置き換えられる。

3)

ノードを追加した同種の集まりに結合しているすべての繰返しに対するインデクスを,新たに追加し

たノードを指すように更新する。内側の入れ子として存在する繰返しのためのインデクスを startindex


71

X 4178

:2007

に再初期化する。

4)

挿入処理が正常に終了した場合,イベント xforms-insert を発生する。

このアクションの結果,新たに作成されたデータノードが XForms インスタンスデータに挿入される。

このノードは,処理モデルの初期化(4.2 参照)で定義されるとおりに作成される。例えば,これが繰返し

構造とともに使用された場合,背後にある集まり内の新しい項目に値を設定するのに必要な利用者インタ

フェースのインスタンスが作成される。

注記  このアクションが action 要素内に含まれる場合の遅延更新の振る舞いは特殊なものになる

10.1.1 参照)

insert

を繰り返す構造とともに使用する例については,9.3.1 を参照する。insert とともに XForms setvalue

アクションを使用することで,新しく挿入されたノードに対する初期値を指定できることに注意する。

9.3.6

delete

要素

このアクションはインスタンスデータからノードを削除する。

共通属性:共通,イベント,ノード集合結合

特殊属性:

at

必す(須)

。削除位置を決定するために評価される XPath 式。

delete

処理の規則は次のとおりとする。

1)

ノード集合結合を評価することによって,更新対象の同種の集まりを決定する。集まりが空の場合,

delete

アクションは無効とする。

2) n

番目の要素ノードをインスタンスデータから削除する。n は,9.3.5 で定義されるノード集合インデ

クスの評価から返される数値とする。n 番目のノードが存在しない場合,この操作は無効とする。

3)

削除処理後のインデクスが指すノードは,次の場合を除いて,削除処理前と同じであることが望まし

い。

−  集まり内に残っていた最後の項目が削除された場合,インデクス位置は 0 になる。

−  削除されたノードをインデクスが指していた場合で,そのノードが集まり内の最後の項目であった

場合,インデクスは削除後の集まり内で最後のノードを新たに指す。内側の繰返しのインデクスは

再初期化される。

−  削除されたノードをインデクスが指していた場合で,そのノードが集まり内の最後の項目ではなか

った場合,インデクス位置は変更されない。内側の繰返しのインデクスは再初期化される。

繰返しの再初期化とは,それが空の場合にインデクスを 0 に変更し,それ以外の場合は 1 に変更す

ることを意味する。

4) delete

が正常終了した場合,イベント xforms-delete を発生する。

このアクションの結果,インスタンスデータ内のノードは削除される。

注記  このアクションが action 要素内に含まれる場合の遅延更新の振る舞いは特殊なものになる

10.1.1 参照)

delete

を繰返し構造とともに使用する例については,9.3.1 を参照する。

9.3.7

setindex

要素

このアクションは,ある項目を繰返し内で現在指し示されるものとして設定する(9.3.1 参照)

共通属性:共通,イベント

特殊属性:


72

X 4178

:2007

repeat

必す(須)

。繰返し要素を示す。

index

必す(須)

。繰返し内の 1 を基準とする相対位置として評価される XPath 式。

指定されたインデクスが 0 以下である場合,xforms-scroll-first イベントが発生され,インデクスは 1 に

設 定 さ れ る 。 指 定 さ れ た イ ン デ ク ス が 繰 返 し の 最 後 の 項 目 の イ ン デ ク ス よ り も 大 き い 場 合 ,

xforms-scroll-last

イベントが発生され,インデクスは最後の項目のインデクスに設定される。インデクスが

NaN

と評価される場合,このアクションは無効とする。内側の入れ子の繰返しのためのインデクスは

startindex

に再初期化される。このアクションの結果,実装内の計算に必要な依存関係を管理するためのデ

ータ構造は再構築又は更新される。

9.3.8

繰返し処理

repeat

要素の本体内に含まれるマーク付けは,背後にある集まりの各メンバに対して利用者インタフェ

ースを生成することを指定する。利用者インタフェースの初期化中(4.2.2 参照)

,repeat に対して次のステ

ップが実行される。

1)

この repeat の操作対象である同種の集まりに位置付けるために,ノード集合結合を評価する。

2)

この繰返し構造のための index を startindex の値に初期化する。

初期の startindex が 1 より小さい場合,

1

が指定されたものとする。index が初期のノード集合より大きい場合,ノード集合のサイズが指定さ

れたものとする。

3) repeat

で指定された利用者インタフェースを,repeat 要素上の属性で指定された集まりのメンバの必要

数だけ生成する。

繰返し構造のための処理モデルでは,インスタンスデータ中の

現在

の項目を指す

インデクス

が使用され

る。この繰返しインデクスは,XForms index 関数(7.8.5 参照)を介してアクセスされ,XForms setindex ア

クション(9.3.7 参照)を介して操作される。このインデクスは insert 及び delete 操作のための参照ポイン

トとして使用される。repeat 要素内に含まれる XForms フォーム制御では,値の格納先である集まり内の項

目のインデクスが明示的に指定されないことに注意する。これは意図されたものであり,これによって文

書作成及び処理モデルの両方ともが単純なものに保たれる。

繰返しに付けられた結合式は,個々のノードではなく,値の格納先である集まりのノード集合を返す。

repeat

要素の本体内で,結合は,インデクスによって決定されるノードの文脈ノードで評価される。繰返

し処理は XPath 式を使用して repeat 要素の操作対象の集まりを決定する。初期インスタンスデータは同種

の集まりの原型メンバを供給する。

repeat

内のフォーム制御は,集まりの個々の項目に値を格納するのに適切なものである必要がある。こ

の単純ではあるが強力な機能によって,XForms モデルに集まりの入れ子が指定されている場合に,対応

する利用者インタフェースで repeat 要素を入れ子にすることができる。

9.3.9

繰返しの入れ子

repeat

要素を入れ子にして,構造化データを編集するためのより強力な利用者インタフェースを作成す

ることができる。G.2 に示す XForms を使用した階層型ブックマークの編集は,複数の節内のブックマーク

から成る階層データを編集するのに繰返しの入れ子を使用するフォームの例とする。この例の一部として

現れる次の insert 文について考える。

例  繰返しのインデクス及び入れ子


73

X 4178

:2007

<xforms:insert nodeset="/bookmarks/section[index('repeatSections')]/bookmark"

               at="index('repeatBookmarks')"

               position="after"/>

この例で,前記の insert ステートメントは,

現在選択されている

節に新しいブックマークのエントリを

加えるために使用されている。  内部の(入れ子にされた)繰返しは,この選択された節内のブックマーク

を操作する。この内側の繰返しのインデクス(インデクスは XForms index 関数によって返される。

)は,1

から開始される。したがって,新しい空のブックマークの節が作成され,

現在

のもの(current)になった後,

最初の

ブックマークの挿入操作

では,新しく作成されたブックマークがリストの先頭に追加される。

9.3.10

利用者インタフェースの相互作用

要素 repeat を使用すれば,利用者の対話を同種の集まりに結合することができる。可視化される項目の

数は集まり内の有効な総数より少ない可能性もある。その場合,同時に表示される繰返し項目は,その一

部分だけになる。例えば,GUI にスクロールテーブルが表示されることが考えられる。繰返しインデクス

によって示される現在の項目は,例えば,表示領域外にスクロールされるのではなく,常に利用者から利

用可能になることが望ましい。XForms アクション(箇条 10 参照)に列挙された XForms アクションをイ

ベントリスナ内で使用して,エントリをスクロール,挿入及び削除することによって,値の格納先である

同種の集まりを操作してもよい。

要素 repeat によってカプセル化されたマーク付けは,利用者に提示される利用者対話のためのテンプレ

ートの役割を果たすことに注意する。その結果,生成された利用者インタフェースの一部分を,静的に記

述した idref 属性を使用して参照することは不可能である。したがって,XForms 1.0 では repeat 要素内の

switch

構造の振る舞いを定義しない。XForms の将来の版で,実装の経験及び利用者からのフィードバック

に基づいて repeat 内の switch の振る舞いが定義される可能性もある。

10  XForms

アクション

ここでは,イベントに応じて起動することができる,XML イベントに基づいた[XML Events]アクション

の共通的なセットを定義する。

注記 XForms 自身は,スクリプトに基づいたイベント処理の方法を定義しない。そのような機能の定

義は,呼出し側の言語の責任とする。

10.1  XForms

アクションモジュール

この規定で定義されたフォーム制御はすべて,XForms アプリケーションの一貫した記述及びルック&

フィールを支援する,共通的な

振る舞い

の集合をもつ。この一貫性は,さまざまなフォーム制御に共通的

な振る舞いを付加することから得られる。XML イベントによって提供されたイベント結合機構とともに,

これらのハンドラは,XForms 利用者インタフェースの中の適切な箇所でイベント処理を指定するための

柔軟な手段をフォーム作成者に提供する。XForms アクションは抽象度の高い意味をとら(捉)える宣言

的な XML イベントハンドラとする。結果として,それらは,スクリプトだけに頼っていた以前のウェブ

技術と比較して,XForms ベースのアプリケーションのアクセシビリティを大きく向上させる。

このモジュールに含まれる要素及び属性は

表 12 のとおりとする。


74

X 4178

:2007

表 12−アクションモジュール

要素

属性

最小内容モデル

action

共通,イベント

(

アクション)+

dispatch

共通,イベント,name (xsd:NMTOKEN),target (xsd:IDREF),bubbles (xsd:boolean),

cancelable (xsd:boolean)

EMPTY

rebuild

共通,イベント,model (xsd:IDREF)

EMPTY

recalculate

共通,イベント,model (xsd:IDREF)

EMPTY

revalidate

共通,イベント,model (xsd:IDREF)

EMPTY

refresh

共通,イベント,model (xsd:IDREF)

EMPTY

setfocus

共通,イベント,control (xsd:IDREF)

EMPTY

load

共通,イベント,単一ノード結合(省略可能)

,resource (xsd:anyURI),show ("new"

| "replace")

EMPTY

setvalue

共通,イベント,単一ノード結合,value (XPathExpression)

PCDATA

send

共通,イベント,submission (xsd:IDREF)

EMPTY

reset

共通,イベント,model (xsd:IDREF)

EMPTY

message

共通,イベント,単一ノード結合(省略可能),リンク付け,level ("ephemeral" |

"modeless" | "modal")

(PCDATA|UI

Inline)*

9.2.3

9.3.59.3.6 及び 9.3.7 も参照する。

このモジュールは,次の要素を含む“アクション”内容集合も定義する(これらの内,toggle は XForms

スイッチモジュールから,insert,delete,setindex は XForms 繰返しモジュールからのものとする。

(action|dispatch|rebuild|refresh|recalculate|revalidate|setfocus|

 load|setvalue|send|reset|message|toggle|insert|delete|setindex)*

さらに,このモジュールは属性グループ“XML イベント”を定義する。これは,規定([XML Events])

に定義されたグローバル属性のすべてを含む。

次の例は,イベントをどのように使用できるかを示している。

例  アクション構文

<xforms:trigger>

  <xforms:label>

リセット</xforms:label>

  <xforms:reset ev:event="DOMActivate" model="thismodel"/>

</xforms:trigger>

この例は,HTML

リセット

制御の振る舞いを再現する。この規定では,この制御を独立したフォーム制

御として定義しない。

ここでは,組込みの各 XForms アクションごとに,次の項目について示す。

名前

共通属性

特殊属性

振る舞いの説明

箇条 10 で定義されるすべての要素で,XML イベント名前空間のグローバル属性が明示的に許可され,

[XML Events]

の 2.3 User Agent Conformance で定義された処理が適用される。

10.1.1  action

要素

このアクションは文書に指定されている順に子のアクションを実行する。


75

X 4178

:2007

共通属性:共通,イベント

例  アクションのグループ化

<trigger>

  <label>

ここをクリック</label>

  <action ev:event="DOMActivate">

    <reset model="thismodel"/>

        <setvalue ref="."/>

  </action>

</trigger>

遅延更新:XForms アクションの中には,action 要素の子孫要素として指定された場合に,インスタンス

データに対して遅れて適用される効果をもつものが多くある。

実装では,遅延更新を実現するのにどのような方法を採用してもよいが,結果は定められたとおりにな

らなければならない。つまり,一連のアクションによってインスタンスデータが変更された後,最も外側

のアクションハンドラの処理が終了するまで,計算に必要な依存関係の再構築,再計算,妥当性の再検証

及びフォーム制御のリフレッシュは行われてはならない。最も外側にある各アクションハンドラは,それ

らのアクションハンドラの終了時に rebuild,recalculate,revalidate 及び refresh のアクションが必要である

かどうかを示す,初期値が false である論理値フラグをもつと考えることができる。

rebuild

,recalculate,revalidate 又は refresh を直接呼び出すアクションは,その動作を直ちに実行し,対

応するフラグをクリアする。この範ちゅうに属する XForms アクションは次のとおりとする。

rebuild

recalculate

revalidate

refresh

インスタンスデータの木構造を変更する XForms アクションは,四つのフラグをすべて true にセットす

る。この範ちゅうに属する XForms アクションは次のとおりとする。

insert

delete

インスタンスノードの値だけを変更する XForms アクションは,recalculate,revalidate 及び refresh の各

フラグを true にセットし,rebuild フラグについては変更しない。この範ちゅうに属する XForms アクショ

ンは次のとおりとする。

setvalue

最後に,reset アクションは動作を直ちに実行し,すべてのフラグをクリアする。

10.1.2  dispatch

要素

このアクションは XForms イベントを target 属性に指定された要素に発生する。発生するイベントとし

て次の 2 種類がある。

1)

事前定義された XForms イベント(つまり xforms-event-name)

。この場合は,bubbles 及び cancelable

属性は無視され,箇条 で定義された標準の意味が適用される。

2) XForms

の文書作成者によって作成される,XForms での解釈が事前定義されていないイベント。定義

されることなく XForms プロセサによって処理されることはない。


76

X 4178

:2007

共通属性:共通,イベント

特殊属性:

name

必す(須)

。発生するイベントの名称。

target

必す(須)

。イベントのターゲットを示す。

bubbles

省略可能。このイベントが,[DOM2 Events]で定義されているようなバブル動作を伴うかどうかを示

す論理値。既定値はカスタムイベントの定義による。事前定義されたイベントに対しては,この属性

は無効とする。

cancelable

省略可能。このイベントが,[DOM2 Events]で定義されているような取消し可能なものであるかどう

かを示す論理値。既定値はカスタムイベントの定義による。事前定義されたイベントに対しては,こ

の属性は無効とする。

10.1.3  rebuild

要素

このアクションは,通常のイベントフローに従わずに直接,xforms-rebuild 処理を起動する。このアクシ

ョンによって,XForms プロセサは,インスタンスデータノード内の計算に必要な依存関係を把握するの

に使用される内部データ構造を再構築する(4.3.7 参照)

共通属性:共通,イベント

特殊属性:

model

省略可能。3.2.3 で定義されている XForms モデルセレクタ。

注記  このアクションが action 要素内に含まれる場合の遅延更新の振る舞いは特殊なものになる

10.1.1 参照)

10.1.4  recalculate

要素

このアクションは,通常のイベントフローに従わずに直接,xforms-recalculate 処理を起動する。その結

果,値が再計算される必要のあるインスタンスデータノードは,処理モデルで定義されているとおりに更

新される(4.3.6 参照)

共通属性:共通,イベント

特殊属性:

model

省略可能。3.2.3 で定義されている XForms モデルセレクタ。

注記  このアクションが action 要素内に含まれる場合の遅延更新の振る舞いは特殊なものになる

10.1.1 参照)

10.1.5  revalidate

要素

このアクションは,通常のイベントフローに従わずに直接,xforms-revalidate 処理を起動する。この結果,

インスタンスデータは処理モデルに定義されているように妥当性が再検証される(4.3.5 参照)

共通属性:共通,イベント

特殊属性:

model


77

X 4178

:2007

省略可能。3.2.3 で定義されている XForms モデルセレクタ。

注記  このアクションが action 要素内に含まれる場合の遅延更新の振る舞いは特殊なものになる

10.1.1 参照)

10.1.6  refresh

要素

このアクションは,通常のイベントフローに従わずに直接,xforms-refresh 処理を起動する。この結果,

XForms

利用者インタフェースは

リフレッシュ

され,利用者インタフェース制御の表示は背後にあるイン

スタンスデータの状態を反映するように更新される(4.3.4 参照)

共通属性:共通,イベント

特殊属性:

model

省略可能。3.2.3 で定義されている XForms モデルセレクタ。

注記  このアクションが action 要素内に含まれる場合の遅延更新の振る舞いは特殊なものになる

10.1.1 参照)

10.1.7  setfocus

要素

このアクションは,control 属性で指定されたフォーム制御に xforms-focus イベント(4.3.2 参照)を発生

する。このイベントは,accesskey などの XForms アクセシビリティ機能を実現するために,内部的に呼び

出されることに注意する必要がある。

共通属性:共通,イベント

特殊属性:

control

必す(須)

。フォーム制御を示す。

繰返し構造にフォーカスを設定する場合は,その繰返しのインデクスが指す繰返し項目にフォーカスを

設定する。

10.1.8  load

要素

このアクションは,指定されたリンクを走査する。

共通属性:共通,イベント,単一ノード結合(省略可能)

特殊属性:

resource

ロードする外部資源へのリンク。このリンクは,この要素と指定された遠隔資源との間の[XLink 1.0]

リンクとして定義されるものとする。リンク動作の制御は XML イベントによって定義されるため,

XLink

の actuate 値は定義されない。XLink の show 値は,show 属性に依存する。リンク走査に失敗し

た場合は誤りとして処理される(4.5.3 参照)

show

省略可能。リンクの振る舞いを示す。この属性が指定されない場合,既定値として“replace”が仮

定される。

インスタンスデータ内の URI を示す単一ノード結合属性又はリンク付け属性のいずれかを必要とする。

両方指定された場合,このアクションは無効とする。

show

属性に指定できる各値は,次に示すとおりに,リンク走査によって到達した文書(又は文書の一部)

の処理を指定するものとする。

new


78

X 4178

:2007

文書は,新しい表示文脈,例えば,新しいウィンドウにロードされる。元のウィンドウではフォー

ム処理が引き続き行われる。

replace

文書は現在のウィンドウ内にロードされる。フォーム処理は,利用者が新しい文書への移動を手動

で要求した場合と全く同じように中断する。

10.1.9  setvalue

要素

このアクションは,指定されたインスタンスノードの値を明示的に設定する。

共通属性:共通,イベント,単一ノード結合

特殊属性:

value

省略可能。XPath 式。この XPath 式の評価結果が選択されたインスタンスデータノードに格納され

る。単一ノード結合の結果が,この XPath 式の評価文脈になる。

setvalue

要素の内容は,設定されるリテラル値を示す。この指定方法は,value 属性を使用して計算され

た値を指定する方法の代替として使用できる。これらの方法を比較する二つの例を次に示す。

例  式を使用する setvalue

<setvalue bind="put-here" value="a/b/c"/>

インスタンスデータの a/b/c に存在する文字列値が,id="put-here"のバインド要素によって選択さ

れた単一ノードに置かれる。

例  リテラルを使用する setvalue

<setvalue bind="put-here">literal string</setvalue>

値“literal string”が,id="put-here"のバインド要素によって選択された単一ノードに置かれる。

value

属性もテキスト内容も指定されない場合,選択されたノードの値は空文字列(

“”

)に設定さ

れる。両方指定された場合,value 属性が使用される。

文字列はすべて,次のとおりに,インスタンスデータに挿入される。

−  要素ノードの場合:要素に子テキストノードが存在する場合,最初のテキストノードが新しい値に対

応するものに置き換えられる。子テキストノードが存在しない場合,子テキストノードが作成されて

新しい値に対応付けられ,最初の子ノードとして追加される。

−  属性ノードの場合:属性の文字列値が新しい値に対応する文字列に置き換えられる。

−  テキストノードの場合:テキストノードが新しい値に対応するものに置き換えられる。

−  名前空間ノード,処理命令ノード,コメントノード及び XPath のルートノードの場合:振る舞いは未

定義とする。

注記  このアクションが action 要素内に含まれる場合の遅延更新の振る舞いは特殊なものになる

10.1.1 参照)

10.1.10  send

要素

このアクションは,xforms-submit イベントを発生することによって送付処理を開始する。xforms-submit

イベントの処理は処理モデルで定義されている(4.3.9 参照)

共通属性:共通,イベント


79

X 4178

:2007

特殊属性:

submission

必す(須)

。submission 要素を示す。

注記  この XForm アクションによって,次のことを簡単に表すことができる。

<dispatch target="mysubmitinfo" name="xforms-submit"/>

10.1.11  reset

要素

このアクションは,指定された model に xforms-reset イベントを発生することによって,リセット処理

を開始する。xforms-reset イベントの処理は処理モデルで定義されている(4.3.8 参照)

共通属性:共通,イベント

特殊属性:

model

省略可能。3.2.3 で定義されている XForms モデルセレクタ。

注記  このアクションが action 要素内に含まれる場合の遅延更新の振る舞いは特殊なものになる

10.1.1 参照)

10.1.12  message

要素

このアクションは,利用者に表示されるメッセージをカプセル化する。

共通属性:共通,イベント,単一ノード結合(省略可能)

特殊属性:

リンク付け属性:外部メッセージへのリンク。リンク走査に失敗した場合は誤りとして処理される(4.5.3

参照)

level

必す(須)

。("ephemeral"|"modeless"|"modal"|QName-but-not-NCName)のいずれかであるメッセージレ

ベル識別子。この規定では,QName 値のための振る舞いを定義しない。

メッセージとして指定できるのは,インスタンスデータ内,遠隔文書内,又は内部テキストとして存在

するものとする。この要素内に複数のメッセージソースが指定されている場合,優先順位は,単一ノード

結合属性,リンク付け属性,内部テキストの順になる。

グラフィカルブラウザにおける modal メッセージの可視化の例を

図 12 に示す。

<model>

  <message level="modal"

                          ev:event="xforms-ready">

これは演習ではありません!</message>

  ...

</model>

図 12message 要素の可視化例

modeless

メッセージは help メッセージを表示するための基礎となる。グラフィカルブラウザにおける


80

X 4178

:2007

help

メッセージの可視化の例を

図 13 に示す。

<secret ref="/login/password">

  <label>Password</label>

    <help>

パスワードをお忘れですか?クレジットカードをお手元に用意して,

         1-900-555-1212

に電話してください。</help>

</secret>

図 13help 要素の可視化例

ephemeral

メッセージは hint メッセージを表示するための基礎となる。グラフィカルブラウザにおける

hint

メッセージの可視化の例を

図 14 に示す。

<input ref="po/address/street1">

  <label>

市町村及び番地</label>

  <hint>

市町村名及び番地を入力してください。</hint>

</input>

図 14hint 要素の可視化例

10.1.13  insert

delete

及び setindex アクション

箇条 10 で詳述したアクションハンドラに加えて,XForms には,insert 要素(9.3.5 参照)

,delete 要素(9.3.6

参照)及び setindex 要素(9.3.7 参照)の三つのアクションが XForms 繰返しモジュールの一部として定義

されている。

11

送付

XForms

は,インスタンスデータを収集し,それを外部表現に直列化して,プロトコルを使用して送付

するように設計されている。XForms には,直列化及び送付に関する幾つかの任意機能が定義されている。

次に,送付に関するインスタンスデータの処理,並びに直列化及び送付に関する各任意機能の振る舞いを

定義する。

11.1  xforms-submit

イベント

送付は,xforms-submit イベントに対する既定アクションで開始される。

ターゲット:submission


81

X 4178

:2007

バブル:はい

取消し可能:はい

文脈情報:なし

どんな状況でも,ある一つの XForms 送付に関して複数の送付プロセスが同時に進行することは許可さ

れない。xforms-submit の既定アクションの最初から,xforms-submit-done 又は xforms-submit-error のための

既定アクションの完了まで,後続の xforms-submit イベントに対する既定アクションは何もしないこととす

る。

この状況以外では,このイベントに対する既定アクションは次のとおりとする(結果がこれと同じにな

るように実装する。

1)

インスタンスデータのノードを submission 要素上の属性に基づいて選択する。指定されたノード及び

それを祖先とするすべてのノードが,以降の送付処理手順の対象となる。6.1.4 で定義されている,現

在有効でないと判断されるノードはすべて対象外とする。

2)

選択されたすべてのインスタンスデータの妥当性を 4.3.5 の規則(通知イベントはこの処理を発生する

ためにマークされない。

)に従って再検証する。妥当でない必す(須)の又は空の選択されたインスタ

ンスデータノードが一つでも存在した場合,送付処理は xforms-submit-error イベントを発生した後に

停止する。

3)

選択されたインスタンスデータを 11.2 の規則に従って直列化する。

4)

直列化されたインスタンスデータを 11.2 の規則によって決定されるプロトコルを使用して送付する。

5)

送付から返された応答を次のとおりに処理する。

−  本体を含む成功応答が返され,要素 submission 上の replace 属性の値に“all”が指定されている場合,

xforms-submit-done

イベントを発生し,XForms を含んでいる文書全体を返された本体に置き換えて

送付処理を完了する。

− XML メディア型([RFC 3023]の内容型指定子で定義)の本体を含む成功応答が返され,要素

submission

上の replace 属性の値が“instance”である場合,応答を XML として解析する。解析に失

敗した場合は xforms-link-exception(4.5.2 参照)を生じる。成功した場合は instance 属性の設定によ

って示されるインスタンスに対応する内部インスタンスデータをすべてその結果で置き換える。一

度 XML インスタンスデータが置き換えられると,モデルに対して rebuild,recalculate,revalidate 及

び refresh の処理をこれらを起動するためのイベントを発生しないで実行する。その後,送付処理は

xforms-submit-done

を発生して完了する。

−  非 XML メディア型([RFC 3023]のどの指定子にも一致しない内容型)の本体を含む成功応答が返

され,要素 submission の replace 属性の値に“instance”が指定されている場合,文書の置換えは行

わず,xforms-submit-error を発生した後に送付処理を完了する。

−  本体を含む成功応答が返され,要素 submission の replace 属性の値に“none”が指定されている場合,

xforms-submit-done

を発生した後に送付処理を完了する。

−  本体を含まない成功応答が返された場合,xforms-submit-done を発生した後に送付処理を完了する。

−  属性 replace に指定できる他の値に対する振る舞いについては,この規定では定義しない。

−  誤り応答が返された場合,文書の置換えは行わず,xforms-submit-error を発生した後に送付処理を完

了する。

11.2

送付任意機能

XForms

モデルに指定される submission 要素には,直列化及び送付に影響する次の属性がある。ここで


82

X 4178

:2007

はこれらの属性に指定できる値に対する振る舞いを要約し,後続の 11.311.411.511.611.711.8 

び 11.9 で直列化及び送付のための振る舞いを定義する(直列化に影響するその他の submission の属性につ

いては,3.3.3 を参照する。

− action(xsd:anyURI)

− method(xsd:string,次に列挙)

action

の URI スキームついて,XForms は,HTTP/1.1 [RFC 2616]への結合を規定している。

注記  その他の結合,特に URI スキーム“mailto:”への結合は利用できるようにしてもよく,スキー

ム“https:”及び“file:”への結合は利用できるようにすることが望ましい。これらのスキーム

への結合は,

XForms

の規定では定義されない。これらのスキームへの結合を提供する実装では,

プライバシ及びセキュリティの問題に特別の注意を払うことが望ましい。

“http:”及び“https:”

スキームの中では,フォーム作成者は,GET メソッドを使用する状況に関する W3C Technical

Architecture Group

の見解[TAG Finding 7]に従うことが推奨される。

表 13 に示すとおりに,method 属性が直列化フォーマットを決定し,action 属性に指定された URI スキ

ームが送付プロトコルを決定する。

表 13−送付任意機能

URI

スキーム method

直列化

送付

http https mailto

“post” application/xml

HTTP

POST

又はそれと等価

http https file

“get” application/x-www-form-urlencoded HTTP

GET

又はそれと等価

http https file

“put” application/xml

HTTP

PUT

又はそれと等価

http https mailto

“multipart-post” multipart/related

HTTP

POST

又はそれと等価

http https mailto

“form-data-post” multipart/form-data

HTTP

POST

又はそれと等価

http https mailto

“ urlencoded-post ” 
(廃止予定)

application/x-www-form-urlencoded HTTP

POST

又はそれと等価

(任意)

接 頭 辞 の 付 加 さ れ
て い な い そ の 他 の

QNAME

対象外

対象外

(任意)

接 頭 辞 が 付 加 さ れ

た任意の QNAME

定義は実装に依存

定義は実装に依存

注記  外来の名前空間属性は要素 submission 上で許可されるが,振る舞いは XForms 1.0 では定義され

ない。

11.3  application/xml

としての直列化

この形式では,一般的な XML 処理ツールで容易に処理できる XML としてインスタンスデータを表すこ

とができる。さらに,この形式ではバイナリの内容の送付を可能とする。

直列化の手順は次のとおりとする。

1) submission

要素の属性として指定された値を使用して,[XSLT 1.0]の箇条 16(出力)及び 16.1(XML

出力メソッド)に定義された XML output メソッドの規則に従って XML 文書を生成する。

a)

名前空間ノードの処理:既定の振る舞いでは,有効な各名前空間に対して少なくとも一つの名前空

間宣言が XML に直列化されるように,XML output メソッドの規則に従ってすべての名前空間ノー

ドが直列化される。

その他の継承された名前空間は直列化された XML のルート要素で宣言される。

ただし,要素 submission 上の属性 includenamespaceprefixes が存在する場合,名前空間に対応する接

頭辞がその includenamespaceprefixes 属性に指定されているものを除いて,インスタンスデータ内で


83

X 4178

:2007

非明示的に使用されるすべての名前空間宣言([Exc-C14N]に定義:

“not visibly utilized”

)及びそれが

空の場合に既定の名前空間はルート要素の直列化から除外される。特殊値#default は既定の名前空

間を表す。

b) mediatype

:既定では,直列化される XML インスタンスの mediatype は application/xml とするが,

submission

要素の mediatype 属性を使用して,それと互換性のある型に変更することができる。文書

作成者は,application/xml と互換性のある型を確実に指定することが望ましい。

11.4  multipart/related

としての直列化

この形式は,xsd:base64Binary 又は xsd:hexBinary としてデータを含めることは望ましくない,多量のバ

イナリデータを扱う環境で XForms を使用できるようにすることを目的としている。

この形式では, XML インスタンスデータは,11.3 に規定している規則を使用して,[RFC 2387]

multipart/related

メッセージの一部として直列化される。upload 制御(8.1.6 参照)によって値が設定された

xsd:anyURI

インスタンスノードが指すバイナリの内容は,[RFC 2387] multipart/related メッセージの別の部

分に直列化される。

この形式は,[RFC 2387]の multipart/related MIME データストリームに関する規則に従う。この直列化の

ための要求事項を次に示す。

− multipart/related メッセージヘッダに関する要求事項:

直列化される XML インスタンスの mediatype の type パラメタを含んでいなければならない。

最初の本体部(ルート)の Content-ID を指す start パラメタを含んでいなければならない。

−  最初の本体部(ルート)に関する要求事項:

 submission

mediatype

属性によって指定された型の Content-Type パラメタを含んでいなければならな

い。

内容は 11.3 の規則によって直列化される。

−  後続部分に関する要求事項:

 upload

によって xsd:anyURI のデータ型の値が設定された各ノードに対して次を含む。

認 識 し て い る 場 合 は 添 付 の 型 を 表 す Content-Type ヘ ッ ダ 。 認 識 で き な い 場 合 は

application/octet-stream

 Content-Transfer-Encoding

ヘッダ。

関連するインスタンスデータノード内の URI と値とが一致する Content-ID ヘッダ。

 Content-Transfer-Encoding

ヘッダに従って直列化された,URI に関連付けられるバイナリの内容。

例 multipart/related

Content-Type: multipart/related; boundary=f93dcbA3;

              type=application/xml; start="<980119.X53GGT@example.com>"

Content-Length: xxx

--f93dcbA3

Content-Type: application/xml; charset=UTF-8

Content-ID: <980119.X53GGT@example.com>

<?xml version="1.0"?>

<uploadDocument>

  <title>My Proposal</title>


84

X 4178

:2007

  <author>E. X. Ample</author>

    <summary>A proposal for a new project.</summary>

    <notes image="cid:980119.X17AXM@example.com">(see handwritten region)</notes>

  <keywords>project proposal funding</keywords>

  <readonly>false</readonly>

  <filename>image.png</filename>

  <content>cid:980119.X25MNC@example.com</content>

</uploadDocument>

--f93dcbA3

Content-Type: image/png

Content-Transfer-Encoding: binary

Content-ID: <980119.X25MNC@example.com>

...Binary data here...

--f93dcbA3

Content-Type: image/png

Content-Transfer-Encoding: binary

Content-ID: <980119.X17AXM@example.com>

...Binary data here...

--f93dcbA3--

11.5  multipart/form-data

としての直列化

この形式は,旧来との互換性を提供し,[RFC 2388]サーバとともに XForms クライアントを使用するこ

とを可能にする。このメソッドはバイナリの内容の維持に適している。文脈パス情報,属性値,名前空間

及び名前空間接頭辞は保存されない。結果として,異なる要素が同じ名前で直列化される可能性がある。

注記  既存の HTML 利用者エージェントは特殊文字(二重引用符など)及び非 ASCII 文字を

Content-Disposition: form-data name

及び filename パラメタ内で符号化しない。この直列化メソッ

ドは旧来のアプリケーションのためだけに利用可能とされるので,新しいアプリケーションで

は application/xml 又は multipart/related を使用することが望ましい。

この形式は[RFC 2388]の multipart/form-data MIME データストリームに関する規則に従う。この直列化の

ための要求事項を次に示す。

−  各要素ノードを文書順にたどる。

−  正確に一つの子テキストノードをもつ各要素を,含める対象として選択する。

−  含める対象として選択した要素ノードを,要素の局所名である name パラメタを伴って,[RFC 2387]

に定義されている Content-Disposition: form-data MIME 部分として符号化する。

− upload によって値が設定されたどのようなデータ型の要素ノードも指定された内容として直列化する。

利用できる場合には Content-Disposition の filename パラメタを伴う。

− Content-Type は text/plain でなければならないが,これは xsd:base64Binary,xsd:hexBinary 及びそれらの

派生型以外の場合であり,これらの場合には,ヘッダは,認識している場合は添付の mediatype を,

そうでない場合は application/octet-stream を表す。文字セットが適用可能である場合,Content-Type に

charset

パラメタがあってもよい。


85

X 4178

:2007

例 multipart/form-data

Content-Type: multipart/form-data; boundary=AaB03x

Content-Length: xxx

--AaB03x

Content-Disposition: form-data; name="document"; filename="b.txt"

Content-Type: text/plain; charset=iso-8859-1

This is a file.

It has two lines.

--AaB03x

Content-Disposition: form-data; name="title"

A File

--AaB03x

Content-Disposition: form-data; name="summary"

This is my file

file test

--AaB03x--

11.6  application/x-www-form-urlencoded

としての直列化

この直列化形式は,フォームで資源を指定する URI を生成するのに必要なデータを収集し,HTTP GET

操作でその資源にアクセスすることを可能にするように設計されている。

この形式はその[XHTML 1.0]フォーム内容型 application/x-www-form-urlencoded の拡張であり,非 ASCII

文字及び予約された文字の符号化に関して特定の規則がある。

この形式はバイナリの内容の維持に適していない。したがって,バイナリの内容を含めることができる

フォームには他の直列化メソッドを使用することが推奨される。

直列化の手順は次のとおりとする。

1)

各要素ノードを文書順にたどる。一つの子テキストノードをもつ各要素を,含める対象として選択す

る。属性情報は保存対象ではないことに注意する。

2)

含める対象として選択された要素ノードを EltName=value の形式で符号化する。ここで,=はリテラル

文字,EltName は要素局所名,value はテキストノードの内容をそれぞれ表す。符号化された名前及び

値 の 組 合 せ の 間 の 区 切 り 文 字 と し て , submission 要 素 の separator 属 性 に 指 定 さ れ た {sep} を

EltName1=value1{sep}EltNam2e=value2{sep}EltName3=value3

のとおりに使用する。文脈パス情報,名

前空間及び名前空間接頭辞は保存対象ではないことに注意する。結果として,異なる要素が同じ名前

で直列化される可能性がある。

− EltName 及び value の符号化では,スペース文字を+に置換し,非 ASCII 文字及び予約文字([RFC

2396]

によって定義された後に IETF の後続文書によって修正された)をその文字の UTF-8 表現の複

数オクテットに置換することでエスケープし,さらにこれらの各オクテットを%HH に置換する。

ここで,HH は各オクテットの大文字での 16 進数表記で,%はリテラル文字とする。改行は“CR LF”

の組(つまり%0D%0A)で表す。

3)

この符号化をすべて,文書順を維持して連結する。


86

X 4178

:2007

例 application/x-www-form-urlencoded

GivenName=Ren%C3%A9

この形式は単純な名前及び値の組から成る。

<PersonName title="Mr">

  <GivenName>René</GivenName>

</PersonName>

これは前記の例のインスタンスデータとする。一部のデータしか保存されないことに注意する。

文書作成者は,より高いデータ保全性を必要とする場合,異なる直列化フォーマットを選択するこ

とが望ましい。

11.7  post

multipart-postform-data-post

及び urlencoded-post 送付メソッド

これらの送付メソッドは,HTTP POST 又はそれと等価なもの(例えばメールメッセージ)を表す。直列

化されたフォームデータはメッセージ本体として配信される。

11.8  put

送付メソッド

この送付メソッドは,HTTP PUT 又はそれと等価なもの(例えばローカルファイルへの書込み)を表す。

直列化されたフォームデータはメッセージ本体として配信される。

11.9  get

送付メソッド

この送付メソッドは,HTTP GET 又はそれと等価なものを表す。直列化されたフォームデータは,送付

処理中に要求される URI の一部として配信される。

このメソッドは,サーバ上での状態の変更又は他のアクションの起動が意図されたフォームの送付には

適していない。HTTP GET の推奨される用途については[RFC 2616]を参照する。

URI

の生成は次のとおりになる。

− action 属性に指定された送付 URI を検査する。URI に?(疑問符)文字が含まれていない場合は付加す

る。既に疑問符文字が含まれている場合は,separator 属性に指定された区切り文字を付加する。

−  直列化されたフォームデータを URI に付加する。

要求とともにメッセージ本体が送信されることはない。

12

適合性

12.1

適合性レベル

XForms

規定は,実装の対象として,超小形ハンドヘルドデバイスから高性能サーバまで,あらゆる規

模のハードウェアプラットフォームを想定している。そのため,少ない資源で処理できる XForms の適合

性プロファイルを記述する文書が別に作成されている。

12.1.1

完全 XForms

この適合性レベルは,標準デスクトップブラウザ上又は,サーバ側構成要素を伴う分散 XForms プロセ

サに見られるような,より強力なフォーム処理に適している。

完全 XForms は,(7.9.1 で定義されている)

property

メソッドが“conformance-level”パラメタ文字列とともに呼び出されたときに“full”を返すよう

に実装しなければならない。


87

X 4178

:2007

12.2

適合性定義

12.2.1  XForms

適合プロセサ

すべての XForms プロセサは,下に補足されている条件を除いて,次の規定に適合しなければならない。

−  [XML 1.0]

−  [XML Names]

−  [XML Events]

−  [XPath 1.0]  すべての機能を実装する。

−  [XML Schema part 2]

すべての XForms プロセサは,主要モジュール,MustUnderstand モジュール,フォーム制御モジュール,

グループモジュール,スイッチモジュール,繰返しモジュール及びアクションモジュールを完全に利用で

きるようにしなければならない。

すべての XForms プロセサは,XForms 処理モデル及び箇条 にリストされているすべてのイベント,

xsd:anyURI

を処理するための http スキーム,並びに箇条 11 に定義されているすべての直列化メソッドも

利用できるようにしなければならない。

呼出し側の言語は,その他の適合性に関する要求事項を導入してもよい。

完全 XForms プロセサは,この規定で定義された必す(須)機能をすべて実装しなければならない。

12.2.2  XForms

適合文書

すべての XForms を含んでいる文書は,下に補足された条件を除いて,次の規定に適合しなければなら

ない。

−  [XML 1.0]

−  [XML Names]

−  [XML Events]

−  [XML Schema part 2]

XForms

要素は一般的に,それを含んでいる文書内の複数の場所に挿入される。挿入された各素片のル

ート要素は model,フォーム制御,group,repeat 又は switch のどれかでなければならない。挿入されたそ

れぞれの XForms 素片は,XForms の W3C XML Schema(

附属書 参照)に照らして妥当でなければなら

ない。

呼出し側の言語は,その他の適合性に関する要求事項を導入してもよい。

完全 XForms 適合文書はすべて,この規定の必す(須)部分のすべてに適合しなければならない。

12.2.3  XForms

適合生成器

XForms

生成器は XForms 適合文書を生成しなければならない。

13

定義

結合  (Binding)

“結合”は,位置指定子として結合式を使用することによってインスタンスデータノードをフ

ォーム制御又はモデル項目制約に関連付ける。

結合式  (Binding expression)

結合に使用される[XPath 1.0]式。


88

X 4178

:2007

モデル結合式  (Model Binding expression)

モデル項目特性を宣言する結合に使用される[XPath 1.0]式。

UI

結合式又はアクション結合式  (UI or Action Binding expression)

フォーム制御をインスタンスに結合するために用いられる[XPath 1.0]式,又はアクションの操

作対象となるノード若しくはノード集合を指定するために用いられる[XPath 1.0]式。

計算される式  (Computed expression)

relevant

,calculate などのモデル項目特性によって使用される[XPath 1.0]式。XForms に動的な性

格を与える。

含む側の文書  (Containing document)

一つ以上の<model>要素を含む,XHTML 文書などの特定の文書。

データ型  (Datatype)

W3C XML Schema [XML Schema part 2]

が規定するとおり,次の三つ組とする。

a)

値空間と呼ばれる区別できる値の集合。

b)

字句空間と呼ばれる字句表現の集合。

c)

値空間,個々の値又は字句項目の特性を示すファセットの集合。

ファセット  (Facet)

W3C XML Schema [XML Schema part 2]

が規定するとおり,値空間の側面の一つの定義。各フ

ァセットは,独立した評価軸又は評価次元に沿って値空間を特徴付けるものと考えることができ

る。

最初のノード規則  (First node rule)

UI

単一ノード結合属性の UI でサイズが 1 よりも大きいノード集合が選択された場合に,ノー

ド集合における最初のノードが使用される。

フォーム制御  (Form control)

利用者との対話地点として機能する XForms 利用者インタフェース制御。

呼出し側の言語  (Host language)

XForms

の組込み先となる XHTML などの XML 語い(彙)

インスタンスデータ  (Instance data)

あるフォームに関連付けられるすべてのインスタンスデータノードの値及び状態の内部的な木

表現。

インスタンスデータノード  (Instance data node)

インスタンスデータの[XPath 1.0]ノード。

字句空間  (Lexical space)

W3C XML Schema [XML Schema part 2]

が規定するとおり,データ型に対して妥当なリテラル

の集合。

モデル項目  (Model item)

インスタンスデータノード及びそれに関連付けられている制約。

モデル項目特性  (Model item property)

インスタンスデータノードへの XForms 固有の注釈。

W3C XML Schema

制約  (Schema constraint)

W3C XML Schema

データ型に基づく,フォームデータに適用される制限。


89

X 4178

:2007

値空間  (Value space)

W3C XML Schema [XML Schema part 2]

が規定するとおり,あるデータ型に対する値の集合。

あるデータ型の値空間の各値は,その字句空間内の一つ以上のリテラルによって表される。

XForms

モデル  (XForms Model)

XForms

によって指定される,XML フォームの不可視である定義。XForms モデルは,XForms

の個々のモデル項目及び制約,並びにその他の実行時の側面を定義する。

XForms

プロセサ  (XForms Processor)

XForms

規定を実装し,

XForms

規定に準拠するソフトウェアアプリケーション又はプログラム。

可視化

注記  便宜上“可視化”としているが,視覚的な提示だけでなく,音声などでの提示も含む。


90

X 4178

:2007

附属書 A

規定)

XForms

のための W3C XML Schema

序文

この附属書は,XForms のための W3C XML Schema について規定する。

XForms

のための W3C XML Schema で定義された標準のスキーマは,

http://www.w3.org/MarkUp/Forms/2002/XForms-Schema.xsd

にある。

A.1

XML

イベントのための W3C XML Schema

XML

イベントのための W3C XML Schema で定義されたスキーマは,

XForms

のための W3C XML Schema

で定義されたスキーマによって参照され,

http://www.w3.org/TR/2003/REC-xml-events-20031014/#a_schema_attribs

にある。


91

X 4178

:2007

附属書 B

規定) 
文献

序文

この附属書の B.1 は,引用規格について規定する。また,B.2 は,参考文献について記載するものであ

って,規定の一部ではない。

B.1

引用規格(規定)

Exc-C14N

Exclusive XML Canonicalization Version 1.0, J. Boyer, D. Eastlake 3rd, J. Reagle, 2002.

(W3C 勧告,http://www.w3.org/TR/2002/REC-xml-exc-c14n-20020718/を参照)

RFC 2387

RFC 2387:The MIME Multipart/Related Content-type, E. Levinson, 1998.

(http://www.ietf.org/rfc/rfc2387.txt を参照)

RFC 2388

RFC 2388:Returning Values from Forms: multipart/form-data, L. Masinter, 1998.

(http://www.ietf.org/rfc/rfc2388.txt を参照)

RFC 2396

RFC 2396:Uniform Resource Identifiers (URI): Generic Syntax , T. Berners-Lee, R. Fielding, L. Masinter, 1998.

(http://www.ietf.org/rfc/rfc2396.txt を参照)

注記 1  RFC 3986 (URI)及び RFC 3987 (IRI)である。

注記 2  TS X 0097:2004  統一資源識別子(URI)共通構文が,この規格に一致している。

RFC 2616

RFC 2616:Hypertext Transfer Protocol -- HTTP/1.1, R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P.

Leach, T. Berners-Lee,1999.

(http://www.ietf.org/rfc/rfc2616.txt を参照)

注記  TS X 0085:2004  ハイパテキスト転送プロトコル HTTP/1.1 が,この規格に一致している。

RFC 3023

RFC 3023:XML Media Types,

村田真, S. St. Laurent, D. Kohn, 2001.

(http://www.ietf.org/rfc/rfc3023.txt を参照)

XHTML Modularization

Modularization of XHTML, M. Altheim, et al., 2001.

(W3C 勧告,http://www.w3.org/TR/xhtml-modularization/を参照)

XML Base

XML Base, Jonathan Marsh, 2001.

(W3C 勧告,http://www.w3.org/TR/xmlbase/を参照)

XML Events

XML Events - An events syntax for XML, Steven Pemberton, T. V. Raman, Shane P. McCarron, 2003.

(W3C 勧告,http://www.w3.org/TR/xml-events/を参照)


92

X 4178

:2007

XML 1.0

Extensible Markup Language (XML) 1.0 (Second Edition), Tim Bray, Jean Paoli, C. M. Sperberg-McQueen, Eve

Maler, 2000.

(W3C 勧告,http://www.w3.org/TR/2000/REC-xml-20001006 を参照)

XML Names

JIS X 4158:2005

  XML 名前空間

注記  Namespaces in XML, Tim Bray, Dave Hollander, Andrew Layman, 1999.

(W3C 勧告,http://www.w3.org/TR/REC-xml-names を参照)が,この規格に一致している。

XPath 1.0

JIS X 4160:2007

  XML パス言語(XPath) 1.0

注記  XML Path Language (XPath) Version 1.0, James Clark, Steve DeRose, 1999. ( W3C 勧 告 ,

http://www.w3.org/TR/xpath

を参照)が,この規格に一致している。

XML Schema part 1

XML Schema Part 1: Structures, Henry S. Thompson, David Beech, Murray Maloney, Noah Mendelsohn, 2001.

(W3C 勧告,http://www.w3.org/TR/xmlschema-1/を参照)

XML Schema part 2

XML Schema Part 2: Datatypes , Paul V. Biron, Ashok Malhotra, 2001.

(W3C 勧告,http://www.w3.org/TR/xmlschema-2/を参照)

XSLT 1.0

JIS X 4169:2007

  XSL 変換 (XSLT) 1.0

注記  XSL Transformations (XSLT) Version 1.0, James Clark, 1999.(W3C 勧告,http://www.w3.org/TR/xslt

を参照)が,この規格に一致している。

B.2

参考文献(参考)

Algorithms

The Art of Computer Programming: Volume 1 Fundamental Algorithms, D. E. Knuth, Addison-Wesley, Reading,

MA. 1968. Third edition, 1997. ISBN:0-2018-9683-4.

AUI97

Auditory User Interfaces--Toward The Speaking Computer, T. V. Raman, Kluwer Academic Publishers,

1997. ISBN:0-7923-9984-6.

CSS2

Cascading Style Sheets, level 2 (CSS2) Specification, Bert Bos, Håkon Wium Lie, Chris Lilley, Ian Jacobs, 1998.

(W3C 勧告,http://www.w3.org/TR/REC-CSS2 を参照)

DDJ-ArrayDoubling

Resizable Arrays, Heaps and Hash Tables, John Boyer, Doctor Dobb's Journal, CMP Media LLC,

January 1998 Issue.

DOM2 Core

Document Object Model (DOM) Level 2 Core Specification, Tom Pixley, 2000.

(W3C 勧告,http://www.w3.org/TR/DOM-Level-2-core/を参照)

DOM2 Events

Document Object Model (DOM) Level 2 Events Specification, Tom Pixley, 2000.


93

X 4178

:2007

(W3C 勧告,http://www.w3.org/TR/DOM-Level-2-Events/を参照)

EXSLT

EXSLT Web site.

(http://www.exslt.org を参照)

Java Unicode Blocks

Java 2 Platform, Standard Edition, v 1.4.0 API Specification; Class Character.UnicodeBlock,

Sun Microsystems, Inc, 2002.

(http://java.sun.com/j2se/1.4/docs/api/java/lang/Character.UnicodeBlock.html を参照)

P3P 1.0

The Platform for Privacy Preferences 1.0 (P3P1.0) Specification, Lorrie Cranor, Marc Langheinrich,

Massimo Marchiori, Martin Presler-Marshall, Joseph Reagle, 2001.

(W3C の最終作業案,http://www.w3.org/TR/P3P/を参照)

SVG 1.1

SVG 1.1, Jon Ferraiolo,

藤沢淳, Dean Jackson, 2003.(W3C 勧告,http://www.w3.org/TR/SVG11/を参照)

TAG Finding 7

TAG Finding: URIs, Addressability, and the use of HTTP GET, Dan Connolly, 2002.

(http://www.w3.org/2001/tag/doc/get7 を参照)

UAAG 1.0

User Agent Accessibility Guidelines 1.0, Ian Jacobs, Jon Gunderson, Eric Hansen, 2002.

(作業案,http://www.w3.org/TR/UAAG10/を参照)

Unicode Scripts

Script Names, Mark Davis, 2001.

(Unicode Technical Report #24,http://www.unicode.org/unicode/reports/tr24/を参照)

XForms Basic

XForms Basic Profile, Micah Dubinko, T. V. Raman, 2003.

(W3C 勧告候補,http://www.w3.org/TR/xforms-basic/を参照)

XHTML 1.0

XHTML 1.0: The Extensible HyperText Markup Language - A Reformulation of HTML 4 in XML 1.0,

Steven Pemberton, et al., 2000.

(W3C 勧告,http://www.w3.org/TR/xhtml1 を参照)

XLink 1.0

JIS X 4176:2005

  XML リンク付け言語(XLink) 1.0

注記  XML Linking Language (XLink) Version 1.0, Steve DeRose, Eve Maler, David Orchard, 2001.(W3C 勧

告,http://www.w3.org/TR/xlink を参照)が,この規格に一致している。

XML Schema part 0

XML Schema Part 0: Primer, David C. Fallside, 2001.

(W3C 勧告,http://www.w3.org/TR/xmlschema-0/を参照)


94

X 4178

:2007

附属書 C 

規定)

プライバシの問題

序文

この附属書は,プライバシの問題について規定する。

C.1

XForms

での P3P の使用

P3P

プライバシ方針は,URI が関連付けられている,HTTP を使用して伝送されるすべてのフォームに

関連付けることができる。将来,他のプロトコルを使用して伝送される内容と P3P 方針とを関連付けるた

めの機構が指定される可能性がある。

P3P

では,方針を個々の URI 又は URI の組に関連付けることができる。各 URI に別の方針を関連付け

ることによって,サイトは,ある HTTP 要求によってどのようなデータが収集されるか,そのデータがど

のように使用されるかについての非常に詳細な方針を宣言できる。しかし,多くの URI 又はウェブ全体を

対象とする単一の方針を宣言することで,多くのサイトでサイト管理が大幅に簡易化される。

P3P

規定では,P3P 方針参照ファイルを参照する方法が幾つか指定されている(それは,さらに,P3P

方針を URI 及びクッキーに関連付ける。

。XForms では,それらが埋め込まれているウェブサイトに適切

な任意の方法を使用して,P3P を有効にできる。フォームに関する幾つかの特別な問題は P3P 規定で扱わ

れている。[P3P 1.0]

さまざまな P3P 方針を,フォーム経由で送付されるデータに関連付けられる,XForms を含んでいる文

書に埋め込まれたフォームの表示に適用してもよい。フォーム表示がフォームの送付先のサーバとは異な

るサーバから提供される場合,別の P3P 方針参照ファイル及び方針が必要となる。フォームの送付では多

くのデータが伝送されるが,フォームの表示では通常,

クリックストリーム

データ([P3P 1.0] 5.6.4 Dynamic

Data

で定義される。

)だけが伝送される。


95

X 4178

:2007

附属書 D 

規定)

再計算順序アルゴリズム

序文

この附属書は,再計算順序アルゴリズムについて規定する。

XForms

プロセサは,最終結果が同じになりさえすれば,このアルゴリズムのどのステップについても

自由に省略又は最適化してよい(奨励される。

)。XForms 再計算順序アルゴリズムでは,モデル項目及び

モデル項目特性を有向グラフの頂点と考える。頂点を結ぶ辺は,各頂点の計算に必要な依存関係を表す。

recalculate

アクションに対する既定の処理を次に示す。

recalculate

アクションは 10.1.4 で定義されている。

1)

依存関係の有向マスタグラフを作成する。詳細は D.1 に示す。

2)

一貫した振る舞いを提供するために,実装では,再計算を必要とするノードから到達可能な頂点及び

辺だけからなる依存関係の関連サブグラフを計算するようにすることで,処理する頂点の数を減らさ

なければならない。これについての詳細は,D.2 に示す。最初の再計算(フォームのロードなど)で

は,依存関係の関連サブグラフは依存関係の有向マスタグラフと同じになることに注意する。

3)

一列化(topological sort)を依存関係の関連サブグラフの各頂点に対して実行し,各頂点を評価の順序に

並び替える。つまり,各頂点の評価を,その頂点が計算に必要とする頂点の評価後,かつ,その頂点

を計算に必要とするすべての頂点の評価前にだけ行うようにする。一列化のアルゴリズムについては,

[Algorithms]

を参照する。

4) recalculate

処理を完了する。

D.1

依存関係の有向マスタグラフの作成に関する詳細

依存関係の有向マスタグラフは各頂点に対し一つのレコードをもつ配列と考えられる。各レコードには

次のフィールドがある。

InstanceNode

:関連するインスタンスデータノードへの参照

type

:頂点によって表されるインスタンスノードの側面(テキスト内容,又は readOnly 若しくは

required

などのモデル項目特性)

depList

:この頂点を参照する頂点のリスト

in-degree

:この頂点が計算に必要とする頂点の数

visited

:頂点がサブグラフ内に複数表れることがないようにするためのフラグ

index

:依存関係の有向マスタグラフ内の頂点とサブグラフとの関連

各頂点の depList は,あるインスタンスノードの参照先 XML ノードになるように割り当てられるが,こ

れは,そのノード内の計算される式を解析することによって得られる(calculate,relevant,readonly,required

特性など)

。結合式制約に違反する式はすべて,例外(4.5.4 参照)を発生させ,recalculate プロセスを終了

させる結果となる。

頂点 v の depList は,v を参照する計算される式をもつ頂点のリスト(v は除く)になるように割り当て

られる。頂点 v は,循環参照例外を発生させることなく自己参照が行われるのを容認するように,それ自

身の depList から除かれる。


96

X 4178

:2007

calculate

属性内に現れる計算される式は,一つ以上のインスタンスノードに関するテキスト内容(値)

を制御する。頂点は,各インスタンスノードに対して一つ存在し,そのノードの文脈における式を表す。

同様に,readOnly,required などのモデル項目特性のための計算式が一つ以上のインスタンスノードに適用

される。そして,そのような適用される各ノードの文脈における式を表すために頂点が作成される。参照

する XML ノードを決定するために,それぞれの頂点の計算式を検査しなければならない。結合式制約に

違反する式はすべて,例外(4.5.4 参照)を発生させ,recalculate プロセスを終了させる結果となる。部分

式が v のインスタンスノードを示し,v がインスタンスノードのテキスト内容(値)を表す場合,計算式

は頂点 v を参照している。XForms のこの版では,readOnly 及び required などのモデル項目特性は式から参

照することはできない。

D.2

依存関係の関連サブグラフの作成に関する詳細

フォームをロードするときなど,計算をすべて実行しなければならない場合は,依存関係の関連サブグ

ラフは単に依存関係の有向マスタグラフの複製でしかない。最後の再計算処理以後に変更されたインスタ

ンスデータノードのリストとともに再計算アルゴリズムが呼び出された場合,依存関係の関連サブグラフ

は,計算に必要な依存関係を表す有向グラフ内で,その変更リスト内の各頂点から到達可能な頂点及び辺

の経路を探索することで得られる。パス探索の方法は深さ優先探索(depth first search)であってよい。適切

な擬似コードを次に示す。

例  依存関係の関連サブグラフを作成するためのサンプルアルゴリズム

このアルゴリズムは変更されたインスタンスデータノードのリスト Lc から依存関係の関連サブ

グラフ S を作成する。v,w などの変数は依存関係の有向マスタグラフ内の頂点を表す。それらの名

前に S を付加した変数は依存関係の関連サブグラフ S 内の頂点を表す。

// Use depth-first search to explore master digraph subtrees rooted

// at each changed vertex. A 'visited' flag is used to stop exploration

// at the boundaries of previously explored subtrees (because subtrees

// can overlap in directed graphs).

for each vertex r in Lc

    if r is not visited

    {

    Push the pair (NIL, r) onto a stack

    while the stack is not empty

        {

            (vw) = pop dependency pair from stack

            if w is not visited

            {

                Set the visited flag of w to true

        Create a vertex wS in S to represent w

                Set the index of w equal to the array location of wS

                Set the index of wS equal to the array location of w


97

X 4178

:2007

                Set the InstanceNode of wS equal to the InstanceNode of w

                Set the type of wS equal to the type of w

        For each dependency node x of w

                    Push the pair (wx) onto the stack

            }

            else Obtain wS from index of w

            if v is not NIL

            {

                Obtain vS from index of v

        Add dependency node for wS to vS

                Increment inDegree of wS

            }

        }

    }

// Now clear the visited flags set in the loop above

for each vertex vS in S

{

  Obtain v from index of vS

    Assign false to the visited flag of v

}

依 存 関 係 の 関 連 サ ブ グ ラ フ 内 の 頂 点 及 び 依 存 関 係 ノ ー ド の 数 は 事 前 に は 判 明 し て い な い が ,

ArrayDoubling

([DDJ-ArrayDoubling]参照)などの方法を使用することで,サブグラフの構築時間を S の大

きさに比例させるようにすることができる。

D.3

個々の頂点の計算に関する詳細

頂点の処理ステップを次に示す。この処理の結果,フォームは再計算される。

1) inDegree

属性が 0 である頂点を評価のために選択し,依存関係の関連サブグラフから削除する。

inDegree

属性が 0 である頂点が複数存在する場合の順序については定義されない。依存関係の関連サ

ブグラフに頂点が含まれているが,そのどれも inDegree 属性が 0 でない場合は,フォームの計算構造

に循環があるため,例外(xforms-compute-exception イベント,4.5.4 参照)を発行して処理を終了しな

ければならない。

2)

頂点が計算される項目に対応している場合,計算される式を次のとおりに評価する。

a) calculate

:このモデル項目特性の値が変わった場合,対応するインスタンスデータを更新し,ダー

ティフラグを設定する。

b) relevant

,readOnly,required,constraint:これらの計算される特性のいずれか又はすべてが変わった

場合,新しい設定を関連するフォーム制御に直ちに反映させる。

3)

削除された頂点の depList 内の頂点のそれぞれで,inDegree 属性の値を一つ減少させる。

4)

依存関係の関連サブグラフに頂点が残っている場合はステップ 1 から繰り返す。頂点が残っていない


98

X 4178

:2007

場合は正常に終了したことになる。

D.4

計算処理の例

例として,a,b,v,w,x 及び y の六つの変数を考える。ここで,a 及び b は利用者入力制御からの結

合によって設定されるインスタンスノードのテキスト内容を表すものとする。v 及び w は,第 3 のインス

タンスノード c の計算値及び妥当性評価特性を表す頂点とする。これらの頂点は,calculate 属性及び

constraint

属性をもつ bind 要素 B,並びに c を示す nodeset 属性から得られる。c の値を a 及び b の乗算の

結果とし,100 を超えていない場合にだけ値を妥当とする。同様に,x 及び y を,第 4 のインスタンスノー

ド d の計算値及び妥当性評価特性を表す頂点とする。d の値を a 及び b の合計とし,値が 20 を超えていな

い場合にだけ d を妥当とする。この例の依存有向グラフを

図 D.1 に示す。

図 D.1変数をもつ依存有向グラフ

頂点 a 及び b には v 及び x につながる辺があるが,これは,これらの頂点が表現する c 及び d の計算式

が,乗算値及び合計値をそれぞれ求めるために a 及び b を参照するためとする。同様に,v 及び x にはそ

れぞれ w 及び y につながる辺があるが,これは,w 及び y が c 及び d の constraint 式を表し,境界値と比

較するために c 及び d の値を参照するためとする。

a

及び b の初期値が 10 であり,利用者が a を 11 に変更した場合,最初に v(c の値)の再計算を行い,

次に,w(c の値の妥当性検査特性)を再計算する必要がある。同様に,y(d の値の妥当性検査特性)の

再計算を行う前に,x(d の値)を再計算しなければならない。いずれの場合も,新しい乗算値及び合計が

a

の変更に基づいて計算されるまで,値の妥当性は false に変化しない。しかし,v と x との間には相互依

存性が存在しないため,乗算値及び合計はいずれを先に計算しても問題はない。

関連サブグラフには b は含まれず,inDegree 属性が 0 の頂点は a だけになる。頂点 a が最初に処理され

る。この頂点は計算される頂点ではないため,a に対する再計算は行われないが,これが除外されること

で v 及び x の inDegree 属性が 0 になる。頂点 v が 2 番目に処理される。その値は 110 に変更され,この除

外によって頂点 w の inDegree 属性が 0 になる。頂点 x が次に処理され,値は 21 に変更される。x が除外

されると,隣の y の inDegree 属性が 0 になる。このプロセスの 4 番目及び 5 番目の繰返しによって,w 及

び y の妥当性が再計算され,結果は両方とも false になる。


99

X 4178

:2007

附属書 E

規定)

入力モード

序文

この附属書は,入力モードについて規定する。

inputmode

属性は,関連するフォーム制御で期待されるテキスト入力に適切な入力モードを選択するた

めの

ヒント

を利用者エージェントに提供する。入力モードは,キーボード構成,入力メソッドエディタ(フ

ロントエンドプロセサとも呼ばれる。

,又は使用する装置での入力に影響する他のどのような設定であっ

てよい。

inputmode

を使用することによって,文書作成者は利用者のフォーム入力を簡単にするヒントをエージ

ェントに与えることができる。文書作成者は,可能な場合は常に inputmode 属性を提供し,使用される値

が広範囲な装置に対応することを確実にすることが望ましい。

E.1

inputmode

属性の値の構文

inputmode

属性の値は,空白によって区切られたトークンのリストとする。トークンは,アルファベッ

トの並び又は絶対 URI のいずれかとする。前者及び後者は,絶対 URI には“:”が含まれることに留意す

ることで区別できる。トークンは大文字及び小文字を区別する。アルファベットだけから成るトークンは

すべて,E.3(又はこの規定の後継)で定義される。

この規定はトークンとして使用されるものとしてどのような URI も定義しないが,他が拡張性のために

そのような URI を定義するのは差し支えない。このことは,ここで提供されるトークンでは対応できない

入力モードのデバイスで必要になる可能性がある。URI は,その URI をトークンとして使用したときに関

連付けられる入力モードについての人間が読み取れる説明への参照であることが望ましい。

その説明文は,

このトークンによって示される入力モードを説明するものであることが望ましく,このトークンが他のト

ークンを修飾するかどうか,このトークンが他のトークンによって修飾されるかどうか,又はその修飾が

どのように行われるかを示すことが望ましい。

E.2

利用者エージェントの振る舞い

利用者エージェントは,inputmode 属性をもつ空のフォーム制御への入力時に,inputmode 属性の値によ

って示された入力モードを選択することが望ましい。利用者エージェントがテキストを既に含むフォーム

制御への入力時に inputmode 属性を使用して入力モードを設定するのは望ましくない。テキストを既に含

むフォーム制御への入力時における適切な入力モードの設定については,利用者エージェントはプラット

フォーム固有の規約に従うことが望ましい。

利用者エージェントは,利用者によって通常的に使用されるためにインストールされている,利用者エ

ージェントを稼動させる(オペレーティング)システム,又は利用者エージェントがアクセスできるデバ

イスによって利用できるすべての入力モードを利用可能にすることが望ましい。これは通常,ここで定義

されているトークンで説明できる入力モードのほんの一部分にすぎない。

注記  利用者エージェント実装のためのその他のガイドラインについては,[UAAG1.0]を参照する。


100

X 4178

:2007

利用者エージェントがどのように,それらが提供できる入力モードと inputmode 属性の値とを照合する

のかを定義するために,次に示す単純なアルゴリズムが使用される。利用者エージェントはこのアルゴリ

ズムをそのまま実装する必要はないが,このアルゴリズムを使用したのと同様に振る舞う必要がある。ア

ルゴリズムはトークンの可能なすべての組合せに対して“明白な”又は“望ましい”結果を生成するよう

には設計されていないが,頻繁に使用されるトークンの組合せに対して適切な振る舞いを生成し,すべて

の場合に対して予測可能な振る舞いを生成する。

最初に,利用可能な各入力モードをトークンの一つ以上のリストによって表す。入力モードはトークン

の複数のリストに対応してもよい。

例えば,

ギリシア人の利用者向けにセットアップされたシステムでは,

“greek upperCase”及び“user upperCase”の両方が同じ入力モードに対応する。二つのリストが同一であ

ることはない。

2

番目に,inputmode 属性を先頭から最後まで走査する。inputmode 属性の各トークン t に対して,利用

可能な入力モードを表すトークンのリストの残りに t を含むトークンのリストが一つでも存在する場合,t

を含まない利用可能な入力モードを表すトークンのリストをすべて削除する。t を含むトークンのリスト

が残っていない場合,t を無視する。

3

番目に,トークンのリストが一つ以上残っていて,それらがすべて同一の入力モードに対応している

場合,その入力モードを選択する。リストが残っていない(最初から一つも存在していなかったことを意

味する。

)又は残りのリストが複数の入力モードに対応している場合,どの入力モードも選択しない。

利用可能な入力モードを表すトークンのリストのリストが {"cyrillic upperCase", "cyrillic lowerCase",

"cyrillic", "latin", "user upperCase", "user lowerCase"}

である場合,各 inputmode の値によって選択され

る入力モードの値は次に示すとおりになる。つまり,

“cyrillic title”によって“cyrillic”が選択され,

“cyrillic lowerCase”によって“cyrillic lowerCase”が選択され,

“lowerCase cyrillic”によって“cyrillic

lowerCase

”が選択され,

“latin upperCase”によって“latin”が選択される。しかし,

“upperCase latin”

によっては,

“cyrillic upperCase”及び“user upperCase”が同一の入力モードに対応している場合は

“cyrillic upperCase”又は“user upperCase”が選択され,

“cyrillic upperCase”及び“user upperCase”

が同一の入力モードに対応していない場合は何も選択されない。

E.3

トークンのリスト

この規定で定義されているトークンは,

用字トークン

及び

修飾子トークン

の二つの範ちゅうに分けられ

る。inputmode 属性内では,用字トークンは常に修飾子の前に示されることが望ましい。

E.3.1

用字トークン

用字トークンは,入力モードの対応対象である文字セットの一般的な表記とする。多くの場合,用字ト

ークンは[Unicode Scripts]に直接対応する。

幾つかのトークンは,

Java

クラス java.lang.Character.UnicodeBlock

([Java Unicode Blocks])

のブロック名又は Unicode ブロック名に対応する。しかし,このことは,入力モー

ドが用字内又はブロック内のすべての文字について入力を許可しなければならないことを意味せず,入力

モードがその特定の用字からの文字だけに制限されることも意味しない。例えば,

“latin”キーボードは,

ラテン語用字のすべての文字に対応しているわけではなく,ラテン語用字に割り当てられていない句読点

を含んでいる。これらの用字名が採られた Unicode 規定の版数は 3.2 とする。


101

X 4178

:2007

表 E.1−用字トークン

入力モードのトークン

コメント

arabic Unicode

用字名

armenian Unicode

用字名

bengali Unicode

用字名

bopomofo Unicode

用字名

braille

ブライユ点字パターン入力に使われる(ブライユ点字入力デバイスを指すものではない。

buhid Unicode

用字名

canadianAboriginal Unicode

用字名

cherokee Unicode

用字名

cyrillic Unicode

用字名

deseret Unicode

用字名

devanagari Unicode

用字名

ethiopic Unicode

用字名

georgian Unicode

用字名

greek Unicode

用字名

gothic Unicode

用字名

gujarati Unicode

用字名

gurmukhi Unicode

用字名

han Unicode

用字名

hangul Unicode

用字名

hanja

朝鮮語で使われる“han”のサブセット

hanunoo Unicode

用字名

hebrew Unicode

用字名

hiragana Unicode

用字名(平仮名からの変換によって生成される他の日本語用字を含んでもよい。

ipa

国際音標文字

kanji

日本語で使われる“han”のサブセット

kannada Unicode

用字名

katakana Unicode

用字名(半角ではなく全角)

khmer Unicode

用字名

lao Unicode

用字名

latin Unicode

用字名

malayalam Unicode

用字名

math

数学記号及び関連する文字

mongolian Unicode

用字名

myanmar Unicode

用字名

ogham Unicode

用字名

oldItalic Unicode

用字名

oriya Unicode

用字名

runic Unicode

用字名

simplifiedHanzi

中国語の簡体字で使われる“han”のサブセット

sinhala Unicode

用字名

syriac Unicode

用字名

tagalog Unicode

用字名

tagbanwa Unicode

用字名

tamil Unicode

用字名

telugu Unicode

用字名

thaana Unicode

用字名


102

X 4178

:2007

表 E.1−用字トークン(続き)

入力モードのトークン

コメント

thai Unicode

用字名

tibetan Unicode

用字名

traditionalHanzi

中国語の繁体字で使われる“han”のサブセット

user

利用者の母国語での(名前又はテキストなどの)入力を意味する特別な値。

yi Unicode

用字名

E.3.2

修飾子トークン

フォーム制御への入力が期待される文字の種類をより詳細に指定する目的で,修飾子トークンを適用対

象の用字に追加することができる。従来のパソコンキーボードは,ほとんどの修飾子トークンを必要とし

ない(実際,upperCase のための Caps Lock は例外として,ソフトウェアが勝手に大文字と小文字を変更し

たら,そのようなデバイス上の利用者は非常に混乱する。

。しかし,修飾子トークンは小形の装置の入力

モード設定に非常に役立つ場合がある。

表 E.2−修飾子トークン

入力モードのトークン

コメント

lowerCase

小文字(大文字及び小文字の存在する用字用)

upperCase

大文字(大文字及び小文字の存在する用字用)

titleCase

タイトル(大文字及び小文字の存在する用字用)

:大文字で始まる単語

startUpper

一つの大文字で始まり小文字が続く入力

digits

ある用字の数字(例えば inputmode='thai digits')

symbols

記号,句読点(特定の用字に対して適切)

predictOn

テキスト予測が有効(本文入力など)

predictOff

テキスト予測が無効(パスワード入力など)

halfWidth

半角対応フォーム(片仮名など。廃止予定)

E.4

W3C XML Schema

パターンファセットとの関係

利用者エージェントは,入力モードを設定するのに W3C XML Schema パターンファセット内の情報を使

用してもよい。パターンファセットはインスタンスデータノードの字句値に対する厳しい制限であり,デ

ータ項目のさまざまな部分にさまざまな制限を指定できることに注意する。inputmode 属性は,利用者が

フォーム制御に入力を開始する可能性の高い文字の種類に関する緩やかなヒントとする。inputmode 属性

は,次の理由によって,パターンファセットに加えて指定される。

1)

パターン内に指定された使用可能な文字セットが非常に広範で,妥当な入力モードセッティングを推

定できないことがある。そのような状況でも,ある種類の文字が利用者によって頻繁に入力される可

能性が高い場合,inputmode を使用することによって,利用者の便宜のために入力モードを設定する

ことができる。

2)

パターンで許可された文字セットと inputmode 属性の値による文字セットとが密接に対応しているた

めに,入力モード設定をパターンから派生させることが可能な場合がある。しかし,そのような派生

は利用者エージェント上で多くのデータ及び計算を必要とする。

3)

小形の装置では,パターンの検査がサーバに残されることもあるが,利用できるこれらの入力モード

に容易に切り替えることができる。小形の装置では,利用者のためにデータ入力をより簡単にできる


103

X 4178

:2007

ことは特に重要である。

E.5

日本の住所入力のためのフォームの例であり,テーブルフォームの形式で示される。これはこの規定の

後の版で実際の構文に置き換えられる。

表 E.3−日本の住所入力のための inputmode 属性の例

キャプション inputmode

姓 Hiragana

姓(片仮名) Katakana

名 Hiragana

名(片仮名) Katakana

郵便番号 la

digits

住所 Hiragana

住所(片仮名) Katakana

電子メール latin

lowerCase

電話番号 la

digits

コメント user

predictOn


104

X 4178

:2007

附属書 F

参考)

XForms

及びスタイル設定

序文

この附属書は,本体の規定を補足するものであって,規定の一部ではない。

ここでは,XForms の内容のスタイル設定を行うのに必要な新規又は現行の CSS 機能について広く概要

を提供する。これらの機能の仕様は,CSS 作業グループからの将来の勧告で完全に明らかにされる。

F.1

擬似クラス

文書ツリーの外にある情報又は他のセレクタを使用しても表現できない情報に基づいてスタイル設定を

行う場合の要素の選択には CSS 擬似クラスが使用される。

表 F.1CSS 擬似クラス

名前

定義されている場所

XForms

との関係

:enabled

及び :disabled

[CSS3]

(それぞれ)真又は偽に評価される relevant モデル項
目特性をもつノードに結合しているフォーム制御を
選択する。

:required

及び :optional

TBD

(それぞれ)真又は偽に評価される required モデル項
目特性をもつノードに結合しているフォーム制御を
選択する。

:valid

及び :invalid

TBD

XForms1.0

によって定義されるとおりに,

(それぞれ)

現在妥当又は妥当でないノードに結合しているフォ

ーム制御を選択する。

:read-only

及び :read-write

TBD

(それぞれ)真又は偽に評価される readonly モデル項

目特性をもつノードに結合しているフォーム制御を
選択する。

:out-of-range

及び :in-range

TBD

フォーム制御が(それぞれ)可視でない値又は可視の
値を含むノードに結合しているフォーム制御を選択
する。

このリストはすべてを網羅するものではなく,他の擬似クラスが定義されてもよい。

F.2

擬似要素

擬似要素は文書言語によって指定されているものを超えた文書ツリーに関する抽象化である。擬似要素

は DOM に現れない。これらはスタイル設定の目的にだけ使用される。


105

X 4178

:2007

表 F.2CSS 擬似要素

名前

定義されている場所

XForms

との関係

::value

TBD

ラベルを除いたフォーム制御の“活性化されている”

領域を表す。これは HTML の input 又は他のフォーム
制御要素に対応するものとする。この擬似要素はフォ
ーム制御要素の子であり,必す(須)の label 要素の

直後に現れる。

::repeat-item

TBD

繰り返している並びからの一つの項目を表す。その位
置は,一つの繰返し項目内のすべての要素の親として

のものとする。各::repeat-item は特定のインスタンスデ
ータノードに関係付けられていて,関連付けられてい
るスタイル特性が子要素に伝えられると同時に,その

ノードに関するモデル項目特性(例えば“relevant”

の影響を受ける。

::repeat-index

TBD

繰り返している並びの現在の項目を表す。その位置
は,インデクス繰返し項目内のすべての要素の親(そ
して::repeat-item 擬似要素の子)としてのものとする。

したがって,この擬似要素に適用されるスタイル宣言
はすべて親のスタイル宣言を上書きする。

このリストはすべてを網羅するものではなく,他の擬似要素が定義されてもよい。

F.3

次の例は,フォーム制御及び繰返し構造に対する基本的なスタイル設定を示している。

@namespace xforms url(http://www.w3.org/2002/xforms);

/*

妥当でないすべてのフォーム制御に対して背景を赤で表示する */

*:invalid { background-color:red; }

/*

必す(須)とするすべてのフォーム制御の後にアスタリスクを赤で表示する */

*:required::after { content: "*"; color:red; }

/*

現在有効でないフォーム制御は視覚化しない */

*:disabled { visibility: hidden; }

/*

次の宣言によって,フォーム制御とそのラベルを二列の表のとおりに整列させる。 */

xforms|group { display: table; }

xforms|input { display: table-row; }

xforms|input > xforms|label { display: table-cell; }

xforms|input::value { border: thin black solid; display: table-cell; }

/*

該当する場合に,警告メッセージを表示する */

*:valid      > xforms|alert { display: none; }

*:invalid > xforms|alert { display: inline; }

/*

繰返し項目を境界線(破線)とともに表示する */

*::repeat-item { border: dashed; }

/*

現在の繰返し項目を背後を青くすることで強調表示する */

*::repeat-index { background-color: teal; }


106

X 4178

:2007

附属書 G 

参考)

完全な XForms の例

序文

この附属書は,本体の規定を補足するものであって,規定の一部ではない。

こ こ で は 完 全 な

XForms

の 例 を 紹 介 す る 。 こ れ ら 及 び そ の 他 の 例 は

http://www.w3.org/MarkUp/Forms/2002/Examples/

で管理されている。

G.1

XHTML

での XForms

<!--$Id: #xforms-examples,v 1.240 2003/10/03 14:35:42 tvraman Exp $-->

<html xmlns:my="http://commerce.example.com/payment"

       xmlns:ev="http://www.w3.org/2001/xml-events"

       xmlns:xsd="http://www.w3.org/2001/XMLSchema"

       xmlns:xforms="http://www.w3.org/2002/xforms"

       xmlns="http://www.w3.org/2002/06/xhtml2">

  <head>

    <title xml:lang="fr">XForms en XHTML</title>

    <xforms:model schema="payschema.xsd">

            <xforms:instance>

                <my:payment as="credit">

                    <my:cc />

                    <my:exp />

                </my:payment>

            </xforms:instance>

      <xforms:submission action="http://www.example.com/buy.rb"

                                                          method="post" id="s00" />

      <xforms:bind nodeset="my:cc" relevant="../@as='credit'"

                                          required="true()" />

      <xforms:bind nodeset="my:exp" relevant="../@as='credit'"

                                          required="true()" />

    </xforms:model>

  </head>

  <body>

    ...

    <group xmlns="http://www.w3.org/2002/xforms">

            <trigger>


107

X 4178

:2007

        <label>Français</label>

        <toggle case="fr" ev:event="DOMActivate" />

            </trigger>

            <trigger>

                <label>English</label>

        <toggle case="en" ev:event="DOMActivate" />

            </trigger>

        </group>

    <switch xmlns="http://www.w3.org/2002/xforms">

            <case id="fr">

                <select1 ref="@as">

          <label xml:lang="fr">Choisissez un mode de paiement</label>

                    <choices>

                        <item>

                            <label xml:lang="fr">Comptant</label>

                            <value>cash</value>

                            <message level="modeless" ev:event="xforms-select"

                         xml:lang="fr">

               Ne pas envoyer d'argent comptant par la poste.</message>

            </item>

                        <item>

                            <label xml:lang="fr">Carte bancaire</label>

                            <value>credit</value>

            </item>

                    </choices>

                </select1>

                <input ref="my:cc">

          <label xml:lang="fr">Numéro de carte bancaire</label>

          <alert xml:lang="fr">Saississez un numéro de carte

              bancaire en cours(séparez par un espace ou un trait

                            d'union chaque

                            groupe de chiffres)</alert>

                </input>

                <input ref="my:exp">

          <label xml:lang="fr">Date d'échéance</label>

                </input>


108

X 4178

:2007

                <submit submission="s00">

          <label xml:lang="fr">Achetez</label>

                </submit>

            </case>

      <case id="en">

                <select1 ref="@as">

          <label xml:lang="en">Select Payment Method</label>

                    <choices>

                        <item>

                            <label xml:lang="en">Cash</label>

                            <value>cash</value>

                            <message level="modeless" ev:event="xforms-select"

                         xml:lang="en">

                            Please do not mail cash.</message>

            </item>

                        <item>

                            <label xml:lang="en">Credit</label>

                            <value>credit</value>

            </item>

                    </choices>

                </select1>

                <input ref="my:cc">

          <label xml:lang="en">Credit Card Number</label>

          <alert xml:lang="en">Please specify a valid credit card number

            (use spaces or hyphens between digit groups)</alert>

                </input>

                <input ref="my:exp">

          <label xml:lang="en">Expiration Date</label>

                </input>

                <submit submission="s00">

                    <label xml:lang="en">Buy</label>

                </submit>

            </case>

        </switch>

    ...

  </body>

</html>


109

X 4178

:2007

W3C XML Schema

ファイル payschema.xsd:

<!-- payschema.xsd -->

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"

                            xmlns:my="http://commerce.example.com/payment"

              targetNamespace="http://commerce.example.com/payment"

                            elementFormDefault="qualified">

  <xsd:element name="payment">

        <xsd:complexType>

      <xsd:sequence minOccurs="0" maxOccurs="unbounded">

                <xsd:choice>

                    <xsd:element ref="my:cc" />

                    <xsd:element ref="my:exp" />

                </xsd:choice>

            </xsd:sequence>

      <xsd:attribute name="as" type="my:paymentAs" />

        </xsd:complexType>

  </xsd:element>

  <xsd:element name="cc" type="my:cc" />

  <xsd:element name="exp" type="xsd:gYearMonth" />

  <xsd:simpleType name="cc">

    <xsd:restriction base="xsd:string">

      <xsd:minLength value="12"/>

            <xsd:maxLength value="19"/>

      <xsd:pattern value="[0-9]+"/>

        </xsd:restriction>

  </xsd:simpleType>

  <xsd:simpleType name="paymentAs">

    <xsd:restriction base="xsd:string">

      <xsd:enumeration value="cash" />

      <xsd:enumeration value="credit" />

        </xsd:restriction>

  </xsd:simpleType>

</xsd:schema>

G.2

XForms

を使用した階層型ブックマークの編集

<html xmlns:ev="http://www.w3.org/2001/xml-events"


110

X 4178

:2007

       xmlns:my="http://commerce.example.com/payment"

       xmlns:xsd="http://www.w3.org/2001/XMLSchema"

       xmlns:xforms="http://www.w3.org/2002/xforms"

       xmlns="http://www.w3.org/2002/06/xhtml2"

       xml:lang="en">

  <head>

    <style type="text/css">

      xforms|input.editField {

       font-weight:bold; font-size:20px; width:500px

            }

      xforms|label.sectionLabel {

        font-weight:bold; color:white; background-color:blue

            }

            xforms|submit {

        font-family: Arial; font-size: 20px; font-style: bold; color: red

            }

        </style>

    <title>Editing Hierarchical Bookmarks In X-Smiles </title>

    <xforms:model id="bookmarks">

      <xforms:instance src="bookmarks.xml" />

      <xforms:submission id="s01" method="post"

                             action="http://examples.com/" />

    </xforms:model>

  </head>

  <body>

    <xforms:repeat nodeset="section" id="repeatSections">

      <xforms:input ref="@name" class="editField">

        <xforms:label class="sectionLabel">Section</xforms:label>

      </xforms:input>

<!-- BOOKMARK REPEAT START -->

      <xforms:repeat nodeset="bookmark" id="repeatBookmarks">

                <xforms:input ref="@name">

          <xforms:label>Bookmark name</xforms:label>

                </xforms:input>

                <xforms:input ref="@href">

          <xforms:label>URL</xforms:label>

                </xforms:input>

            </xforms:repeat>

    </xforms:repeat>

        <p>


111

X 4178

:2007

<!-- INSERT BOOKMARK BUTTON -->

      <xforms:trigger id="insertbutton">

        <xforms:label>Insert bookmark</xforms:label>

                <xforms:insert

            nodeset="section[index('repeatSections')]/bookmark"

            at="index('repeatBookmarks')" position="after"

                        ev:event="DOMActivate" />

            </xforms:trigger>

<!-- DELETE BOOKMARK BUTTON -->

      <xforms:trigger id="delete">

        <xforms:label>Delete bookmark</xforms:label>

                <xforms:delete

             nodeset="section[index('repeatSections')]/bookmark"

             at="index('repeatBookmarks')" ev:event="DOMActivate" />

            </xforms:trigger>

        </p>

        <p>

<!-- INSERT SECTION BUTTON -->

      <xforms:trigger id="insertsectionbutton">

        <xforms:label>Insert section</xforms:label>

        <xforms:insert nodeset="section" at="index('repeatSections')"

            position="after" ev:event="DOMActivate" />

            </xforms:trigger>

<!-- DELETE SECTION BUTTON -->

      <xforms:trigger id="deletesectionbutton">

        <xforms:label>Delete section</xforms:label>

        <xforms:delete nodeset="section" at="index('repeatSections')"

                                                    ev:event="DOMActivate" />

            </xforms:trigger>

        </p>

<!-- SUBMIT BUTTON -->

    <xforms:submit submission="s01">

      <xforms:label>Save</xforms:label>

      <xforms:hint>Click to submit</xforms:hint>

    </xforms:submit>

  </body>

</html>

初期インスタンスファイル bookmarks.xml:

<!--This is the bookmarks.xml file -->


112

X 4178

:2007

<bookmarks>

  <section name="main">

    <bookmark href="http://www.example.com/xforms.xml"

                                name="Main page" />

  </section>

  <section name="demos">

    <bookmark href="http://www.example.com/demo/images.fo"

                                name="images" />

    <bookmark href="http://www.example.com/demo/xf-ecma.xml"

                                name="ecma" />

    <bookmark href="http://www.example.com/demo/sip.fo" name="sip" />

  </section>

  <section name="XForms">

    <bookmark href="file:///C/source/xmlevents.xml" name="XML events" />

    <bookmark href="file:///C/source/model3.xml" name="model3" />

    <bookmark href="file:///C/source/repeat.fo" name="repeat" />

  </section>

</bookmarks>

G.3

XForms

及び SVG を使用した調査

次の例は,[SVG 1.1]と XForms との統合について一つの可能な例を示している。XForms と SVG との統

合についての完全なルールは,

この規定が公開された時点では十分に明確にされていないことに注目する。

XForms

規定,SVG 規定又はその他の W3C 規定の今後の版で XForms と SVG との統合についてのより完

全なルールが定義される可能性があるが,それは次の例と互換性がないことも考えられる。

次の例では,一般的に foreignObject とともに使用される,SVG の switch 及び requiredExtensions 機能が

使用されていないことに注意する。

<!-- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"

     "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -->

<svg xmlns:s="http://example.com/survey"

            xmlns:ev="http://www.w3.org/2001/xml-events"

            xmlns:xforms="http://www.w3.org/2002/xforms"

            xmlns:xlink="http://www.w3.org/1999/xlink"

            xmlns="http://www.w3.org/2000/svg"

            width="700px" height="600px" viewBox="0 0 700 600">

    <defs>

    <polygon id="bullet" points="-30,-30, -10,-10, -20,10"

               fill="#007138" />

    <xforms:model id="form1" schema="surveyschema.xsd">

      <xforms:instance id="instance1">

        <s:survey xmlns="http://example.com/survey">


113

X 4178

:2007

                    <s:drink>none</s:drink>

                    <s:espressoPrefs>

                        <s:numberPerWeek>0</s:numberPerWeek>

                        <s:sugar>0</s:sugar>

                        <s:lemon>Always</s:lemon>

                    </s:espressoPrefs>

                </s:survey>

            </xforms:instance>

      <xforms:submission id="submit1" method="post"

            action="http://www.example.org/surveyhandler" />

    </xforms:model>

  </defs>

  <title>Espresso survey</title>

    <desc>Sample SVG and XForms - espresso customer survey</desc>

  <g>

    <text x="50" y="70" font-size="40"

                    font-family="Arial Black, sans-serif"

          font-weight="900">Customer Survey: Espresso</text>

    <g font-family="Arial, Helvetica, sans-serif" font-size="18">

      <foreignObject x="80" y="150" width="250" height="40">

        <xforms:select1 appearance="minimal" model="form1" ref="s:drink">

                    <xforms:label>

            <g transform="translate(80, 140)">

                            <use xlink:href="#bullet" />

                            <text>Your usual coffee drink is:</text>

                        </g>

                    </xforms:label>

          <xforms:item>

            <xforms:label>Rich, dark espresso</xforms:label>

                        <xforms:value>espresso</xforms:value>

                    </xforms:item>

          <xforms:item>

                        <xforms:label>Creamy cappuccino</xforms:label>

                        <xforms:value>cappuccino</xforms:value>

                    </xforms:item>

          <xforms:item>

            <xforms:label>Long, milky latt�</xforms:label>

            <xforms:value>latt�</xforms:value>

                    </xforms:item>

          <xforms:item>


114

X 4178

:2007

            <xforms:label>Don't like coffee!</xforms:label>

                        <xforms:value>none</xforms:value>

                    </xforms:item>

                </xforms:select1>

            </foreignObject>

      <foreignObject x="80" y="240" width="250" height="40">

        <xforms:range model="form1" start="0" end="30"

            step="5" ref="s:espressoPrefs/s:numberPerWeek">

                    <xforms:label>

            <g transform="translate(80, 230)">

                            <use xlink:href="#bullet" />

                            <text>Shots of espresso per week:</text>

                        </g>

                    </xforms:label>

                </xforms:range>

            </foreignObject>

      <foreignObject x="80" y="350" width="250" height="40">

        <xforms:select model="form1" ref="s:espressoPrefs/s:sugar">

                    <xforms:label>

            <g transform="translate(80, 340)">

                            <use xlink:href="#bullet" />

                            <text>Sugar?</text>

                        </g>

                    </xforms:label>

          <xforms:item>

                        <xforms:label>Yes</xforms:label>

                        <xforms:value>X</xforms:value>

                    </xforms:item>

                </xforms:select>

            </foreignObject>

      <foreignObject x="80" y="420" width="250" height="90">

        <xforms:select1 appearance="full" model="form1"

                        ref="s:espressoPrefs/s:lemon">

                    <xforms:label>

            <g transform="translate(80, 410)">

                            <use xlink:href="#bullet" />

                            <text>Lemon?</text>

                        </g>

                    </xforms:label>

          <xforms:item>


115

X 4178

:2007

            <xforms:label>Required for the full

                                                                          experience</xforms:label>

                        <xforms:value>Always</xforms:value>

                    </xforms:item>

          <xforms:item>

                        <xforms:label>Whatever</xforms:label>

                        <xforms:value>Indifferent</xforms:value>

                    </xforms:item>

          <xforms:item>

            <xforms:label>Keep that citrus to yourself</xforms:label>

                        <xforms:value>Never</xforms:value>

                    </xforms:item>

                </xforms:select1>

            </foreignObject>

        </g>

        <use xlink:href="#bullet" x="101" y="64" transform="scale(7,3)" />

    <foreignObject y="150" x="500" height="60" width="100">

            <xforms:submit model="form1">

                <xforms:label>Send survey</xforms:label>

            </xforms:submit>

        </foreignObject>

        <!--- keep the graphics data out of this example listing -->

    <image xlink:href="espresso.svg" x="400"

             y="230" width="280" height="270" />

    </g>

</svg>


116

X 4178

:2007

附属書 H 

参考)

変更履歴

序文

この附属書は,本体の規定を補足するものであって,規定の一部ではない。

ここでは,2003 年 10 月 14 日の XForms 1.0 勧告以降の変更点を要約する。

− 2005 年 12 月時点での正誤表の反映

なし。


117

X 4178

:2007

附属書 I

参考)

貢献者

序文

この附属書は,本体の規定を補足するものであって,規定の一部ではない。

この文書の原勧告は現在の XForms 作業グループ関係者の参加によって作成された。

−  Steven Pemberton, W3C/CWI (Co-chair)

−  Sebastian Schnitzenbaumer, SAP/Mozquito (Co-chair)

− Rob

McDougall, Adobe

−  Micah Dubinko, Cardiff (Editor)

−  Mikko Honkala, Helsinki University Of Technology

−  Roland Merrick, IBM (Editor)

−  T. V. Raman, IBM (Editor)

− David

Landwehr,

Novell

−  Kenneth Sklander, Novell

−  John Boyer, PureEdge Solutions Inc.

−  Thierry Michel, W3C (W3C Team Contact)

−  Leigh Klotz, Xerox (Editor)

−  Mark Birbeck, x-port.net Ltd. (Invited Expert)

−  Subramanian Peruvemba, Oracle Corp.

−  Mark Seaborne, Origo Services Limited

−  Daniel Vogelheim, Sun Microsystems

以前の作業グループ関係者。

−  Peter Stark, Ericsson

−  Vincent Godefroy, EDF R&D

− Davanum

Srinivas,

Computer

Associates

− Doug

Dominiak,

Openwave

−  Frank Boumphrey, HTML Writer's Guild

−  Linda Bucsay Welsh, Intel

−  Gavin McKenzie, JetForm Corporation

−  John McCarthy, Lawrence Berkeley National Laboratory

−  Frank Olken, Lawrence Berkeley National Laboratory

− Ray

Waldin,

Lexica,

LLC

−  Tantek Çelik, Microsoft


118

X 4178

:2007

−  Josef Dietl, Mozquito Technologies

−  Dave Hyatt, Netscape/AOL

−  Eric Pollmann, Netscape/AOL

−  Kazunari Kubota, NTT DoCoMo, Inc.

−  Kaori Nakai, NTT DoCoMo, Inc.

−  Tom Butcher, OpenDesign

− Ted

Wugofski, Openwave

− Jeremy

Chone,

Oracle

−  K. P. Lee, Philips

−  Panagiotis Reveliotis, Philips

− Roli

Wendorf,

Philips

−  David Cleary, Progress Software

−  Mike Mansell, PureEdge Solutions Inc

− Michael

Fergusson,

SoftQuad

−  Zoe Lacroix, SurroMed, Inc.

−  Dave Navarro, WebGeek Inc.

−  Masayasu Ishikawa, W3C (Team Contact until September 2001)

−  Dave Raggett, W3C/Openwave (Team Contact until December 2000)

−  Larry Masinter, Xerox

XForms

作業グループは作業において,外部専門家の参加から恩恵を受けた。

−  Tom Schnetlage, University of Berkeley

−  Dan Gillman, Federal Bureau of Labor Statistics

−  Eliot Christian, U.S. Geological Survey

注記 1  編集者謝辞:この文書の以前のバージョンは,Dave Raggett(2000 年 12 月まで),Linda Bucsay

Welsh

(2001 年 4 月まで)及び Josef Dietl(2001 年 10 月まで)の支援の下に編集された。Martin

Dürst

は入力モードに関して編集を行った。

注記 2  追加謝辞:編集者一同は,結合に関する初期の議論への建設的な批評及びそれらの現在の内

容への貢献について,Kai Scheppe,Malte Wedel 及び Götz Bock  に感謝する。私たちは,XForms

イベント及びアクションハンドラのプロセスモデル,並びに再計算順序アルゴリズムの記述

に関して,John Boyer に感謝する。最後に,私たちは,規定のドラフト版の注意深い査読,

並びに建設的な提案及び批評を行ってくれた www-forms@w3.org 公開メーリングリストのメ

ンバに感謝する。

注記 3  追加謝辞:作業グループは,XForms で使用する W3C XML Schema サブセットの識別に関す

る貢献について,W3C XML Schema と XForms との連携作業委員会のメンバ,Daniel Austin

(委員長),David Cleary,Micah Dubinko,Martin Dürst,David Ezell,Leigh Klotz,Noah

Mendelsohn

,Roland Merrick 及び Peter Stark に感謝する。


119

X 4178

:2007

附属書 J

参考)

原勧告の作成メモ

序文

この附属書は,本体の規定を補足するものであって,規定の一部ではない。

この規格の原勧告は,XMLspec DTD(既に文書化)で符号化されている。XML ソースは xmlspec.xsl ス

タイルシートを利用して変換されている。付録の W3C XML Schema 部分は,xmlverbatim XSLT スタイルシ

ート(許可のもとで使用)を利用して HTML に翻訳された。編集に使用した主要なツールは,SoftQuad

XMetaL

及び EMACS(psgml 任意機能及び XAE)とする。XML は,XMLLint(GNOME libxml パッケージ

の一部)を利用して妥当性が検証され,XSLTProc(GNOME libxsl パッケージの一部)を利用して変換さ

れた。マルチファイル HTML 版は,Xalan プロセサを利用して生成された。HTML 版の生成には,Saxon

エンジンも使われた。

編集者は,

共同制作のために W3C CVS リポジトリ及び W3C IRC サーバを利用した。