参考
我理解根节点与文档节点相同,并且根元素与文档元素相同。我理解正确吗?
你可以在我的样品肥皂回复中确认吗
非常感谢 apaw
我有这个肥皂回应:
<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:searchResponse xmlns:ns2="ws.s.b.d.com">
<return>
... snipped ...
<businessName>GREEN NATURE WATER REFILLING STATION</businessName>
<province>PROVINCE AA</province>
<referenceNumber>12345678</referenceNumber>
... snipped ...
<status>Registered</status>
</return>
... snipped a lot of <return> ... </return> ...
<return>
... snipped ...
<businessName>129 GREEN AVENUE STORE</businessName>
<province>PROVINCE BB</province>
<referenceNumber>12345670</referenceNumber>
... snipped ...
<status>Registered</status>
</return>
</ns2:searchResponse>
</S:Body>
</S:Envelope>
答案 0 :(得分:1)
这是一个非常好的问题,往往是一个混乱的来源。
在XDM (XQuery/XPath Data Model)中,文档节点与元素节点不同:
文档节点封装整个XML文档,在语法中不可见。
元素节点在语法中可见,由尖括号括起。 S:因此,信封是一个元素节点。
如果使用 doc()函数或 parse-xml()解析文档,则返回的是文档节点(类型 document-node())和元素 S:Envelope (类型元素()或元素(S:Envelope) )将是此文档节点的子节点。我认为坚持用户定义函数的约定是明智的。
(注意:其他函数可能会为您提供没有顶级文档节点的树,在这种情况下,树称为片段而不是文档。)
存在许多不同的措辞,用于限定作为文档节点的子节点的元素节点。在XML infoset中, S:Envelop 将被称为文档元素,因为它是文档信息项下的顶级元素信息项。但根本身就是文档,而不是文档元素。
关于根节点是文档节点而文档元素的根元素的声明,这需要谨慎。如果树是片段,则根节点将不是文档节点(请参阅XDM规范的this part),而是元素节点。 根元素不是任何数据模型中的官方术语。
总之,要解决要点: