次の2つのXMLドキュメントについて考えてみます。
a.xml
<a xmlns="foo" xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="b.xml" parse="xml" />
</a>
b.xml
<b>Hi Mom!</b>
<b>
要素を含めた後、foo
または名前空間なしで、要素はどの名前空間に含める必要がありますか?
Nokogiriを使用してXInclude処理で最初のドキュメントをロードすると、それ<b>
が親名前空間にあることを意味するテキスト表現が生成されますが、要素を検査すると、名前空間がないと主張し<b>
ます。
require 'nokogiri'
d = Nokogiri.XML(IO.read('a.xml'),&:xinclude)
puts d
#=> <?xml version="1.0"?>
#=> <a xmlns="foo" xmlns:xi="http://www.w3.org/2001/XInclude">
#=> <b>Hi Mom!</b>
#=> </a>
p d.root.namespace
#=> #<Nokogiri::XML::Namespace:0x3fd40c517de8 href="foo">
p d.root.elements.first.namespace
#=> nil