【发布时间】:2013-01-10 14:39:21
【问题描述】:
考虑以下两个 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
【问题讨论】:
标签: ruby xml nokogiri xml-namespaces xinclude