根据定义,xml 值是一个字符串,还是曾经做过任何解释(忽略 xsd 类型或诸如
xs:element
之类的东西)?例如:
<Values>
<String>hi</String>
<Number>2</Number>
</Values>
Values/String
和 Values/Number
都会产生一个字符串值吗?如果答案是肯定的,那么 xpath 中唯一可能的值不是 string
、string[]
、node
和 node[]
吗?例如:
Values/String
--> 字符串Values
--> 节点(不是终端值)Values/*
--> 字符串[]Others/Other
--> 节点[](从下面)
<Others>
<Other><x>2</x></Other>
<Other><x>2</x></Other>
</Others>
最后,做
//x
会给我一个清单——["2", "2"]
。是否有可能获得带有 xpath 的列表列表,或者在 xml 中是不可能的?例如,在 json(支持列表类型)中,我可以执行以下等效操作来获取列表列表:
{"x": [{"y": [1,2]}, {"y": [3,4]}]}
x[*].y --> [[1,2], [3,4]]
gives an array of terminal value, which is an array here
在 XDM 数据模型(即 XML 的 XPath/XQuery 视图)中,元素的值始终是“未类型化”(本质上是字符串),除非您根据 XSD 模式验证数据。
XDM 允许节点序列或原子值序列,但不允许序列序列。
XDM 3.1 支持数组和序列,与序列不同的是,数组可以嵌套。引入这个主要是为了支持 JSON,在处理 XML 时没有用到。
问:根据定义,一个 xml 值是一个字符串吗?
答:是的。来自Xpath 文档
元素节点的字符串值是元素节点的所有文本节点后代的字符串值按文档顺序串联起来。
问:是否有可能使用 xpath 获得列表列表?
A:文本节点存在于一个元素或节点中,因此值的“列表”可以是具有相同名称和彼此兄弟的元素的值(请参阅以下兄弟轴,前面的兄弟轴)。
<Others>
<Other>
<x>2</x>
<x>2</x>
</Other>
<Other>
<x>2</x>
<x>2</x>
</Other>
</Others>
//*[x]
xpath 表达式将返回上面的 2 个“列表”,其中 Other
元素可以看作是括号,x
元素可以看作元素分隔符或逗号。
<Other><x>2</x><x>2</x></Other>
[ 2 , 2 ]
HTML 标记为列表提供特定元素
<ul>
<li>Esto</li>
<li>Lo otro</li>
<li>Lo de más allá</li>
</ul>