Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 在根节点之前选择comment()_Xml_Xpath_Xquery_Exist Db - Fatal编程技术网

Xml 在根节点之前选择comment()

Xml 在根节点之前选择comment(),xml,xpath,xquery,exist-db,Xml,Xpath,Xquery,Exist Db,这是一种由分心变成的痴迷。我在eXist中胡闹,决定从文档中获取评论。唯一的问题是我们的大多数注释都出现在根节点之前。让我们举个例子 XML XQUERY 现在我已经试过几种方法了。祖先::注释,前面的同级,甚至集合$col//comment。我可以在氧气中找到注释,只需//注释即可 我真的不需要为任何具体的事情,但它困扰着我,我不能找出它 注释不是文档的后代;它是文档节点的子节点,文档节点是的前一个同级节点,因此前一个同级节点::comment应该可以工作 例如,这就是从头开始构建文档的方式:

这是一种由分心变成的痴迷。我在eXist中胡闹,决定从文档中获取评论。唯一的问题是我们的大多数注释都出现在根节点之前。让我们举个例子

XML XQUERY 现在我已经试过几种方法了。祖先::注释,前面的同级,甚至集合$col//comment。我可以在氧气中找到注释,只需//注释即可


我真的不需要为任何具体的事情,但它困扰着我,我不能找出它

注释不是文档的后代;它是文档节点的子节点,文档节点是的前一个同级节点,因此前一个同级节点::comment应该可以工作

例如,这就是从头开始构建文档的方式:

document {(
  <!-- DOCUMENT REVIEWED -->,
  <doc id="test">
    <figure>
      <figcaption>caption</figcaption>
    </figure>
    <p>blah blah blah</p>
  </doc>
)}
或者,如果上下文为:

在eXist中,我认为集合应该返回一个文档节点,因此您可以直接迭代该节点,而不是选择根元素:

for $doc-node in collection($col)
let $comment := $doc-node/comment()
let $id := $doc-node/doc/@id
let $figures := count($doc//figures)
return ...

看,我也这么认为,但它不起作用。这就是我问的原因。感谢您尝试+1。我想知道这是否是目前存在的问题。也许我应该查一下他们的邮件列表。我在BaseX中运行了你的代码,使用let$comments:=$doc/前面的sibling::comment,它运行得很好。所以,它可能确实是通过特定的方式存在的。@matchew这可能是eXist中的一个bug。这似乎不太可能,因为我认为这在规范中定义得很好。但我也在MarkLogic中运行了它,没有同样的问题。在他们的名单上发帖是个好主意……肯定有人以前遇到过这个问题。现在看来这是一个存在的问题。我很高兴我先在这里问了这个问题,但这似乎是一个好问题,我在其他地方没有看到过。谢谢eXist的哪个版本?3.1版本声明表明这是源代码开发分支的一个相对较新的版本。另外,您是如何在eXist中运行此查询的?使用eXide?我可以在eXist的当前开发分支中确认意外结果。我已经在eXist的跟踪器上提交了一个问题:。嗨@joewiz,通常我使用的是restxq,但在这个例子中,是的eXide。此外,这是来自开发部门的。我上一次更新它是在上周,我相信。我会尝试用解决该问题所采取的任何措施来更新该线程,但如果您有github帐户,您也可以订阅该问题,因此如果问题被更新,您会立即收到通知。谢谢你的报告。
document {(
  <!-- DOCUMENT REVIEWED -->,
  <doc id="test">
    <figure>
      <figcaption>caption</figcaption>
    </figure>
    <p>blah blah blah</p>
  </doc>
)}
doc('my-doc.xml')/comment()
doc('my-doc.xml')/doc/preceding-sibling::comment()
for $doc-node in collection($col)
let $comment := $doc-node/comment()
let $id := $doc-node/doc/@id
let $figures := count($doc//figures)
return ...