|
他のオブジェクトの表現
XMLObject式はXMLドキュメントの要素以外のもの(コメント,処理命令,宣言など)のコンテナとして使われます.これはドキュメント全体のコンテナとしても使用されます.この構造のシンタックスはXMLObject[object][data]という形です.ここでobject は表されるオブジェクトのタイプを表し,data はオブジェクトの詳細を指定するものです.第1引数として指定できるものには6種類のタイプのオブジェクトがあり,そのそれぞれがXMLドキュメントの特定のタイプのコンストラクトに相当します.
Declaration
XMLObject["Declaration"]式はXML宣言を表します.XML宣言は通常XMLドキュメントの冒頭に置かれます.これは次のようなシンタックスに従って使います.
XMLObject["Declaration"]["Version" "1.0", option value]
これには2つのオプションがあります.
-
"Standalone"はドキュメントが外部DTDを参照しているときは値"yes"を取り,それ以外の場合は"no"を取ります.
-
"Encoding"はドキュメントに使われる文字コードを指定します.すべてのコードがエキスポートできる訳ではありません.Mathematica がエキスポートできないコードが指定された場合はエラーメッセージが生じ,ドキュメントのコードが変更されます.
一般的なXML宣言を以下に示します.
<?xml version="1.0" encoding="ascii" standalone="yes"?>
これに対応するSymbolicXML式は次のようになります.
XMLObject["Declaration"]["Version" "1.0", "Encoding" "ascii" "Standalone" "Yes"]
Comment
XMLObject["Comment"]式はXMLのコメントを表すのに使われます.これは以下のようなシンタックスに従います.
XMLObject["comment"]["string"]
XMLコメントの例を下に挙げます.
<!-- Created on 3/6/02. -->
これはSymbolicXML式では次のようになります.
XMLObject["Comment"]["Created on 3/6/02."]
Document
XMLObjectの最も重要なものはXMLObject["Document"]です.これは以下のようなシンタックスで,ドキュメント全体のコンテナとして使われます.
XMLObject["Document"][{prolog}, document tree, {epilog}]
プロローグにはXMLObject["Declaration"]と,それに続いて処理命令とDTD宣言(ともにオプション)が含まれることがあります.エピローグには処理命令かコメントのどちらかが含まれます.
以下にXML宣言,コメント,1つの要素から構成される簡単なドキュメントの例を示します.
<?xml version='1.0'?>
<!--this is a sample file-->
<root/>
これに対応するSymbolicXML式は,次のようになります.
XMLObject["Document"][{XMLObject["Declaration"]["Version" "1.0"],XMLObject["Comment"]["this is a sample file"]},XMLElement["root",{},{}],{}]
XMLObject["Document"]の唯一のオプションは"Valid"です.このオプションはパーサによって自動的に設定されます.もしドキュメントのインポートの際にその妥当性が検証され,それが成功したら"Valid" True,失敗したら"Valid" FalseがXMLObject式に含まれます.検査されなかった場合は,このオプションはXMLObject式から除かれます.
Doctype
XMLObject["Doctype"]式は,XMLドキュメントタイプ宣言を表すのに使われます.シンタックスは以下のようになります.
XMLObject["Doctype"][name, option value]
これには3つのオプションがあります.
-
"System"はローカルファイルシステムのDTDを,相対パス名またはURIとして指定するときに使います.
-
"Public"は,公にDTDの認識に用いられる標準化された名前の指定に使います.
-
"Internal"は内部DTDサブセットを指定するときに使います.その値は内部DTDサブセットのデータを含む文字列です.
以下に形式化されたパブリック識別子の名前と内部DTDサブセットに基づくDTDの特定の場所の両方を含むDoctypeの宣言を示します.
<!DOCTYPE catalog PUBLIC "-//FOO//DTD catalog 1.1//EN" "www.foo.com/example/catalog.dtd"
[internal DTD stuff]>
これに対応するSymbolicXML式は,次のようになります.
XMLObject["Doctype"]["catalog", "Public" "-//FOO//DTD catalog 1.1//EN", "System" "www.foo.com/example/catalog.dtd", "InternalSubset" "internal DTD stuff"]
XMLのDoctype宣言の詳細はW3CによるXMLの仕様書をご覧ください.
ProcessingInstruction
XMLObject["ProcessingInstruction"]式はXML処理命令を表すのに使われます.これは以下のようなシンタックスになります.
XMLObject["ProcessingInstruction"][target string, optional data string]]
処理命令では属性のようなシンタックスが用いられるのが一般的です.このような疑似属性はパースされませんが,文字列として返されます.以下にスタイルシートを指定する処理命令を示します.
<?xml-stylesheet href="mystyle.css" type="text/css"?>
次はこれに対応するSymbolicXML式です.属性の値の周りのダブルクォートを,引数の周りのダブルクォートと区別するためにエスケープしていることにご注意ください.
XMLObject["ProcessingInstruction"]["xml-stylesheet",
"href=\"mystyle.css\" type=\"text/css\""]
CDATASection
XMLObject["CDATASection"]式はCDATAセクションを表すのに使われます.CDATAはCharacter DATAのW3Cによる略称です.CDATAセクションはXMLドキュメントの中で,"や<などの特殊文字をエスケープしなくてもよいようにするために,文字データのラッパーとして使われます.これらの文字は,通常それぞれ"e;と<のように記さなければなりません.CDATAセクションは,プログラムや数式のように多くのエスケープが必要になる文字データを囲むためにXMLで使われます.
以下にCDATAを含むXMLドキュメントの簡単なフラグメントを示します.
<![CDATA[ 5 < 7 << 2*10^123]]>
これに対応するSymbolicXML式は,次のようになります.
XMLObject["CDATASection"][" 5 < 7 << 2*10^123"]
デフォルトではCDATASectionオブジェクトラッパーはインポートの際に維持されず,CDATAセクションの内容だけが維持されます.CDATASectionラッパーを維持するためには,変換オプションを"PreserveCDATASections" Trueのように明示的に設定する必要があります.
XMLのインポートに対する変換オプションの詳細情報はインポート変換オプションをご覧ください.
|