多くの XML ドキュメントは名前空間を持っています。NAMESPACE 句を使用すると、名前空間を COBOL で設定したり、識別したりできます。NAMESPACE 句はデータ記述項で指定します。NAMESPACE 句の例を次に示します。
0010 xd book-file. 0020 78 book-ns value "http://xml.microfocus.com/book.xsd". 0030 01 book identified by "book" 0040 namespace is book-ns. 0050 05 publisher pic x(80) 0060 identified by "name" 0070 namespace is 0080 "http://xml.microfocus.com/publisher.xsd". 0090 0100 05 author identified by "name" 0110 namespace is 0120 "http://xml.microfocus.com/author.xsd". 0130 10 author-first identified by "firstname" 0140 pic x(80). 0150 10 author-last identified by "lastname" 0160 pic x(80). 0170 05 title identified by "title" 0180 pic x(80).
0020 行目:
名前空間とその値を定義しています。
0030 ~ 0040 行目:
book-ns 内の値に等しい名前空間を持つデータ レコードを定義しています。
0050 ~ 0080 行目:
0050 05 publisher pic x(80) 0060 identified by "name" 0070 namespace is 0080 "http://xml.microfocus.com/publisher.xsd".
名前空間を特定の URI (Uniform Resource Identifier) に設定しています。URI とは Web 上でアクセスする特定の一点を意味し、この例では指定された XML スキーマ ファイルを指します。
0100 ~ 0120 行目:
名前空間を特定の URI に設定しています。
0130 ~ 0160 行目:
0130 10 author-first identified by "firstname" 0140 pic x(80). 0150 10 author-last identified by "lastname" 0160 pic x(80).
これらのデータ項目は author 集団に属しているため、author と同じ名前空間を使用します。
0170 ~ 0180 行目:
title は book 集団に属し、名前空間を指定されていないため、book と同じ名前空間を継承します。
入力時には、タグと名前空間の両方が、XML ストリーム内のタグおよび名前空間と一致する必要があります。出力時には、タグは指定された名前空間で修飾されます。例「NAMESPACE の使用」のコードは、次のような XML ストリームを生成します。
<?xml version="1.0" encoding="utf-8" ?> <book xmlns="http://xml.microfocus.com/book.xsd"> <name xmlns="http://xml.microfocus.com/publisher.xsd"> Just a publisher </name> <name xmlns="http://xml.microfocus.com/author.xsd"> <firstname>AuthorFirstname</firstname> <lastname>AuthorFirstname</lastname> </name> <title> This is the title </title> </book>
特定の NAMESPACE の値はデータ名に置き換えることが可能で、それによって XML 内の名前空間の動的な検出が容易になります。この場合は、入力では名前空間の照合は行われず、かわりに一致するタグの名前空間が、NAMESPACE で指定されるデータ項目内に追加されます。出力では、データ名で参照される名前空間の値が、出力タグの修飾に使用されます。たとえば、次のレコードと XML ストリーム入力を例に挙げます。まず、レコード例を示します。
xd generic-file. 01 generic-tag identified by generic-tag-name namespace is generic-tag-namespace. 05 generic-tag-name pic x(80). 05 generic-tag-namespace pic x(80). 05 generic-tag-value pic x(80).
続いて XML ストリーム入力の例を示します。
この場合は、generic-tag-name として「name」、generic-tag-namespace として「http://xml.microfocus.com/publisher.xsd」、generic-tag-value として「Just a publisher」が得られます。