以下文章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'。
答案 0 :(得分:2)
属性节点具有名称和值。它们不是单独的节点。以下XML:
<name id="2">text</name>
...代表三个节点:1)名称为name
的元素; 2)name
的子节点,它是文本节点; 3)名称为id
且值为2
的属性节点。
来自the spec:
属性节点具有扩展名和字符串值。
后来:
属性节点具有字符串值。字符串值是 XML Recommendation [XML]指定的标准化值。一个 标准化值为零长度字符串的属性不是 特别处理:它产生一个属性节点,其字符串值 是一个零长度字符串。
答案 1 :(得分:1)
属性节点的string value只是一个字符串 - 它本身不是节点。
不应将节点的任何字符串值与任何文本节点混淆。文本节点是元素节点的子节点,它本身具有字符串值。
文本节点的字符串值通常不是我们在XML文档序列化中呈现的字符串,例如:
<t>M & M</t>
/*/text()
选择的文字节点的字符串值不是"M & M"
,而是:
M & M