本書が出版されるにあたってお世話になった方々,本書をお
買いあげていただいた方々,Web上あるいはメールで誤りを
指摘して頂いた方々に感謝します.
- P.4「処理命令(PI, Processing Instruction)」の最初の行
- 誤 : ?>で終る
- 正 : ?>で終わる
- P.5「要素(element)」の下からの5行目
- 誤 : 使わない方がいい。
- 正 : 使わない方がよい。
- p.32 「図2-1」
カレントノード「self」の左となりの丸の中の軸名が違
います.
- 誤 : following-sibling
- 正 : preceding-sibling
- 誤 : following
- 正 : preceding
- p.33 上から2行目
- 誤 : attribute:id
- 正 : attribute::id
- p.33 下から2行目
- 誤 : xpath == "/a/c/b/ancestor::c/attribute::number"
- 正 : xpath = "/a/c/b/ancestor::c/attribute::number"
- p.34 上から1行目
例を実行すると<c number='2' str='def'>だけが取得されるので,
# 1
# 2
は誤りで
# 2
だけとなります.
- p.37下から2行目
- p.38下から6-7行目
コメント中のXPathの説明,およびXPathの内容が間違っ
ています.本書中で対象としているREXML 2.4.2ではこ
の間違った記述でも望んだ結果(<b
number='3'/>)が返ってくるというバグがあります.
- 誤 : 祖先ノードが三つ以上あり、
- 正 : 祖先ノードが二つ以上あり、
- 誤 : count(ancestor::*) > 2
- 正 : count(ancestor::*) >= 2
- p.38下から7行目
- 誤 : xpath == ...
- 正 : xpath = ...
- p.38下から6行目
- 誤 : REXML::xpath...
- 正 : REXML::XPath...
- p.39上から6行目
XPath自体は間違ってはいませんが,REXML 3.1.4では
正しい結果を返さないというバグがあります.
- p.39上から13行目
XPath自体は間違ってはいませんが,REXML 3.1.4では
「in `expr': undefined method `children' for
nil:NilClass (NoMethodError)」という例外が発生する
というバグがあります.修正するパッチは[ruby-talk:231756]
に投稿してあります(ただし,添付ファイル付きのメー
ルが壊れてしまっています).
- p.39上から14行目
REXMLのバグで,実行結果はXPathの仕様とは異なる結果
が返ってきています.修正するパッチは[ruby-talk:231756]
に投稿してあります(ただし,添付ファイル付きのメー
ルが壊れてしまっています).
正確には3ノードが返ってきてそれぞれ以下のようにな
るべきです.
- TEXT1
- TEXT2
- <!--COMMENT-->
ルートノード直下のテキストノード(<a>から
<b number='1' ...の間の空白のみからなるテキスト
ノード)などは兄弟ノード(例えば...TEXT1</b>
から<c number='1'/>の間の空白のみからなるテ
キストノード)があるため,このXPathにはマッチしま
せん.
- p.39下から2行目
- 誤 : [3 div @number >= 1]
- 正 : [3 div @number <= 1]
- p.42「id」
- 誤 : id(オブジェト)
- 正 : id(オブジェクト)
- p.43「string」
- 誤 : string(オブジェト=.)
- 正 : string(オブジェクト=.)
- p.43「contains」の例の上から3行目
- 誤 : name(.)
- 正 : string(.)
- p.56「図3-1」
「カレントノード」とその下にある「要素ノード」を結ぶ線が離れ
ていますが、きちんと結ばれるべきです。
- p.109「リスト3-44」下から3行目
- 誤 : "xpath_to__to_elememnt__, [force=false]"
- 正 : "xpath_to__to_elememnt__ [force=false]"
- p.112上から16行目
- 誤 : 出力するものはUTF8-から変換
- 正 : 出力するものはUTF-8から変換
- p.115「リスト3-52」の次の行
- 誤 : Kernel. メソッド
- 正 : Kernel.'メソッド
- p.116「リスト3-53」の上から3行目
- 誤 : msg << "\t\tCommnet
- 正 : msg << "\t\tComment
- p.121上から4行目
- 誤 : Document.parse
- 正 : Document.parse_stream
- p.121「表4-1」DOCTYPE宣言に遭遇したイベントのメソッド
- 誤 : "PUBILC"
- 正 : "PUBLIC"
- p.144の二番目の段落の二行目
- 誤 : :documnet_end
- 正 : :document_end
- p.157の真ん中のリスト
- 誤 :
<value><boolean>1</boolean</value>
- 正 :
<value><boolean>1</boolean></value>
- p.160上から12行目
- 誤 : WEBrick用のサーバ
- 正 : WEBrick用のサーブレット
- p.161下から7行目
- 誤 : XMLRPC::WEBricServlet.new
- 正 : XMLRPC::WEBrickServlet.new
- p.165(リストを除いて)最初の行
- 誤 : "before.b"
- 正 : "before.a"
- p.186 *1
- 誤 : imb.comprojects
- 正 : imb.com/projects
- p.217の最初の行
- 誤 : driver.wetWireDumpDev(ary)
- 正 : driver.setWireDumpDev(ary)
- p.220の下のリストの最初の行
- 誤 :
parent = SOAP::SOAPElemnt.new(nil, "parent")
- 正 :
parent = SOAP::SOAPElement.new(nil, "parent")
- p.227最初の段落
SOAP::Processor.marshalメソッドとSOAP::Processor.unmarshalメ
ソッドを逆に書いてあります.正しくは以下のようになります.
- SOAPメッセージ=>SOAPでの型情報付きのオブジェクト
- SOAP::Processor.unmarshal
- SOAPでの型情報付きのオブジェクト=>SOAPメッセージ
- p.234「図A-1」
REXML::ElementとREXML::Elemenetsが逆に書かれています.
- p.246「REXML:Element#has_attributes?」の例
以下のように修正します.
e = REXML::Element.new("a")
puts e.has_attributes?
# false
puts e.add_attribute(REXML::Attribute.new("attr1", "val1"))
# <a attr1='val1'/>
puts e.add_attribute("attr2", "val2")
# <a attr1='val1' attr2='val2'/>
puts e.delete_attribute("attr1")
# <a attr2='val2'/>
puts e
# <a attr2='val2'/>
puts e.has_attributes?
# true
p e.add_attributes({"attr3" => "val3", "attr4" => "attr4"})
# {"attr3"=>"val3", "attr4"=>"attr4"}
puts e.delete_attribute("attr3")
# <a attr2='val2' attr4='attr4'/>
- 第2章中での展開名の記述について
展開名はローカル部分とネームスペース名(URI)のペアのことで、
文字列を表しているわけではありませんが、文字列であるかのよう
な記述をしている部分があります。
- p.24「要素ノード」の「展開名」
- p.25「属性ノード」の「展開名」
- p.25「ネームスペースノード」の「展開名」
- 誤 :
接頭辞。デフォルトネームスペースは空文字列となる。
- 正 :
接頭辞とネームスペース名のセット。デフォルトネー
ムスペースの場合は接頭辞は空文字列として扱われる。ネー
ムスペース名は常にnull。
- 補足 : 接頭辞がローカル部分
- p.25「処理命令ノード」の「展開名」
- 誤 : ターゲット名。
- 正 :
ターゲット名とネームスペース名のセット。ネームス
ペース名は常にnull。
- 補足 : ターゲット名がローカル部分
- p.31「ノードテスト」の「名前でテスト」2-3行目
- 誤 : 展開名にマッチするか
- 正 :
修飾された名前で特定される展開名と等しいか
- p.42「local-name」
- 誤 : ネームスペース名を除いた展開名
- 正 : ローカル部分
- p.42「name」
- 誤 : 展開名を返す
- 正 : 展開名を表現する修飾された名前を返す
- 第2章の例の中のコメント
- 誤 : 展開名
- 正 : 展開名を表現する修飾された名前
- 表記のゆれは以下のように修正します。
- 略歴
名字の読みが違います。