く ! ENT 工 TY く ! ELEVENT く ! ELEMENT < ! ELEVENT く ! ELEMENT く ! ELEVIENT 工ンティティを宣ー 宅 ADDRESS Z 工 P, COUNTRY, C 工 TY Ⅱ > URCHASE ′工 T 4 + ′ SH PMENT ′ SELLER) > PURCH4SEX ( ( %ADDRESS ー ) + , —NAPE, PHONE + , FAX + , E—MA 工 L? ) > 工 T 齢 1 (NUMBER ′ PR 工 CE, CO SH 工 PB•IFNT ( (%ADDRESS;) + , ONE + , FAX + ) > SELLE\ ( s ー E , 工 D) > ①参照 ②置き換え ・外部ファイルを参照して XML 文書に読み込む XML 文書は、単一のファイル内にすべての XML 文書を持っこともできます が、部分データを外部に置いて UR1 で引用することもできます。複数の XML 文書間で共通に用いる部分データを外に出し、各ドキュメントは共通部分を参 照することによって共有するのが一 - 一般的な使い方です。もとの XML 文書から 参照する外部ファイルを外部工ンティティと呼び、次のように指定します。 <!ENT 工 TY 工ンティティ名 SYSTEM “参照するファイルのありか“ > 工ンティティを参照するときは、次のようにエンティティ名を指定します。 & 工ンティティ名ー マ外部ファイルを XML 文書に読み込む XML データ部分データ ファイル 複数の文書で 共有するデータは 外部に置いて、 要に応じて読み込む ファイル 104
/Order// 工 tem /Order/ 工 tems/@urgent 0 繰り返し指定 パターン指定では、繰り返しのある要素に対して、繰り返し位置を指定して 特定の要素を指すことができます。 / / 工セ em [ Ø ] // 工 tem[end ( ) ] // 工 tem[end ( ) ] /Price XML を表示する Chapter 0rder 要素以下、任意の階 層にある工し要素 order 要素の直下の urgent 属性を持つェ tems 要素 任意の属性、つまり属性を 持っすべての要素 ルート要素の下の全要素 最初の工し em 要素 最後の工し em 要素 最後のェ tem 要素のす ぐ下の pr 土 ce 要素 はじめの要素と最後の要素の指定を実際に IE5.0 で行ってみましよう。 XSL </xsl : template> く / H3 > <XSI :value—of/> く H3 > 終わり <xsl:template match=" 工 tem[end() ] “ く /xsl:template> く / H3 > く xsl:value—of/> く H3 > 始め <xsl:template match="Item[0] “ > </xsl:template> <xsl:apply—templates select="// 工 tems/*"/> <XSI : template match= " / “ > は次のようになります。 141 最後の工し em 要素のテン 最初の工し em 要素のテン トの対象 直下の全要素がテンプレー 任意のレベルの工し ems 要素
VOrder . 刈 nl の DTD Nounyu 要素を追加 工し e 爪 (Product, Nounyu? ′ price, Quantity) > Phone ( #PCDATA) > く ! ELEMENT Address ( #PCDATA) > Company ( #PCDATA) > 工 tems ( 工し e 爪 + ) > Contact ( #PCDATA) > Date ( #PCDATA) > Purchaser ( Company, Address ′ Phone ) > Order (Purchaser, Date ′ Contact ′工 tems) > く ! ELEMENT く ! ELEMENT く ! ELEMENT く ! ELEMENT く ! ELEMENT く ! ELEMENT く ! ELEMENT く ! ELEMENT く !ATTL 工 ST く ! ELEMENT く ! ELEMENT く ! ELEMENT くエ tems> Quantity ( #PCDATA) > Price (#PCDATA) > く ! ELEMENT Nounyu ( #PCDATA) > Product ( #PCDATA) > 工亡 e 爪 Divide CDATA # 工 MPL 工 ED> 工し要素の D 土 vide 属性を 追加 Nounyu 要素の定義 マ N 。 yu 要素、 Photo 要素、 D ⅳ土 de 属性を加えた 0rder. ーのェ te Ⅲ s 要素 くエし e Ⅲ Divide=ny" <Product> 工ンシン </Product> く P れ 0 し 0 工 MG="engine. jpgn / > <Nounyu>45 く / NounY1-I> <Price>30000</Price> <QuantitY>100 く /QuantitY> く / 工し em > くエし e Ⅲ Divide="yn > く Produc し > ボディ </Product> く Pho セ 0 工 MG=Rbody. jpg" / > 144 追加された Divide 属性 追加された Ph 。む 0 要素 追加された Nounyu 要素
4 ー 10 工ンティティの 利用 102 & 工ンティティ名ー 工ンティティを参照するときは、次のようにエンティティ名を指定します。 く ! ENT ェ TY 工ンティティ名“置き換える文字列 " > です。一般工ンティティは、以下のように指定します。 ンティティといいます。長い文字列に短いエンティティ名をつけて扱うと便利 字列を定義してその文字列に名前をつける役割を果たす工ンティティを一般工 ことで、もとの文字列に展開することができます。このように、ユーザーが文 ( 短縮名 ) を宣言しておき、 XML 文書から対応するエンティティ名を参照する 長い文字列などを利用するときは、 DTD 中でその文字列とエンティティ名 ・文字列の置き換え れていて、この名前をもとに、実際のエンティティを参照します。 のファイルを指します。工ンティティには、名前 ( 工ンティティ名 ) がつけら XML では直接扱えないようなグラフィックデータやマルチメディアデータなど 納されている情報の記憶単位のことです。具体的には、ファイルや文字列、 工ンティティ (entity) は「実体」とも訳されますが、コンピュータ上に格 ・エンティティとは を別のプログラムから実行したりするときに、エンティティという概念を用います。 り、外部ファイルを XML 文書から参照したり、 XML では直接扱えないようなデータ XML では、文書中で繰り返しあらわれる文字列を置換文字列に置き換えて使った
DTD の書き方入門 Chapter ・属性を宣言する ~ ATTL ェ ST 言中に詳細な属性情報を記述します。属性の宣言には ATTL 工 ST 宣言を使い、 属性の記述は、 DTD 中で、属性設定の対象とする要素名を指定し、同じ宣 の次の行に追加されたく !ATTL 工 ST で始まる行カ嘱性の定義です。 したがって、発注内容要素に対する DTD は、次のようになります。発注要素 く !ATTL ェ ST 要素名属性名データ型省略指定 > 以下のように指定します。 く !ATTL 工 ST 発ラ主緊急 . 度 CDATA # 工 MPL 工 ED > く ! ELEMENT 発注 ( 発注内容 ) + > く ! DOCTYPE 発注書 [ 以下のものが指定できます。 0 属性のデータ型 要素名属性名データ型 属性のデータ型は、属性値のデータ型を指定するものです。ァータ型には、 省略指定 マ属性のデータ型 ( 一部省略 ) データ型の指定 CDATA 1 TOKEN 、 NMTOKENS ENT 工 TY 、 ENT 工 T 工 ES 属性の値として許されるデータ 文字データ 数値 (NMTOKENS は、複数の数値 ) 97 る。工ンティティについては、 P. 102 参照 TY に亘言された参照名を経て指定内容が参照され ENT 工 TY で宣言された参照名。実際の参照は ENT 工ー
・省略指定 属性値の指定では、省略を許す指定や省略時の暗黙値の指定ができます。省 略指定には、以下の 3 種類があります。 マ省略指定 指定 #REQU 工 RED # 工 MPL 工 ED #F 工 XED ・暗黙値 意味 属性値を必ず指定 XML 文書中で他の値を設定するとエラーになる DTD 中で指定された値が指定値と解釈される。 る 属性値は省略可能。省略すると既定の値と解釈され 属性の値として特定の値を暗黙値として設定できます。暗黙値が設定されて いると、省略時に自動的に属性値の解釈が行われます。次に属性の暗黙値とし 98 重要度 1 Ⅲ TOK # REQU 工 RERED> く !ATTL 工 ST 発ラ主緊急度 CDATA # 工 MPL 工 ED く ! ELEMENT 発注 ( 発注内容 ) + > < ! DOCTYPE 発ラ主書 [ に新しい属性「重要度」を追加してみましよう。 属性は、同一の要素に対して複数個指定することができます。先の例にさら ・複数の属性指定 く !ATTL 工 ST 要素名 . 属 / 生名 CDATA nnum"> て、 n Ⅷを設定した例を示します。
DTD の書き方入門 Chapter この NOTATION に対応する属性宣言は次のようにします。 <!ATTL 工 ST 図形式 (cgmldxf)> マ XML で直接扱えないデータは外部のプログラムを通して処理 この cgm ファイルを処理するアプリケーションやコマンドなどの場所 "http: //www.gihyo . CO . jp/grapihics/cgm"> く !NOTAT 工 ON cgm PUBL 工 C n—//G 工 H/NOTAT 工 ON cgm view//EN" また、 NOTAT 工 ON は PUBL 工 c で宣言することもできます。 < 図形式 ="cgm"/> んで指定します。 XML 文書中では、く図 > タグ中でグラフィックスの形式を属性リストから選 これ 開けないや XML/S—サー 僕なら 開けるよ 外部プログラム XML で直接扱えないデータの情報はバーサーから外部のプログラムに 渡される。実際にデータを処理するのは外部のプログラム 107
XML では、ある DTD 部に条件指定を行い、その部分を有効にしたり、無効 にしたりできます。また、通常は特別な意味で解釈される XML の予約語を、文字 そのものとして扱うように DTD のなかで部分指定することもできます。 4 ー 9 条件付きセクションと C ロ ATA セクション ・ DTD 部を切り替えて使用 ~ ェ NCLUDE 、ェ GNO XML では、 DTD の部分プロックを無視したり、有効にしたりすることがで きます。このように条件指定された部分を条件付きセクションといい、 工 NCLUDE または工 GNORE 疑似命令を使います。条件付きセクションを指定す ると、工 NCLUDE と工 GNORE を変えるだけで、 DTD 内のプロック記述を切り替 えることができます。 DTD の開発中や、テスト中に利用すると便利です。 く ! [ 工 NCLUDE [ DTD で有効にしたい内容 く ! [ 工 GNORE [ DTD で無視したい内容 この部分の記述が 有効になる この部分の記述は 無視される ( p. 102 参照 ) を利用 工 NCLUDE と工 GNORE の切り替えには、エンティティ宣言 すると、複数の箇所を一括して切り替えることができ、便利でしかも安全です。 OCDATA セクション ( 文字データセクション ) XML パーサーは、通常第」や「く」などを XML の予約語として解釈し、 特別な意味を持った語として処理します。そこで、これらの文字を特別な意味 100
DTD の書き方入門 / は & g です。参照が & で始まり、一で終わることに注意してください。 次の例で gh はエンティティ名、「技術評論社」はエンティティで、参照名 Chapter ・ XML 文書内で照指定 103 工ンティティ名をつけ、 %ADDRESS; の参照名で複数箇所から参照しています。 次の例では、 (z 工 P,COUNTRY,C 工 (Y) という内容モデルに ADDRESS という 工ンティティ名ー 定します。 パラメータ工ンティティを参照するときは、次のようにエンティティ名を指 く ! ENT ェ TY 宅工ンティティ名“内容モテルなど以 'D 宣言に出てくる文字列 " > します。 DTD では特に有効な機能です。以下のように、 パラメータ工ンティティを宣言 イティ宣言を変更するだけですべての参照個所が一括変更できます。複雑な を短いエンティティ名で置き換えておくと、 DTD を変更する場合にも、エンテ 同じパターンの内容モデルカ舸度も出てくる場合、内容モデルの長い記述内容 で、おもに一箇所で定義した内容を複数の個所で引用する場合に使われます。 バラメータ工ンティティは、 DTD の中だけで参照できる特別なエンティティ ・ DTD 内での定義内容の置き換え く ! ENT 工 TY gh 。技術評論社。 > ・ DTD でのエンティティ宣言 <company> 技評は技術評論社の略称ですく /company> ・ノ←サーによる置換後唳素内容 <company> 技評は &gh; の略称です </company>
リンクとポインタ Chapter 0 別のファイル所にリンクする 具体的にリンクの例を見てみましよう。リンク指定には、 A 要素を用います。 リンク指定された部分をアンカーといいます。なお、 <A href=" リンク . 先こ工” > で指定します。 リンク先は、 href 属性 ・ファイ ) 寺定の場所にリンクする また、ファイルの特定の場所に名前をつけて、そこにリンクすることもでき く /A> く A href=" # 名前。 > <A href= ”リンク . 先し沢工 # 名前・” > -V</A> 名前付けられたリンク先を指定するには、 URI に続けて # と名前を指定します。 く A name=" 名目リ " > ~ く / A > ます。名前付けには n e 属性を用います。 リンク先が同じファイルの リンク先が別のファイルの 157 ltems Section</A> <A href="http://www. gihyo. CO. jp/list. れし爪1# 工 TEM—START">Sale ・ほかのファイルにある工 T 4 ー START ヘリンク <A href="# 工 TEM_START">SaleS ltems Section</A> ・同じファイル内から工 TEM-START ヘリンク <A name=n 工 TEM_START"><HI> Sales ltems く / HI > く / A > ・く HI > SaIes ltems く / HI > 部分に工 T { ー ST 、 T という名前をつける 以下に、 HTML でのリンク例を示します。