考虑以下两个 XML 文档:
一个.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