什么是属性Node

时间:2013-03-03 07:43:29

标签: xml

XPath数据模型中的属性Node是什么?特定节点何时成为属性节点?

如果有人可以提供非常有帮助的属性节点的示例。

3 个答案:

答案 0 :(得分:3)

它是一个保存所有匹配属性的属性值的节点。例如,如果您有以下标记:

<tag name="foo">
    <child>Bar</child>
</tag>

然后XPath查询//@name将返回“foo”作为结果。如果有 n 标记具有该属性,它将获取所有 n 属性的值。

属性节点本身由两部分组成 - 名称和值。因此,在上面的示例中,它将是name="foo"

答案 1 :(得分:2)

OP已在评论中澄清他的问题是:

是否可以创建没有任何父元素的属性节点?

是的,在XSLT 2.0中可以写:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:variable name="vAttr" as="attribute()">
  <xsl:attribute name="x">y</xsl:attribute>
 </xsl:variable>

 <xsl:template match="/*">
     <xsl:copy>
       <xsl:copy-of select="$vAttr"/>
     </xsl:copy>
 </xsl:template>
</xsl:stylesheet>

当此转换应用于以下XML文档时:

<t/>

产生了想要的正确结果

<t x="y"/>

因此,该属性被创建为没有任何父元素的独立项。然后,我们可以将它的实例复制到任何元素

答案 2 :(得分:1)

在下面的XML中bar="baz"是一个名称为bar且值为baz的属性:

<foo bar="baz"/>

属性不会“成为”属性;它或者是一个属性。

要在XPath中访问属性,您可以使用@(这只是attribute::轴的快捷方式):

/foo/@bar

另请参阅这些链接以获取有关XML基础知识的更多信息。