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;"
matches?(string) -> bool
[permalink][rdoc]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]new(array) -> REXML::Entity
新たな Entity オブジェクトを生成して返します。
name, value で実体の名前とその値を定義します。 parent はその entity オブジェクトが属するノードを渡します。 reference でその実体宣言がパラメータ実体(parameter entity)かどうかを指定します。
このコンストラクタでは単純な内部実体(internal entity)宣言のみを実現できます。
それ以外の内容を保持する Entity オブジェクトが欲しい場合は、文書に適切な DTD を含めておいてそれを REXML::Document.new でパースするようにしてください。
配列を使うほうは rexml のパーサが内部的に利用するため通常は利用しません。
「>」「>」 の対応は以下のように実現されます。
REXML::Entity.new("gt", ">")
external -> String | nil
[permalink][rdoc]実体が外部実体(external entity)宣言である場合は "SYSTEM" もしくは "PUBLIC" という文字列を返します。
内部実体(internal entity)宣言である場合には nil を返します。
name -> String
[permalink][rdoc]実体の名前を返します。
ndata -> String | nil
[permalink][rdoc]解析対象外実体(unparsed entity)宣言である場合にはその記法名(notation name)を返します。
それ以外の場合は nil を返します。
normalized -> String | nil
[permalink][rdoc]正規化された(normalized)実体の値を返します。
すなわち、一切の実体参照を展開していない値を返します。
外部実体(external enitity)宣言の場合は nil を返します。
[SEE_ALSO] REXML::Entity#value, REXML::Entity#unnormalized
pubid -> String | nil
[permalink][rdoc]公開識別子(public identifier)を用いた外部実体宣言の場合は、その公開識別子を返します。
それ以外の場合は nil を返します。
ref -> String | nil
[permalink][rdoc]外部実体(external entity)宣言の URI を返します。
内部実体宣言の場合は nil を返します。
to_s -> String
[permalink][rdoc]実体宣言を文字列化したものを返します。
[SEE_ALSO] REXML::Entity#write
e = REXML::ENTITY.new("w", "wee"); p e.to_s # => "<!ENTITY w \"wee\">"
unnormalized -> String | nil
[permalink][rdoc]非正規化された(unnormalized)実体の値を返します。
すなわち、self が属する DTD によってすべての実体参照(&ent; と %ent; の両方) を展開した文字列を返します。
外部実体(external enitity)宣言の場合は nil を返します。
[SEE_ALSO] REXML::Entity#value, REXML::Entity#normalized
value -> String | nil
[permalink][rdoc]実体の値を返します。
パラメータ実体参照(parameter entity)のみが展開され、そうでない実体参照(general entity)は展開されていないような値が返されます。
外部実体(external enitity)宣言の場合は nil を返します。
[SEE_ALSO] REXML::Entity#unnormalized, REXML::Entity#normalized
write(out, indent = -1) -> ()
[permalink][rdoc]実体宣言を文字列化したものを out に書き込みます。
[SEE_ALSO] REXML::Entity#to_s