XML 中属性的名称->值对是否被视为由 XPATH 解释的两个节点?

发布于 2024-12-22 09:24:42 字数 566 浏览 2 评论 0原文

以下文章 http://docs.oracle.com/javaee/1.4/ tutorial/doc/JAXPXSLT3.html 表示 XPATH 将以下内容视为节点:

  • 元素
  • 文本
  • 注释
  • 属性
  • 处理指令
  • 命名空间

我想知道的是属性“id”及其值是否存在“2”被认为是两个不同的节点?例如 text

或者文本节点只是“数据”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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

回忆那么伤 2024-12-29 09:24:42

属性节点具有名称和值。它们不是单独的节点。以下 XML:

<name id="2">text</name>

...代表三个节点: 1) 名称为 name 的元素; 2) name 的子节点,为文本节点; 3) 名称为id、值为2的属性节点。

来自规范

属性节点具有扩展名称和字符串值。

后来:

属性节点有一个字符串值。字符串值是
XML 推荐标准 [XML] 指定的标准化值。一个
规范化值为零长度字符串的属性不是
特殊处理:它会产生一个属性节点,其字符串值
是一个零长度字符串。

An attribute node has a name and a value. They are not separate nodes. The following XML:

<name id="2">text</name>

...represents three nodes: 1) an element whose name is name; 2) a child node of name that is a text node; 3) an attribute node whose name is id and whose value is 2.

From the spec:

An attribute node has an expanded-name and a string-value.

And later:

An attribute node has a string-value. The string-value is the
normalized value as specified by the XML Recommendation [XML]. An
attribute whose normalized value is a zero-length string is not
treated specially: it results in an attribute node whose string-value
is a zero-length string.

姜生凉生 2024-12-29 09:24:42

字符串值属性节点只是一个字符串——它本身不是节点

节点的任何字符串值不应与任何文本节点混淆。文本节点是元素节点的子节点,它本身具有字符串值。

通常,文本节点的字符串值不是我们在 XML 文档序列化中看到的字符串,例如:

<t>M & M</t>

/*/text() 选择的文本节点的字符串值 不是“M & M”,它是:

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:

<t>M & M</t>

the string value of the text node selected by /*/text() is not "M & M", it is:

M & M
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文