要約
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