すっきりわかるXML -構造からプログラミングまで

目次

第1章 XMLとは何か

1 XMLの概要 (20)

1.1 テキストデータとは (20)

テキストデータのメリット (21)
テキストデータのデメリット (21)

1.2 マークアップとは (23)

マークアップ言語 (23)

1.3 テキストデータのマークアップ (23)

XML の基本(1):タグと要素 (24)
XML の基本(2):属性 (24)

1.4 マークアップの役割 (25)

マークアップの機能(1):論理構造 (25)
マークアップの機能(2):意味情報 (25)
マークアップの機能(3):表示用の情報 (26)

2 XMLと文書型 (28)

2.1 なぜ文書型定義が必要か (28)

データの検証 (28)
定義の再利用 (29)
共通ボキャブラリ (29)

2.2 妥当な文書と整形式文書 (30)

2.3 XMLアプリケーション (31)

メタ言語 (31)

2.4 名前空間 (32)

名前空間の役割 (32)

3 XMLの使用例 (34)

3.1 情報の追加 (34)

整形式にする (34)

3.2 XML文書の表示 (35)

スタイルシートを使う (35)
Web用に変換する (37)
Webブラウザで表示する (38)

3.3 データの抽出 (39)

3.4 文書型定義の活用 (40)

コラム

ASCIIコードとは (22)
XML「文書」とは何か (24)
さまざまなテキストデータ (26)
整形式文書の存在意義 (31)
SGML(Standard Generalized Markup Language) (33)

第2章 XMLアプリケーション

1 さまざまなXMLアプリケーション (44)

1.1 一般文書用のXMLアプリケーション (44)

DocBook (44)
Open eBook(OeB) (45)
JepaX (45)
SmartDoc (45)

1.2 Webコンテンツ用のXMLアプリケーション (45)

XHTML (45)
VoiceXML(VXML) (45)
WML (46)

1.3 マルチメディア用のXMLアプリケーション (47)

SVG (47)
SMIL (47)
MPEG-7 (47)
MPEG-21 (48)

1.4 特定分野用のXML アプリケーション (48)

MathML (48)
CML (48)
SportsML/NewsML (48)
MML (48)
G-XML/GML (49)

1.5 電子商取引用のXMLアプリケーション (49)

XBRL (49)
ContactXML (49)
cXML(Commerce XML) (50)
TravelXML (50)

1.6 メタデータ記述用のXMLアプリケーション (50)

RDF (50)
XMI(XML Metadata Interchange) (50)
XTM(XML Topic Maps) (50)

2 DocBook (51)

2.1 DocBookを利用するには (51)

DocBook用のツール (52)

2.2 DocBookの概要 (53)

構成用の要素 (54)
情報用の要素 (55)
本文用の要素 (56)

2.3 モジュールの活用 (57)

モジュールを選択するには (57)

2.4 Simplified DocBook(sdocbook) (58)

全体の構成 (59)
本文の構成 (59)

3 XHTML (60)

3.1 HTMLとXHTMLの違い (61)

要素の書き方 (61)
属性の書き方 (62)
文字コードの指定 (62)
言語の指定 (62)
スクリプトの書き方 (63)

3.2 XHTML 1.1 (64)

XHTML 1.0 との違い (64)

3.3 XHTML Basic (66)

コアモジュール (66)
XHTML Basic で使用できる要素 (67)

コラム

HTMLとXHTML (46)
SGML版DocBookとXML版DocBook (52)
DocBookのファイル構成 (59)
XHTML 1.0 Strictとは (65)

第3章 XMLとWebサービス

1 Webサービスとは (70)

1.1 SOAPの役割 (70)

1.2 WSDLの役割 (71)

1.3 UDDIの役割 (73)

1.4 Webサービスの特徴 (74)

ゆるやかな結合 (75)

1.5 Webサービスを利用するには (76)

相互運用性のテスト (76)

2 SOAP (77)

2.1 SOAPの概要 (77)

2.2 SOAPメッセージの例 (78)

SOAPリクエスト (78)
SOAPレスポンス (79)

3 WSDL (80)

3.1 WSDLの概要 (80)

3.2 WSDL定義の例 (81)

データ型 (83)

コラム

プロトコルとは (72)
UDDIプロジェクト (73)
プログラムの粒度と再利用性 (75)
公開されているWebサービス (83)

第4章 XMLとデータベース

1 データベースとは (86)

1.1 データベース管理システム (86)

データ操作機能 (86)
このほかの機能 (87)

1.2 データベース言語 (87)

DDL(Data Definition Language) (87)
DML(Data Manipulate Language) (87)

2 XMLデータベースとは (89)

2.1 拡張型とネイティブ型 (89)

2.2 XMLデータベースの活用 (90)

構造化が必要か (90)
どちらのスピードが大切か (91)
システムの連携 (92)

3 XMLデータベースを利用するには (94)

3.1 XML拡張型データベース (94)

Oracle (94)
Microsoft SQL Server (95)
DB2 Universal Database(IBM) (95)

3.2 ネイティブXMLデータベース (96)

Tamino XML Server (96)
Yggdrasill (96)
Xindice (97)

4 XML Query (98)

4.1 XQueryを利用するには (98)

4.2 XQuery 1.0の概要 (98)

XPath 2.0 (99)
distinct関数 (100)
for節 (101)
let節 (102)
where節 (102)
order by節 (103)

コラム

リレーショナルデータベース (88)
全文検索 (92)
SQL2003 (95)
XMLデータベースと文書型定義 (97)
XQuery関連の仕様 (103)

第5章 XMLの文法

1 XMLの基本構造 (108)

1.1 要素と階層構造 (108)

XMLは“入れ子”になっている (108)
ルート要素 (109)
1.2“正しい”XML文書 109

1.3 タグの記述 (110)

2 XML文法[1] XML宣言と文書型宣言 (111)

2.1 XML宣言(XML declaration) ( 111)

バージョン宣言 (111)
符号化宣言 (111)
符号化方式と文字セット (112)
スタンドアロン文書宣言 (113)
2.2 文書型宣言(document type declaration)
文書型定義(document type definition) (114)

3 XML文法[2] 要素と属性 (116)

3.1 要素 (116)

要素名 (117)

3.2 開始タグ (117)

3.3 終了タグ (117)

3.4 空要素 (118)

3.5 属性 (119)

属性名 (119)
属性値 (120)

4 XML文法[3] 参照 (121)

4.1 実体参照(entity reference) (121)

定義済みの実体 (121)
実体の定義 (122)
実体の参照 (122)

4.2 文字参照(character reference) (123)

使用できる文字コード (123)
文字参照による実体の定義 (123)
定義済みの文字 (124)

5 XML文法[4] CDATAとコメント (128)

5.1 CDATAセクション (129)

5.2 コメント (129)

6 XML文法[5] 処理命令(PI) (130)

7 名前空間 (131)

7.1 名前空間の宣言 (131)

URI (132)
接頭辞(namespace prefix) (132)
デフォルトの名前空間 (132)

コラム

スタンドアロン宣言と空白文字の扱い (113)
SGMLとXML (115)
XMLの予約属性 (120)
バッカス記法(BNF)の読み方 (126)
処理命令の活用 (130)
URIとURL (133)

第6章 DTDとXML SchemaによるXML文書の定義

1 文書型定義の概要 (136)

1.1 DTDの概要 (136)

DTDを利用するには (138)

1.2 XML Schemaの概要 (140)

XML Schemaを使用するには (141)

2 DTDの基本事項 (144)

2.1 内部サブセットと外部サブセット (144)

内部サブセット (145)
外部サブセット (145)

2.2 宣言の優先順位 (146)

複数のDTDを組み合わせる (146)

2.3 名前文字 (147)

2.4 名前空間 (147)

2.5 ルート要素の指定 (148)

3 DTD文法[1] 要素 (150)

3.1 制限なし(ANY) (150)

3.2 空要素(EMPTY) (150)

3.3 子要素 (150)

子要素が複数ある場合 (151)
子要素の出現頻度 (151)
子要素のグループ化 (152)

3.4 文字データ(#PCDATA) (152)

3.5 要素と文字データの混合 (152)

4 DTD文法[2] 属性 (155)

4.1 同じ要素に対する属性リスト (155)

4.2 属性の型 (156)

文字データ(CDATA) (156)
名前(NMTOKEN,NMTOKENS) (156)
実体名(ENTITY,ENTITIES) (157)
識別子(ID) (157)
識別子参照(IDREF,IDREFS) (158)
候補値のリスト (158)

4.3 属性の性質 (159)

必須(#REQUIRED) (159)
任意(#IMPLIED) (159)
初期値 (159)
固定(#FIXED) (159)

5 DTD文法[3] 実体 (162)

パラメータ実体 (162)
外部パラメータ実体 (163)
一般実体 (163)
外部一般実体 (163)
外部解析対象外実体 (164)

5.1 記法宣言(NOTATION) (165)

5.2 条件付きセクション(Conditional Sections) (165)

6 XML Schemaの基本事項 (167)

6.1 データ型の基礎知識 (169)

単純型と複合型 (169)
データ型の名前 (169)
定義済みのデータ型 (170)

7 XML Schema[1] 要素 (172)

7.1 名前とデータ型による宣言 (172)

7.2 参照による宣言 (173)

7.3 匿名データ型による宣言 (173)

7.4 初期値と出現回数 (174)

初期値 (174)
出現回数 (174)

8 XML Schema[2] 属性 (176)

8.1 属性の型 (176)

8.2 初期値と出現回数 (177)

初期値 (177)
出現回数 (177)

8.3 属性グループ (178)

9 XML Schema[3] 単純型の定義 (179)

9.1 制限(restriction) (179)

数値型の制限 (179)
文字列型の制限 (180)

9.2 列挙(enumeration) (181)

9.3 正規表現(pattern) (181)

9.4 リスト(list) (181)

9.5 ユニオン(union) (182)

10 XML Schema[4] 複合型の定義 (184)

10.1 子要素 (184)

10.2 子要素の出現回数 (185)

10.3 子要素のグループ化 (186)

10.4 子要素と文字データの混合 (188)

10.5 属性 (188)

属性グループの参照 (189)

10.6 文字データのみ (189)

10.7 空要素 (190)

10.8 制限なし (190)

11 XML Schema[5] 名前空間 (191)

11.1 対象名前空間の指定(targetNamespace=) (191)

対象名前空間が指定されたスキーマを使うには (192)

11.2 名前空間接頭辞の使用 (192)

11.3 外部スキーマファイルのインポート (194)

12 そのほかのスキーマ言語 (200)

12.1 RELAX NG(RELAX Next Generation) (200)

RELAX NGの特徴 (200)
RELAX NGの情報源 (202)

コラム

DTDの文法チェック (138)
XML Schemaの文法チェック (142)
公開識別子とカタログ (146)
コロン(:)の使用について (147)
要素型宣言のEBNFによる定義 (153)
属性宣言を追加する (160)
ビルトインデータ型の派生関係 (171)
ユーザー派生型から新しい型を作る (183)
出現回数の指定場所 (186)
型名を使わない定義 (187)
anyと名前空間 (197)

第7章 CSSによるXML文書の表示

1 スタイルシートの概要 (206)

1.1 CSSの概要 (206)

CSSを利用するには (207)

1.2 XSL(XSL-FO)の概要 (209)

XSLを使用するには (210)

2 CSSの基本構造 (213)

2.1 カスケーディング (213)

優先順位 (213)
優先順位の変更 (214)

2.2 継承 (215)

継承の変更 (215)

2.3 ブロックレベルとインラインレベル (216)

3 CSS文法[1] セレクタ (217)

3.1 要素による指定 (217)

文脈による限定 (217)

3.2 属性による指定 (218)

属性値のみの指定 (218)

3.3 疑似要素と疑似クラス (219)

:before,:afterの使用例 (220)
疑似クラス (221)

4 CSS文法[2] プロパティ (222)

4.1 文字色と背景 (222)

4.2 色の指定 (223)

色の指定方法(1):RGB混合比 (223)
色の指定方法(2):色名 (224)
色の指定方法(3):システムカラー (224)

4.3 フォント (225)

フォントの種類 (226)
一般フォントファミリ (226)

4.4 サイズの指定 (226)

サイズの指定方法(1):数値による指定 (226)
サイズの指定方法(2):キーワードによる指定 (227)

4.5 文字の装飾と位置揃え (228)

4.6 リスト (228)

display:list-itemの使用例 (229)

4.7 テーブル (230)

display:tableの使用例 (231)

4.8 枠線 (232)

一括指定 (233)

4.9 余白 (234)

コラム

HTMLでCSSを利用するには (207)
CSSのバージョンとブラウザの対応 (208)
FOPで日本語フォントを利用するには (211)
CSSの表示属性 (216)
CSS2のメディアタイプ (235)

第8章 XSLTによるXML文書の変換

1 XML文書の変換とは (238)

1.1 XSLTの概要 (238)

1.2 XSLTを利用するには (239)

1.3 Webブラウザで表示する場合 (240)

サーバサイドでの変換 (240)
スタイルシートの切り替え (241)

2 XSLTの基本構造 (242)

2.1 テンプレート (242)

テンプレートの適用 (243)
データの取り出し (244)
組み込みテンプレート (244)

2.2 XPath (246)

ノードツリー (246)
XPathによる表記例(1):要素 (247)
XPathによる表記例(2):属性 (248)
XPathによる表記例(3):関数 (250)

3 XSLT文法[1] XSLTの要素とスタイルシート宣言 (251)

3.1 スタイルシート宣言 (252)

3.2 トップレベル要素 (252)

4 XSLT文法[2] テンプレート (254)

4.1 パターンを指定したテンプレート (255)

パターン (255)
テンプレートの適用 (256)
テンプレートの優先順位 (256)

4.2 モード付きテンプレート (257)

mode=の使用例 (257)

4.3 名前付きテンプレート (258)

4.4 カレントノード (259)

名前付きテンプレートのカレントノード (259)

5 XSLT文法[3] データの生成 (262)

5.1 ソースツリーからのコピー (262)

xsl:value-of (263)
xsl:copy-of (263)
xsl:copy (263)
属性値テンプレート (264)

5.2 要素の生成 (265)

5.3 属性の生成 (266)

属性セット (266)

5.4 テキストノードの生成 (268)

空白文字の制御 (268)

5.5 コメントと処理命令 (271)

6 XSLT文法[4] 変数と制御構文 (272)

6.1 変数とパラメータ (273)

変数の定義と利用 (273)
パラメータの定義と利用 (273)

6.2 条件分岐 (274)

複数処理の分岐 (275)

6.3 繰り返し (276)

xsl:for-eachとカレントノード (276)
xsl:for-eachとxsl:apply-templates (277)

6.4 データの並び替え (277)

並び順 (278)

7 XSLT文法[5] 出力形式と空白の制御 (279)

7.1 XML形式の出力 (279)

インデント (280)
CDATAセクション (281)
実体参照 (281)

7.2 HTML形式の出力 (282)

7.3 TEXT形式の出力 (283)

空白のみのテキストノード (283)

8 XSLT文法[6] スタイルシートの結合 (284)

8.1 結合方法と優先順位 (284)

8.2 xsl:importとxsl:apply-importsによる結合 (284)

同じノードに対するテンプレートがない場合 (285)
同じノードに対するテンプレートがある場合 (285)
xsl:apply-importsを使った場合 (286)

8.3 xsl:includeによる結合 (287)

同じノードに対するテンプレートの前でインクルードした場合 (287)
同じノードに対するテンプレートの後でインクルードした場合 (288)

9 XPathの基本構造 (293)

9.1 省略しない書き方 (294)

ロケーションパス (294)

9.2 軸 (295)

親子関係の軸 (297)
出現順の軸 (297)
その他の軸 (298)
省略表記 (298)

10 XPath[1] ノードテスト (300)

10.1 ノードの種類 (300)

ルートノード(root node) (300)
要素ノード(element node) (300)
属性ノード(attribute node) (300)
テキストノード(text node) (301)
コメントノード(comment node) (301)
処理命令ノード(processing-instruction node) (301)
名前空間ノード(namespace node) (301)

10.2 ノードの名前と値 (301)

10.3 名前によるノードテスト (302)

主ノード型 (302)

10.4 型によるノードテスト (303)

10.5 ワイルドカード(*)によるノードテスト (303)

10.6 複数のノードテストを組み合わせる (304)

11 XPath[2] 述部と関数 (305)

11.1 関数と省略表記 (306)

11.2 演算子 (307)

算術演算子 (307)
比較演算子 (308)

11.3 関数(1):ノードセット関数 (308)

11.4 関数(2):文字列関数 (309)

11.5 関数(3):真偽値関数 (310)

11.6 関数(4):数値関数 (310)

11.7 XSLTで追加された関数 (311)

コラム

XSLTプロセッサの使い方 (239)
ルートノード用テンプレートのみのスタイルシート (253)
カレントノードと文脈ノード (260)
xsl:textでXSLTコードを読みやすくする (269)
XSLTプロセッサとの通信 (278)
XMLファイルの結合 (289)
番号の出力 (290)

第9章 XMLプログラミング

1 XMLプログラミングの概要 (314)

1.1 DOMの概要 (314)

DOMの種類 (316)

1.2 SAXの概要 (317)

SAXのバージョン (318)

2 DOM (SAXを利用するには (319)

)

2.1 XMLパーサ (319)

Xerces (319)
MSXML (319)

2.2 どちらを使うか (320)

DOMを利用するには (321)
SAXを利用するには (321)

2.3 Java (321)

2.4 Perl (322)

2.5 ECMAScript(JavaScript) (322)

3 DOM Level 2 Core (324)

3.1 ノードの種類 (324)

Node型 (326)
ノードの名前と値 (328)

3.2 文書ノード(Document) (329)

子ノードの取得 (329)
ノードの作成 (332)

3.3 要素ノード(Element) (334)

子ノードの取得 (334)
属性の操作 (336)

3.4 属性ノード(Attr) (337)

情報の取得 (338)

3.5 その他のノード (340)

テキストノード(Text) (340)
テキストデータの処理 (341)
CDATAセクションノード(CDATASection) (341)
実体参照ノード(EntityReference) (342)
処理命令ノード(ProcessingInstruction) (342)
コメントノード(Comment) (343)
文書断片ノード(DocumentFragment) (343)

3.6 文書型宣言に関するノード (343)

文書型ノード(DocumentType) (345)
実体ノード(Entity) (345)
記法宣言ノード(Notation) (346)

4 SAX 2.0 (347)

4.1 イベントハンドラ (347)

使用できるイベントハンドラ (348)

4.2 要素と属性 (349)

属性の操作 (351)

4.3 文字データ用の処理 (353)

コラム

DOM Level 0 (316)
テキストデータとしてのXML (318)
ECMAScript (323)
SAXのパッケージ (355)