要約
XML における実体(エンティティ、entity)の宣言(declaration)を表わすクラス。
DTD(REXML::DocType)内の実体宣言に対応するものです。
require 'rexml/document'
doc = REXML::Document.new(<<EOS)
<!DOCTYPE document [
<!ENTITY f "foo bar baz">
<!ENTITY x SYSTEM "x.txt">
<!ENTITY y SYSTEM "y.png" NDATA PNG>
<!ENTITY % z "zzz">
<!ENTITY zz "%z;%z;&f;">
]>
EOS
entities = doc.doctype.entities
# f は 内部実体名なので、external や ref は nil である
p entities["f"].name # => "f"
p entities["f"].value # => "foo bar baz"
p entities["f"].external # => nil
p entities["f"].ref # => nil
# x は 外部実体名なので value が nil で、
# external や ref が文字列を返してくる。
# しかし解析対象実体(parsed entity)なので ndata は nil を返す
p entities["x"].name # => "x"
p entities["x"].value # => nil
p entities["x"].external # => "SYSTEM"
p entities["x"].ref # => "x.txt"
p entities["x"].ndata # => nil
# y は解析対象外実体(unparsed entity)なので ndata が記法名を返す
p entities["y"].ndata # => "PNG"
# zz は中にパラメータ実体参照と内部実体参照を含むので、
# value, unnormalized, normalized がすべて異なる値を返す
p entities["zz"].value # => "zzzzzz&f;"
p entities["zz"].unnormalized # => "zzzzzzfoo bar baz"
p entities["zz"].normalized # => "%z;%z;&f;"
目次
- 特異メソッド
- インスタンスメソッド
継承しているメソッド
- REXML::Childから継承しているメソッド
- REXML::Nodeから継承しているメソッド
特異メソッド
matches?(string) -> bool
[permalink][rdoc][edit]-
string が実体宣言の文法に従う文字列であれば真を返します。
- [PARAM] string:
- 判定対象の文字列
require 'rexml/document' p REXML::Entity.matches?('<!ENTITY s "seal">') # => true p REXML::Entity.matches?('<!ENTITY % s "seal">') # => true p REXML::Entity.matches?('<!ELEMENT br EMPTY >') # => false
new(name, value, parent=nil, reference=false) -> REXML::Entity
[permalink][rdoc][edit]new(array) -> REXML::Entity
-
新たな Entity オブジェクトを生成して返します。
name, value で実体の名前とその値を定義します。 parent はその entity オブジェクトが属するノードを渡します。 reference でその実体宣言がパラメータ実体(parameter entity)かどうかを指定します。
このコンストラクタでは単純な内部実体(internal entity)宣言のみを実現できます。
それ以外の内容を保持する Entity オブジェクトが欲しい場合は、文書に適切な DTD を含めておいてそれを REXML::Document.new でパースするようにしてください。
配列を使うほうは rexml のパーサが内部的に利用するため通常は利用しません。
- [PARAM] name:
- 実体参照の名前
- [PARAM] value:
- 参照の値
- [PARAM] parent:
- 親ノード
- [PARAM] reference:
- パラメータ実体であるかどうかの真偽値
- [PARAM] array:
- 初期化のための配列
例
「>」「>」 の対応は以下のように実現されます。
REXML::Entity.new("gt", ">")
インスタンスメソッド
external -> String | nil
[permalink][rdoc][edit]-
実体が外部実体(external entity)宣言である場合は "SYSTEM" もしくは "PUBLIC" という文字列を返します。
内部実体(internal entity)宣言である場合には nil を返します。
name -> String
[permalink][rdoc][edit]-
実体の名前を返します。
ndata -> String | nil
[permalink][rdoc][edit]-
解析対象外実体(unparsed entity)宣言である場合にはその記法名(notation name)を返します。
それ以外の場合は nil を返します。
normalized -> String | nil
[permalink][rdoc][edit]-
正規化された(normalized)実体の値を返します。
すなわち、一切の実体参照を展開していない値を返します。
外部実体(external entity)宣言の場合は nil を返します。
[SEE_ALSO] REXML::Entity#value, REXML::Entity#unnormalized
pubid -> String | nil
[permalink][rdoc][edit]-
公開識別子(public identifier)を用いた外部実体宣言の場合は、その公開識別子を返します。
それ以外の場合は nil を返します。
ref -> String | nil
[permalink][rdoc][edit]-
外部実体(external entity)宣言の URI を返します。
内部実体宣言の場合は nil を返します。
to_s -> String
[permalink][rdoc][edit]-
実体宣言を文字列化したものを返します。
[SEE_ALSO] REXML::Entity#write
e = REXML::ENTITY.new("w", "wee"); p e.to_s # => "<!ENTITY w \"wee\">"
unnormalized -> String | nil
[permalink][rdoc][edit]-
非正規化された(unnormalized)実体の値を返します。
すなわち、self が属する DTD によってすべての実体参照(&ent; と %ent; の両方) を展開した文字列を返します。
外部実体(external entity)宣言の場合は nil を返します。
[SEE_ALSO] REXML::Entity#value, REXML::Entity#normalized
value -> String | nil
[permalink][rdoc][edit]-
実体の値を返します。
パラメータ実体参照(parameter entity)のみが展開され、そうでない実体参照(general entity)は展開されていないような値が返されます。
外部実体(external entity)宣言の場合は nil を返します。
[SEE_ALSO] REXML::Entity#unnormalized, REXML::Entity#normalized
write(out, indent = -1) -> ()
[permalink][rdoc][edit]-
実体宣言を文字列化したものを out に書き込みます。
- [PARAM] out:
- 出力先の IO オブジェクト
- [PARAM] indent:
- 利用されません。deprecated なパラメータです
[SEE_ALSO] REXML::Entity#to_s