2

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

  • 元素
  • 文本
  • 属性
  • 评论
  • 加工指令
  • 命名空间

我想知道的是属性“id”及其值“2”是否被认为是两个不同的节点?例如<name id="2">text</name>

还是文本节点只是元素之间的“数据” http://www.w3.org/XML/Datamodel.html ?我的直觉告诉我,XPATH 会认为在这个例子中有 4 个节点——“name”元素、属性“id”、文本值“2”和文本值“text”。

4

2 回答 2

2

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

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

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

规格

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

然后:

属性节点有一个字符串值。string-value 是由 XML Recommendation [XML] 指定的规范化值。规范化值为零长度字符串的属性不会被特殊处理:它会产生一个字符串值为零长度字符串的属性节点。

于 2011-12-19T21:43:24.823 回答
1

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

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

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

<t>M &amp; M</t>

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

M & M
于 2011-12-19T21:53:52.650 回答