小编Rol*_*man的帖子

什么是空元素?

根据XML规范,这是一个空元素的定义:

没有内容的元素被认为是空的.]空元素的表示是紧跟在结束标记之后的开始标记,或者是空元素标记.

(见:http://www.w3.org/TR/REC-xml/#NT-content)

现在,我对理解空元素标签没有任何问题:<i-am-empty/>并且不存在任何误解.但在我看来,标准在另一种情况下自相矛盾:一方面,它表示任何不带标签content都是空的,另一方面它表示这可以用一个开始标记表示,然后立即结束 -标签.但是如果我们看一下这个定义content:

[43] content ::= CharData? ((element | Reference | CDSect | PI | Comment) CharData?)*
Run Code Online (Sandbox Code Playgroud)

在我看来,它content由两个可选部分CharData?和一个组组成()*.但由于这两个部分都是可选的,因此它意味着没有任何东西(如没有字符)与此产品相匹配.因此,如果我试图将这个内容的定义与内部的任何内容相匹配,<am-i-empty-or-not></am-i-empty-or-not>我将获得积极的匹配.所以,一方面这是一个空标签,因为它是"一个开始标签后紧跟一个结束标签",另一方面它不是空的,因为在标签之间我可以积极地匹配生产规则的定义[对于内容,在这种情况下它包含内容,这意味着它不能为空.

任何人都能解释哪些规则优先吗?有没有人知道任何对此有不同意见的DOM或解析器实现?

xml dom

22
推荐指数
3
解决办法
5万
查看次数

如何在使用MongoDB聚合框架展开数组后投影数组索引

使用MongoDB聚合管道展开数组(http://docs.mongodb.org/manual/reference/operator/aggregation/unwind/#pipe._S_unwind)时是否可以访问数组索引?

例如,假设我在集合"c"中展开此文档:

{_id: 1, elements: ["a", "b", "c"]}
Run Code Online (Sandbox Code Playgroud)

然后这个操作:

db.c.aggregate([
 {$unwind: "$elements"}
])
Run Code Online (Sandbox Code Playgroud)

将返回文件的光标:

[
 {_id: 1, elements: "a"},
 {_id: 1, elements: "b"},
 {_id: 1, elements: "c"}
]
Run Code Online (Sandbox Code Playgroud)

我想能够弄清楚"a"有索引0,"b"有索引1而"c"在展开前在原始数组中有索引"2".

如何在展开操作中投影数组索引?

mongodb aggregation-framework

7
推荐指数
2
解决办法
5676
查看次数

标签 统计

aggregation-framework ×1

dom ×1

mongodb ×1

xml ×1