XML 中属性的名称->值对是否被视为由 XPATH 解释的两个节点?
以下文章 http://docs.oracle.com/javaee/1.4/ tutorial/doc/JAXPXSLT3.html 表示 XPATH 将以下内容视为节点:
- 根
- 元素
- 文本
- 注释
- 属性
- 处理指令
- 命名空间
我想知道的是属性“id”及其值是否存在“2”被认为是两个不同的节点?例如
或者文本节点只是“数据”http://www.w3.org/XML/Datamodel.html 元素之间?我的直觉告诉我,XPATH 会认为此示例中有 4 个节点 - 'name' 元素、属性 'id'、文本值 '2' 和文本值 'text'。
The following article http://docs.oracle.com/javaee/1.4/tutorial/doc/JAXPXSLT3.html says that XPATH considers the following to be nodes:
- Root
- Element
- Text
- Attribute
- Comment
- Processing instruction
- Namespace
What I want to know is whether an attribute 'id' and its value '2' are considered to be two different nodes? e.g. <name id="2">text</name>
Or are text nodes just the 'data' http://www.w3.org/XML/Datamodel.html between elements? My intuition tells me that XPATH would consider there to be 4 nodes in this example - the 'name' element, the attribute 'id' the text value '2' and the text value 'text'.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
属性节点具有名称和值。它们不是单独的节点。以下 XML:
...代表三个节点: 1) 名称为
name
的元素; 2)name
的子节点,为文本节点; 3) 名称为id
、值为2
的属性节点。来自规范:
后来:
An attribute node has a name and a value. They are not separate nodes. The following XML:
...represents three nodes: 1) an element whose name is
name
; 2) a child node ofname
that is a text node; 3) an attribute node whose name isid
and whose value is2
.From the spec:
And later:
字符串值属性节点只是一个字符串——它本身不是节点。
节点的任何字符串值不应与任何文本节点混淆。文本节点是元素节点的子节点,它本身具有字符串值。
通常,文本节点的字符串值不是我们在 XML 文档序列化中看到的字符串,例如:
由
/*/text() 选择的文本节点的字符串值
不是“M & M”
,它是:The string value of an attribute node is just a string -- it isn't a node itself.
Any string value of a node should not be confused with any text node. A text node is a child of an element node and it itself has a string value.
Often the string value of a text node isn't the string we are presented with in the serialization of an XML document, for example in:
the string value of the text node selected by
/*/text()
is not"M & M"
, it is: