Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Français - Português - Русский
Scilabヘルプ >> XML Management > XML Objects

XML Objects

異なるのXMLオブジェクトのプロパティを記述する

説明

ノードおよびそのプロパティをアクセスおよび修正可能です.

XML文書

XML文書は以下の2つのプロパティを有します: root および url

  • root: 文書のルート要素で, XML要素です;

  • url: urlは文字列で, 存在する場合は文書のURL,未定義の場合は空文字列となります.

doc = xmlReadStr("<root><a att=""foo"" rib=""bar""><b>Hello</b></a></root>");
doc.root = doc.root.children(1);
xmlDump(doc)
doc.url = TMPDIR+"/foo.xml";
doc
xmlWrite(doc);
xmlDelete(doc);

XML要素

XML要素は以下の7つのプロパティを有します:

  • name: タグ名;

  • namespace: XML名前空間オブジェクト;

  • content: ノードの内容を表す文字列. 例えば,<A>hello <B>world</B> というノードA の内容は文字列 "hello world"となります.

  • type: ノードの型を表す文字列. 以下の値のどれかとなります: "XML_ELEMENT_NODE", "XML_ATTRIBUTE_NODE", "XML_TEXT_NODE", "XML_CDATA_SECTION_NODE", "XML_ENTITY_REF_NODE", "XML_ENTITY_NODE", "XML_PI_NODE", "XML_COMMENT_NODE", "XML_DOCUMENT_NODE", "XML_DOCUMENT_TYPE_NODE", "XML_DOCUMENT_FRAG_NODE", "XML_NOTATION_NODE", "XML_HTML_DOCUMENT_NODE", "XML_DTD_NODE", "XML_ELEMENT_DECL", "XML_ATTRIBUTE_DECL", "XML_ENTITY_DECL", "XML_NAMESPACE_DECL", "XML_XINCLUDE_START", "XML_XINCLUDE_END", "XML_DOCB_DOCUMENT_NODE".

  • parent: 親XML要素;

  • attributes: XML属性オブジェクトとして表したノード属性;

  • children: XMLノードリストオブジェクトとして表した子要素.

  • line: XML要素の線の定義.

s = "<root xmlns:bar=""http://www.scilab.org/"">"+..
    "<bar:a att=""foo"" rib=""bar"">"+..
    "<b>Hello</b><c> world</c></bar:a></root>"
doc = xmlReadStr(s);
first = doc.root.children(1);
b = first.children(1);
// "new_attribute"という名前の属性を新規に追加
first.attributes.new_attribute = "value";
// firstの子の名前空間を表示
first.namespace
// ノードの内容を表示
first.content
// bは親を有します
b.parent
// firstに子を追加できます.
first.children(3) = b
// 整数でない添字により挿入を行えます.
first.children(1.5) = "<d> Scilab</d>"
// firstの子が上の行で定義されています...
b.line
xmlDump(first)
xmlDelete(doc);

XML属性

XML属性は,属性の名前を属性の値にマップするハッシュテーブルの一種です. 属性の値は,このオブジェクトのフィールドとして属性の名前,または 1から属性の大きさまでの添字番号によりアクセスや修正が可能です.

s = "<root xmlns:bar=""http://www.scilab.org/"">"+..
    "<bar:a att=""foo"" rib=""bar"">"+..
    "<b>Hello</b><c> world</c></bar:a></root>"
doc = xmlReadStr(s);
first = doc.root.children(1);
// 属性を読み込みます
first.attributes.att
// 空の属性を設定します
first.attributes.att = "";
// 新しい属性を追加します
first.attributes.hello = "world";
// 添字を使用します
first.attributes(1) = "Bonjour";
first.attributes(1)
xmlDump(first)
xmlDelete(doc);

XML名前空間

XML名前空間は以下の2つのプロパティを有します: href および prefix

  • href: 名前空間hrefを表す文字列;

  • prefix: この名前空間で使用する接頭辞を表す文字列.

s = "<root xmlns:bar=""http://www.scilab.org/"">"+..
    "<bar:a att=""foo"" rib=""bar"">"+..
    "<b>Hello</b><c> world</c></bar:a></root>"
doc = xmlReadStr(s);
ns = doc.root.children(1).namespace;
ns.href
ns.prefix
xmlDelete(doc);

XMLノードリスト

XMLノードリストはある要素の子に番号を付ける際に使用される 型です.各要素は整数の添字によりアクセスできます. これはリストであるため,doubleの添字により, 新しい要素をこのリストに挿入することができます.

リストの大きさは,'size'フィールドにより取得できます.

リストの各ノードの名前または内容は'name'または'content'フィールド により取得できます.

doc = xmlReadStr("<root><a>Hello</a><b> world</b></root>");
c = doc.root.children;
// 2つの要素があることが確認できます
c.size
// 最初の要素を読み込みます
xmlDump(c(1))
// 特定の要素を他の要素で置換します
c(1) = "<c>Hello</c>"
// 新しい要素を最初の要素と二番目の要素の間に挿入します
c(1.5) = "<d> Scilab</d>" // 1.5 or 1.234...
// 新しい要素を末尾またはリストの先頭に挿入します
c(0) = "<e>Head </e>"
c(217) = "<f> Tail</f>"
xmlDump(c)
// ノードの名前を取得します
c.name
// ノードの内容を取得します
c.content
xmlDelete(doc);

XML XPath結果セット

XMLノードセットは,XPathクエリから返されたオブジェクトです. 新しい要素を挿入したり,既存の要素を置換することはできません. できることは整数の添字により要素を取得することのみです.

このセットの大きさは'size'フィールドにより取得できます.

doc = xmlReadStr("<root><a><b>Hello</b></a><a>World</a></root>");
s = xmlXPath(doc, "//a")
s.size
s(1).content
s(2).content
// または ...
s.content
xmlDelete(doc);

XML検証ファイル

XML検証ファイルは文書の検証に使用されるオブジェクトです. DTD, Relax NGまたは schemaにより検証できます.

doc = xmlRead("SCI/modules/xml/tests/unit_tests/library.xml");
dtd = xmlDTD("SCI/modules/xml/tests/unit_tests/library.dtd");
schema = xmlSchema("SCI/modules/xml/tests/unit_tests/library.xsd");
rng = xmlRelaxNG("SCI/modules/xml/tests/unit_tests/library.rng");
// 検証
xmlValidate(doc, dtd);
xmlValidate(doc, rng);
xmlValidate(doc, schema);
xmlDelete("all");

参照

  • xmlRead — ローカルまたはリモートファイルからXMLストリームを読み込む
  • xmlReadStr — 文字列からXMLツリーを読み込む
  • xmlElement — XML要素を新規に作成する
  • xmlDocument — XML文書を新規に作成
  • xmlNs — XML名前空間を新規に作成する
  • xmlDTD — XML DTDオブジェクトを作成
  • xmlSchema — XMLスキーマオブジェクトを作成する
  • xmlRelaxNG — XML Relax NGオブジェクトを作成する

履歴

バージョン記述
5.4.0 XMLモジュールが導入されました.
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Thu Feb 14 15:02:14 CET 2019