X 4178:2007 目次
(1)
2019年7月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)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ページ
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 post,multipart-post,form-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)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ページ
附属書G(参考)完全なXFormsの例 ···················································································· 106
附属書H(参考)変更履歴 ··································································································· 116
附属書I(参考)貢献者 ······································································································· 117
附属書J(参考)原勧告の作成メモ ························································································ 119
X 4178:2007 目次
(4)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
まえがき
この規格は,工業標準化法第12条第1項の規定に基づき,財団法人日本規格協会(JSA)から,工業標準
原案を具して日本工業規格を制定すべきとの申出があり,日本工業標準調査会の審議を経て,経済産業大
臣が制定した日本工業規格である。
この規格は,著作権法で保護対象となっている著作物である。
この規格の一部が,特許権,出願公開後の特許出願,実用新案権又は出願公開後の実用新案登録出願に
抵触する可能性があることに注意を喚起する。経済産業大臣及び日本工業標準調査会は,このような特許
権,出願公開後の特許出願,実用新案権又は出願公開後の実用新案登録出願に係る確認について,責任は
もたない。
原勧告の標題及びまえがき
XMLフォーム言語(XForms)1.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)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
この文書は,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)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
白 紙
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
日本工業規格 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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
この規定は,次のように構成される。
箇条1及び箇条2
XFormsへの導入。XFormsの設計原則の概説及びXFormsについての簡潔な手引を含む。
箇条3以降
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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
付するのかを明確にできるため,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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
図1のとおりに可視化される単純な電子商取引のフォームについて考えてみる。
図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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
</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として直接送付できる。図1の例において,送付される
データは次のとおりになる。
例 送付されるデータ
<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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
<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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
文書の他の場所から参照できるように,それぞれに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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
</xforms:item>
</xforms:select1>
<xforms:submit submission="pollsubmit">
<xforms:label>送付</xforms:label>
</xforms:submit>
ここでの主な相違は,インスタンスを特定するmodel="poll"の使用である。submitはIDによって
submission要素を参照し,結合属性を必要としないことに注意する。
XFormsの例は附属書Gにもある。
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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
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を含む側の文書に包含
することが意図されている。このモジュールに含まれる要素及び属性は表1のとおりとする。
11
X 4178:2007
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
表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)*
表1に示したとおりに,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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
</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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
</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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
表2−MustUnderstandモジュール
要素
属性
最小内容モデル
すべて
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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
− 相互作用
− 通知
− 誤り状態
4.1
イベント概要
XFormsの処理はイベント,イベントハンドラ及びイベント応答の観点から定義される。XFormsは[DOM2
Events] [XML Events]で定義されるイベントシステムを使用するが,このイベントシステムでは,イベント
捕獲,ターゲットへのイベントの到達及び最後のイベントバブル動作の各過程が定義されている。
箇条4を通じて,ターゲット要素として“フォーム制御”という語が使用された場合,それは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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
表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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
文脈情報:なし
このイベントは通知イベントであり,このイベントに対する既定アクションは存在しない。
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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
通知イベント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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ためにマークされなければならない。
− 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などの他のモデル項目特性
では,自己参照の存在が十分に定義されている。
再計算イベントの開始時には,例えば,利用者入力がインスタンスに伝ぱしたことによって値が変更さ
れている一つ以上のインスタンスノードのリストLが存在する。
1) XFormsプロセサは,L中のいずれの要素も計算に必要としない代入式については再計算を行わないほ
うがよい。
2) XFormsプロセサは,L中の一つ以上の要素を計算に必要とする代入式について,再計算を1回だけ実
行することが望ましい。
3) XFormsプロセサは,代入式Cの再計算を,Cが必要とするすべてのインスタンスノードの代入式の
再計算の後に行わなければならない(同様に,XFormsプロセサは,Cに関連付けられているインスタ
ンスノードを計算に必要とするすべての代入式の再計算の前に,代入式Cを再計算しなければならな
い。)。
4) 最後に,代入式が循環依存の一部であり,L中の要素を計算に必要とする場合,XFormsプロセサは例
外(4.5.4参照)を報告しなければならない。
附属書Dでは,適切な再計算動作を達成する方法の一つについて説明している。
4.3.7
xforms-rebuildイベント
あるXFormsモデル内で計算に必要な依存関係をたどる内部データ構造を再構築するための要求に対応
して発生する。
ターゲット:model
23
X 4178:2007
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
バブル:はい
取消し可能:はい
文脈情報:なし
このイベントに対する既定アクションは次のとおりとする。
このイベントに対する既定アクションは,計算に必要な依存関係についてのデータ構造を再構築し,次
回xforms-recalculateイベントがモデルに対して発生されたときに完全な再計算を行うために必要な,計算
式が関連付けられているインスタンスノードへの参照をすべて,変更リストLに含めることとする。
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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
注記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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
このイベントは通知イベントであり,このイベントに対する既定アクションは存在しない。
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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ターゲット:フォーム制御
バブル:はい
取消し可能:いいえ
文脈情報:なし
このイベントは通知イベントであり,このイベントに対する既定アクションは存在しない。
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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ターゲット:フォーム制御
バブル:はい
取消し可能:いいえ
文脈情報:なし
このイベントは通知イベントであり,このイベントに対する既定アクションは存在しない。
このイベントは,フォーム制御に指定された制約条件から表示が不可能であったインスタンスデータノ
ードの値が,フォーム制御で表示することができるように変更されたときに発生する。
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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
− 送付に関係する同じ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,secret,textarea,range及びupload制御の場合
− フォーム制御が対話的に変更され,incremental="true"が設定されているとき,4.6.7で規定しているイ
ベント列を実装に依存する間隔で起動してもよい。
− フォーム制御が対話的に変更され,incremental="true"が設定されていないとき,イベントを発生する
必要はない。したがって,順序は定義されない。
− フォーカスがフォーム制御から変更され,値が変更されているとき,イベント列は4.6.7で規定してい
るとおりとする。
4.6.2
output制御の場合
− イベント列は定義されない。
29
X 4178:2007
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
適合性プロファイルの一部として指定されているものがあり,これらはアスタリスク(*)で示されている。
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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
定されるとおりに,特定のタイミングで再計算される(箇条4参照)。これらの式によって動的な特性
が符号化されるが,この動的な特性は多くの場合,データ項目間の依存性などの制約とする。計算さ
れる式は,それが適用されるインスタンスデータノードの値を検査すること以外にも使用される。
XPath式はインスタンスデータを走査する手段を提供する。より複雑な計算が外部スクリプトの呼出
しとして符号化されてもよい。
継承規則:
モデル項目特性の幾つかでは継承規則が定義される。その場合,XFormsプロセサは二つの値を把握し
ている必要がある。一つはbind要素の属性からの局所値であり,もう一つは,評価された局所値とインス
タンスデータ中の祖先ノードからの評価値との組合せとする継承値である。
注記 附属書Dで定義されるサンプル再計算アルゴリズムは,モデル項目特性の局所値だけを対象に
定義されている。このサンプルは,結合された値が実装によってノードの子孫に伝ぱされるも
のと仮定している。
局所値の割当て:
局所値は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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
表示になり,フォーカスされず,ナビゲーション順から除外されることが望ましい。
注記 一つのフォーム制御,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 > 1000"/>
ここでは,my:discount要素にrelevant特性を関連付け,注文数量が1 000より大きい場合に割引が
有効であることを示している。
表5はrequiredとrelevantとの間の利用者インタフェース相互作用を示す。
表5−requiredとrelevantとの間の利用者インタフェース相互作用
required="true()"
required="false()"
relevant="true()"
フォーム制御(及びすべての子)は可視又
は利用者から利用可能でなければならな
い。XForms利用者インタフェースは値(の
入力)が必す(須)であることを示しても
よい。
フォーム制御(及びすべての子)は可視又
は利用者から利用可能でなければならな
い。XForms利用者インタフェースは値(の
入力)が省略可能であることを示してもよ
い。
relevant="false()"
フォーム制御(及びすべての子)は不可視
又は利用者から利用不可能でなければなら
ない。値の入力又はフォーカスを与えるこ
とは許可しないことが望ましい。XForms利
用者インタフェースは,フォーム制御が有
効(relevant)になった場合には値が必す(須)
であることを示してもよい。
フォーム制御(及びすべての子)は不可視
又は利用者から利用不可能でなければなら
ない。値の入力又はフォーカスを与えるこ
とは許可しないことが望ましい。
6.1.5
calculate特性
説明:関連付けられるインスタンスデータノードの値を計算するために使用される式を提供する。
計算される式かどうか:はい
使用できる値:任意のXPath式
既定値:なし
継承規則:継承しない
XFormsモデルは他の値から計算されるモデル項目を含んでもよい。例えば,各品目の数量及び単価の
積の合計,注文に支払われる税金の量などの計算値は,他のモデル項目の値を使用する計算される式とし
36
X 4178:2007
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
て表現することができる。箇条4で,計算がいつ,どのように実行されるのかについて詳細に説明してい
る。
例 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 > 1000"/>
ここでは,注文数量が1 000より大きいとき10 %の割引が適用対象となることを示すために
my:discount要素にrelevant特性を関連付けている。
6.1.6
constraint特性
説明:関連付けられるインスタンスデータノードが妥当であると評価されるために満足する必要のある
条件式を示す。
計算される式かどうか:はい
使用できる値:boolean()を使用してXPathのboolean型に変換できるすべての式
既定値:true()
継承規則:継承しない
XPathがfalseと評価されるとき,関連付けられるモデル項目は妥当ではない。逆は必ずしも真ではない。
箇条4で,いつ,どのように制約が計算されるのか及び妥当性検証がいつ実行されるのかについて詳細に
説明している。
例 constraint特性の付与
<instance>
<my:range>
<my:from />
<my:to />
</my:range>
</instance>
<bind nodeset="my:to" constraint=". > ../my:from" />
ここでは,my:to要素に関連付けられるconstraint特性は,その値がmy:from要素の値より大きく
なければならないことを示している。
注記 インスタンスデータ中のノード数の最小値及び最大値は,constraint特性内でcount()関数を使用
することで指定することができる。
37
X 4178:2007
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
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制約
箇条5では,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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
させない。
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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
</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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
<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(boolean, string, string)
関数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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
とする。
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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
</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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
特に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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
実装していない場合,プロセサは例外(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"に相当するフォーム制御は必要ない。
表7のUI共通属性グループは,利用者インタフェースに関連する多くのXForms要素に共通とする。
47
X 4178:2007
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
表7−UI共通属性
要素
属性
(多種)
appearance ("full"|"compact"|"minimal"|QName-but-not-NCName)
appearance
表示形式を定義する省略可能な属性。指定されない場合,利用者エージェントは適切な視覚化を自
由に選択してよい。
注記 呼出し側の言語は,CSSのクラスセレクタによって照合される文字列の一覧を保持するclass
属性及びxml:langなどの属性に対応することが望ましい。
さらに,呼出し側の言語は,フォーム制御及びその呼出し側の言語に含まれるその他の要素間のナビゲ
ーション順序を指定する方法,並びにキーボードによる,つまり直接的な特定要素へのナビゲーション手
段を提供しなければならない。その方法の一つが,navindex及びaccesskeyと呼ばれる属性の組を使用する
ことであり,これらの属性は次のとおりに定義される。
navindex
この省略可能な属性はナビゲーション順序を定義するために使用され,0〜32767の負でない整数値
をとる。文書作成者はこの属性を使用することで,フォーム制御をたどる順序を制御できるようにな
る。既定のナビゲーション順序は箇条4に定義されている。
accesskey
この省略可能な属性は,特定のフォーム制御に入力フォーカスを直接移動させるためのショートカ
ットを定義する。この属性の値は,プラットフォーム固有の修飾キー(例えば“Alt”キー)とともに
押されたときにこのフォーム制御にフォーカスを移動させることになる単一の文字とする。
利用者エージェントは,ある提示の中で使用可能なアクセスキーを識別する手段を提供しなければ
ならない。これを実現する方法は,アプリケーションとの直接的な対話,利用者手引の使用など,実
装によって異なってよい。文書作成者によって要求されたアクセスキーが,プレーヤで使用できない
場合がある(例えば,使用する装置に存在していない場合又は,プレーヤ自身によって使用される場
合)。したがって,利用者エージェントは指定されたキーを利用可能にすることが望ましいが,アク
セスキーを異なる対話の振る舞いにマップしてもよい。
さらに,このモジュールは表8の内容集合を定義する。
表8−UI共通内容集合
内容集合
最小内容モデル
UI共通
(help|hint|alert|アクション)*
List UI共通
(choices|item|itemset)+
フォーム制御
(input|secret|textarea|output|upload|range|trigger|submit|select|select1)*
UI Inline
(output)*
表8に示すとおりに,XMLイベントモジュールによってアクション内容集合がUI共通内容集合に加え
られる。呼出し側の言語は内部のマーク付けを行内内容集合に加えることが望ましい。XForms拡張モジ
ュールが存在する場合は,それもUI共通内容集合に含めることが望ましい。
8.1.1
すべてのフォーム制御に共通の実装必要条件
48
X 4178:2007
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
XForms利用者インタフェース制御は,箇条6で定義される結合属性を使用して,背後にあるインスタ
ンスデータに結合される。
フォーム制御は,ラベル,ヘルプ文,ナビゲーション,及びキーボードのショートカットキーなどの各
機能において統一的な手法を採用することによって,アクセシビリティを実現する。国際化の問題につい
ては,XHTMLと同じ設計指針に従うことで解決される。フォーム制御はすべて,聴覚メディア及び視覚
メディアとして提示するのに適している。
フォーム制御は,具体的な実装を提供する能力を維持しながら,抽象度の高い意味をカプセル化する。
例えば,フォーム制御selectは,利用者に集合から項目を選択させるものとする。これらのフォーム制御
では,基底にある制御の機能的な側面と,提示又は振る舞いの側面とは区別される。この分離によって,
特定のフォーム制御の基底にある目的を表現することが可能になる。この利用者との対話の基本概念の定
義については[AUI97]を参照する。
フォーム制御は,可視化されたとき,そのフォーム制御に結合している背後にあるデータの値を表示す
る。フォーム制御を介して利用者に提示されるデータは,結合しているインスタンスデータに直接対応し
なければならないが,表示形式が字句値と一致している必要はない。例えば,利用者エージェントは,区
切り文字も含め,日付,時刻,期間及び数値を表示するのに適切な規約を使用することが望ましい。
フォーム制御はすべて,実装についての次の要求事項を満たさなければならない。
− simpleContentをインスタンスデータに書込むフォーム制御は,10.1.9で定義されるのと全く同じに動
作しなければならない。
− simpleContentのインスタンスデータを読込むフォーム制御はすべて,次のように動作しなければなら
ない。
○ 要素ノード:テキスト子ノードが存在する場合,最初のテキスト子ノードの文字列の値を返す。そ
うでなければ“”(空の文字列)を返す。
○ 属性ノード:ノードの文字列の値を返す。
○ テキストノード:ノードの文字列の値を返す。
○ 名前空間ノード,処理命令ノード,コメントノード及びXPathのルートノード:振る舞いは未定義
とする。
− フォーム制御は,妥当な状態のときの可視化と妥当でない状態のときの可視化とを区別しなければな
らない。この振る舞いはスタイルシートから制御可能にすることが望ましい。
− フォーム制御は,結合しているインスタンスデータにそのフォーム制御で可視化できない値が含まれ
ている場合に,それを示さなければならない。この振る舞いはスタイルシートから制御可能にするこ
とが望ましい。
− フォーム制御は,要求に応じて,妥当性又は関連するモデル項目特性などのフォーム制御の現在の状
態について説明を可視化しなければならない。この振る舞いはスタイルシートで制御可能にすること
が望ましい。
− 利用者指定の説明が利用不可能な場合,フォーム制御は前記のものに既定の説明を提供しなければな
らない。
箇条8では,次を指定することによってさまざまなフォーム制御を定義する。
説明
共通属性
特殊属性
49
X 4178:2007
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
例
データ結合制限
実装必要条件
8.1.2
input要素
説明:このフォーム制御は,自由形式でのデータ入力を可能にする。
共通属性:共通,UI共通,単一ノードUI結合
特殊属性:
inputmode
このフォーム制御は入力モードのヒントを受け入れる(附属書E参照)。
incremental
trueの場合,このフォーム制御はxforms-value-changedイベントを追加生成する。この属性の既定値
はfalse。
例 住所の入力
<input ref="order/shipTo/street" class="streetAddress">
<label>市町村及び番地</label>
<hint>市町村名及び番地を入力してください。</hint>
</input>
前記の例では,class属性はフォーム制御の表示サイズを指定するためにスタイルシートで使用される。
入力できる文字数に関する制約はこれらの表示上の特性から得られるのではなく,背後にあるXFormsモ
デル定義から得られる。
前記の例のグラフィカルブラウザでの可視化の例を図2に示す。
図2−input要素の可視化例(テキスト入力ボックス)
データ結合制限:任意のsimpleContent(xsd:base64Binary,xsd:hexBinary又はこれらから派生した任意の
データ型を除く。)に結合。
実装必要条件:結合されたデータ型に対応する字句値の入力を許可しなければならない。実装は,デー
タ型の入力のための便利な手段を提供することが望ましく,数の表現などの現地化及び国際化の問題も考
慮に入れることが望ましい。例えば,xsd:date型のインスタンスデータノードと結合しているinputでカレ
ンダ制御を提供すること,同様に,boolean型と結合しているinput制御をチェックボックスとして可視化
することが考えられる。
例 発送日の入力
<input ref="order/shipDate">
<label>発送日</label>
<hint>この注文品の発送日を入力してください。</hint>
</input>
前記の例のグラフィカルブラウザでの可視化の例を図3及び図4に示す。
50
X 4178:2007
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
図3−input要素の可視化例(日付入力ボックス)
利用者は,テキスト編集ボックスに日付を入力するか,ボタンを押してカレンダを開くことができる。
図4−input要素の可視化例(カレンダ表示)
8.1.3
secret要素
説明:このフォーム制御は,操作を監視する他の利用者によって入力内容が読み取られないようにしな
がらシステムに情報を入力する手段を利用者に提供する。一般にはパスワード入力のために使われる。
共通属性:共通,UI共通,単一ノード結合
特殊属性:
入力モード:このフォーム制御は入力モードのヒントを受け入れる(附属書E参照)。
incremental
trueの場合,このフォーム制御はxforms-value-changedイベントを追加生成する。この属性の既定値
はfalse。
例 パスワードの入力
<secret ref="/login/password">
<label>パスワード</label>
<hint>入力するパスワードは表示されません。</hint>
</secret>
前記の例のグラフィカルブラウザでの可視化の例を図5に示す。
図5−secret要素の可視化例
データ結合制限:inputと同じ。
実装必要条件:アクセシビリティを考慮しているものも含め,実装は,このフォーム制御に入力される
値を隠さなければならない。考えられる一つの方法として,実際に入力された文字の代わりに“*”又は同
51
X 4178:2007
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
様の文字を可視化する方法がある。これによって提供されるセキュリティのレベルは簡略的なものにすぎ
ないことに注意する必要がある。機密性が非常に高い情報を扱うには,XFormsで論じる範囲を超えた,
別のセキュリティ対策が必要になる。
8.1.4
textarea要素
説明:このフォーム制御は自由形式でのデータ入力を可能とするもので,複数行からなる内容(例えば
電子メールメッセージの本体)の入力に使用されることが意図されている。
共通属性:共通,UI共通,単一ノード結合
特殊属性:
入力モード:このフォーム制御は入力モードのヒントを受け入れる(附属書E参照)。
incremental
trueの場合,このフォーム制御はxforms-value-changedイベントを追加生成する。この属性の既定値
はfalse。
例 電子メールの本文
<textarea ref="message/body" class="messageBody">
<label>メッセージ本文</label>
<hint>メッセージをここに入力してください。</hint>
</textarea>
前記の例では,class属性はフォーム制御の表示サイズを指定するためにスタイルシートで使用される。
入力できる文字数に関する制約はこれらの表示上の特性から得られるのではなく,背後にあるXFormsモ
デル定義から得られる。
前記の例のグラフィカルブラウザでの可視化の例を図6に示す。
図6−textarea要素の可視化例
データ結合制限:xsd:string又は派生した任意のsimpleContentに結合する。
実装必要条件:複数行のテキストを含む,結合するデータ型に対応する字句値の入力を許可しなければ
ならない。
8.1.5
output要素
説明:このフォーム制御はインスタンスデータの値を可視化するが,データの入力又は変更の手段を提
供しない。これはインスタンスの値を表示するために使用され,レイアウトの目的でdisplay:inlineとして
扱われる。要素outputは,結合式を使用することで,インスタンス中の特定の位置にある値を表示するの
に使用することができる。また,評価対象のXPath式をrefではなくvalue属性に指定することで,XPath
52
X 4178:2007
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
式の評価結果を表示するのに使用することができる。要素output中の属性ref及びvalueは相互に排他的で
あることに注意する必要がある。
共通属性:共通,単一ノード結合(省略可能)
特殊属性:
appearance
このフォーム制御はUI共通属性グループを使用しないが,前記で定義したとおりに,appearance属
性は含んでいる。
value
評価対象のXPath式。評価結果の文字列がフォーム制御によって可視化される。結合属性がノード
を選択するために存在する場合,この属性は無効になる。評価文脈は,単一ノード結合の評価に適用
されるものと同じとする。式が参照するいずれかのノードに変更があった場合,XPath式は常に再評
価される。
例 説明書き
請求額:
<output ref="order/totalPrice"/>
円 - 請求理由は次のとおりです
前記の例のグラフィカルブラウザでの可視化の例を図7に示す。
図7−output要素の可視化例
データ結合制限:任意のsimpleContentに結合する。
実装必要条件:結合されたデータ型に対応する字句値の表示を許可しなければならない。実装は,デー
タ型の視覚化のための便利な手段を提供し,数値の表現などの現地化及び国際化の問題を考慮することが
望ましい。
8.1.6
upload要素
説明:このフォーム制御は,Webサイトに一般的に見られるローカルファイルシステムからファイルを
アップロードする機能,及びマイクロフォン,ペン,ディジタルカメラを含むさまざまな入力装置からの
入力の受入れを実現する。
共通属性:共通,UI共通,単一ノード結合
特殊属性:
mediatype
アップロードの対象となり得るデータのソースを決定するのにXFormsプロセサによって使用され
る,スペースによって区切られたメディア型の一覧。
incremental
trueの場合,このフォーム制御はxforms-value-changedイベントを追加生成する。この属性の既定値
はfalse。
● 割引期間終了
53
X 4178:2007
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
例 イメージをアップロードする
<upload ref="mail/attachment" mediatype="image/*">
<label>画像を選択:</label>
<filename ref="@filename" />
<mediatype ref="@mediatye" />
</upload>
前記の例のグラフィカルブラウザでの可視化の例を図8に示す。
図8−upload要素の可視化例
実装必要条件:
− 活性化されたとき,子要素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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
実装必要条件:すべてのデータ結合に関して
− 特定のペン・座標読取装置を伴う実装では,ペン書き任意機能を利用可能とし,ペン使用の入力をそ
の場で行えるようにすることが望ましい(その他のポインティングデバイスを伴う実装ではこれを利
用可能としてもよい。)。
− 特定のオーディオ録音機能を伴う実装では,オーディオ録音任意機能を利用可能とし,オーディオク
リップの録音をその場で行えるようにすることが望ましい。
− ディジタルカメラ,スキャナインタフェース又はスクリーンキャプチャを伴う実装では,イメージ取
得任意機能を利用可能とし,接続された装置からのイメージのアップロードをその場で行えるように
することが望ましい。
− ビデオ録画機能を伴う実装では,ビデオ録画任意機能を利用可能とすることが望ましい。
− 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>
前記の例のグラフィカルブラウザでの可視化の例を図9に示す。
55
X 4178:2007
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
図9−range要素の可視化例
データ結合制限: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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
共通属性:共通,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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
</item>
</choices>
</select>
前記の例では,複数の味を選択することができる。
フォーム制御selectは,グラフィカルブラウザでは図10のいずれかのように可視化されることが考えら
れる。
appearance="full"
appearance="compact"
appearance="minimal"
図10−select要素の可視化例(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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
このフォーム制御に結合されるデータ型には,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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
</item>
</select1>
前記の例で,選択肢から一つを選択すると,選択した項目に関連する値,つまりその項目のvalue要素
で指定される値が,背後のインスタンスデータ内の場所icecream/flavorに設定される。
フォーム制御select1は,グラフィカルブラウザでは図11のいずれかのように可視化されることが考え
られる。
appearance="full"
appearance="compact"
appearance="minimal"
図11−select1要素の可視化例(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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
特殊属性:
リンク付け属性
外部警告へのリンク。リンク走査に失敗した場合は誤りとして扱われる(4.5.3参照)。
指定されたメッセージは,インスタンスデータ,遠隔のドキュメント,又は内部のテキストとして存在
することができる。要素内に複数のメッセージが指定された場合,その優先順位は,単一ノード結合属性,
リンク付け属性,内部テキストの順とする。利用者への提示の例については,附属書Fを参照する。
9
XForms利用者インタフェース
ここでは,フォーム制御を利用者インタフェースに組み入れるためのXFormsの機能について記述する。
9.1
XFormsグループモジュール
箇条8で定義されているフォーム制御はすべて,XHTML処理などにおいて視覚的な配置目的でそれぞ
れ単独で扱われる。箇条9で定義するマーク付けを使用して複数のフォーム制御をまとめることで,利用
者インタフェース制御間の関係が意味付けられる。この手法は関連するUIを小形の装置で扱うのに役立
つ。例えば,利用者インタフェースを幾つかの画面上に分離させる必要がある場合,通常は,同じまとま
り内にある制御を同一画面又はページに可視化する。このモジュールに含まれる要素及び属性を表9に示
す。
表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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
<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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
を要求する。利用者が値を入力し,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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
この要素は,ノード集合結合属性によって選択された同種の集まりに対する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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
<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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
要素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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
</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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
<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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
− リストフォーム制御内の結合属性によって指定されたターゲットノードは要素ノードでなければなら
ない。そうでない場合は例外とする(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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
に再初期化する。
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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
<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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
表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.5,9.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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
共通属性:共通,イベント
例 アクションのグループ化
<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
属性は無視され,箇条4で定義された標準の意味が適用される。
2) XFormsの文書作成者によって作成される,XFormsでの解釈が事前定義されていないイベント。定義
されることなくXFormsプロセサによって処理されることはない。
76
X 4178:2007
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
共通属性:共通,イベント
特殊属性:
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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
省略可能。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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
文書は,新しい表示文脈,例えば,新しいウィンドウにロードされる。元のウィンドウではフォー
ム処理が引き続き行われる。
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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
特殊属性:
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>
図12−message要素の可視化例
modelessメッセージはhelpメッセージを表示するための基礎となる。グラフィカルブラウザにおける
80
X 4178:2007
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
helpメッセージの可視化の例を図13に示す。
<secret ref="/login/password">
<label>Password</label>
<help>パスワードをお忘れですか?クレジットカードをお手元に用意して,
1-900-555-1212に電話してください。</help>
</secret>
図13−help要素の可視化例
ephemeralメッセージはhintメッセージを表示するための基礎となる。グラフィカルブラウザにおける
hintメッセージの可視化の例を図14に示す。
<input ref="po/address/street1">
<label>市町村及び番地</label>
<hint>市町村名及び番地を入力してください。</hint>
</input>
図14−hint要素の可視化例
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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
バブル:はい
取消し可能:はい
文脈情報:なし
どんな状況でも,ある一つの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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
はこれらの属性に指定できる値に対する振る舞いを要約し,後続の11.3,11.4,11.5,11.6,11.7,11.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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
非明示的に使用されるすべての名前空間宣言([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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
<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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
例 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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
例 application/x-www-form-urlencoded
GivenName=Ren%C3%A9
この形式は単純な名前及び値の組から成る。
<PersonName title="Mr">
<GivenName>René</GivenName>
</PersonName>
これは前記の例のインスタンスデータとする。一部のデータしか保存されないことに注意する。
文書作成者は,より高いデータ保全性を必要とする場合,異なる直列化フォーマットを選択するこ
とが望ましい。
11.7 post,multipart-post,form-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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
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処理モデル及び箇条4にリストされているすべてのイベント,
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(附属書A参照)に照らして妥当でなければなら
ない。
呼出し側の言語は,その他の適合性に関する要求事項を導入してもよい。
完全XForms適合文書はすべて,この規定の必す(須)部分のすべてに適合しなければならない。
12.2.3 XForms適合生成器
XForms生成器はXForms適合文書を生成しなければならない。
13 定義
結合 (Binding)
“結合”は,位置指定子として結合式を使用することによってインスタンスデータノードをフ
ォーム制御又はモデル項目制約に関連付ける。
結合式 (Binding expression)
結合に使用される[XPath 1.0]式。
88
X 4178:2007
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
モデル結合式 (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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
値空間 (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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
附属書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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
附属書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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
(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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
附属書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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
附属書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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
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
{
(v, w) = 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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
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 (w, x) 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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
場合は正常に終了したことになる。
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−6変数をもつ依存有向グラフ
頂点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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
附属書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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
利用者エージェントがどのように,それらが提供できる入力モードと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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
表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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
表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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ことは特に重要である。
E.5
例
日本の住所入力のためのフォームの例であり,テーブルフォームの形式で示される。これはこの規定の
後の版で実際の構文に置き換えられる。
表E.3−日本の住所入力のためのinputmode属性の例
キャプション
inputmode
姓
Hiragana
姓(片仮名)
Katakana
名
Hiragana
名(片仮名)
Katakana
郵便番号
latin digits
住所
Hiragana
住所(片仮名)
Katakana
電子メール
latin lowerCase
電話番号
latin digits
コメント
user predictOn
104
X 4178:2007
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
附属書F
(参考)
XForms及びスタイル設定
序文
この附属書は,本体の規定を補足するものであって,規定の一部ではない。
ここでは,XFormsの内容のスタイル設定を行うのに必要な新規又は現行のCSS機能について広く概要
を提供する。これらの機能の仕様は,CSS作業グループからの将来の勧告で完全に明らかにされる。
F.1
擬似クラス
文書ツリーの外にある情報又は他のセレクタを使用しても表現できない情報に基づいてスタイル設定を
行う場合の要素の選択にはCSS擬似クラスが使用される。
表F.1−CSS擬似クラス
名前
定義されている場所
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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
表F.2−CSS擬似要素
名前
定義されている場所
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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
附属書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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
<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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
<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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
<!-- 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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
<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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
<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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
<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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
<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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
附属書H
(参考)
変更履歴
序文
この附属書は,本体の規定を補足するものであって,規定の一部ではない。
ここでは,2003年10月14日のXForms 1.0勧告以降の変更点を要約する。
− 2005年12月時点での正誤表の反映
なし。
117
X 4178:2007
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
附属書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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
− 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
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
附属書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サーバを利用した。