首页 文章

XML中属性的name-> value对是否被认为是两个节点,由XPATH解释?

提问于
浏览
2

以下文章http://docs.oracle.com/javaee/1.4/tutorial/doc/JAXPXSLT3.html表示XPATH认为以下是节点:

  • Root

  • 元素

  • 文字

  • 属性

  • 评论

  • 处理指令

  • 命名空间

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

或者文本节点只是元素之间的'data' http://www.w3.org/XML/Datamodel.html?我的直觉告诉我XPATH会考虑在这个例子中有4个节点 - 'name'元素,属性'id'文本值'2'和文本值'text' .

2 回答

  • 1

    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 . 文本节点是元素节点的子节点,它本身具有字符串值 .

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

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

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

    M & M
    
  • 2

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

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

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

    来自the spec

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

    然后:

    属性节点具有字符串值 . 字符串值是XML Recommendation [XML]指定的规范化值 . 标准化值为零长度字符串的属性不会被特别处理:它会生成一个属性节点,其字符串值为零长度字符串 .

相关问题