XPath数据模型中的属性Node是什么?特定节点何时成为属性节点?
如果有人可以提供非常有帮助的属性节点的示例。
答案 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基础知识的更多信息。