如果我们假设我们在下面显示了XML,match =“/”会返回什么结果? 据我可以告诉它返回一个假想的顶级节点,其中有<people>
元素作为它的孩子。什么是这个节点的那些7种类型的节点之间的类型: 元素,属性,文本,命名空间,处理指令,注释,文档节点什么匹配=“/”实际返回?
的test.xml
<people>
<person>
<name> John </name>
<age> 50 </age>
</person>
</people>
如果我们假设我们在下面显示了XML,match =“/”会返回什么结果? 据我可以告诉它返回一个假想的顶级节点,其中有<people>
元素作为它的孩子。什么是这个节点的那些7种类型的节点之间的类型: 元素,属性,文本,命名空间,处理指令,注释,文档节点什么匹配=“/”实际返回?
的test.xml
<people>
<person>
<name> John </name>
<age> 50 </age>
</person>
</people>
让我们用这个XML例子:
<?xml version="1.0" encoding="UTF-8" ?>
<!-- comment1 -->
<?pi1?>
<!-- comment2 -->
<people>
<person>
<name>John</name>
<age>50</age>
</person>
</people>
<!-- comment3 -->
<?pi2?>
<!-- comment4 -->
而且我们创建通知我们该处理XML文件的顶层结构的XSLT文件:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<nodes><xsl:apply-templates/></nodes>
</xsl:template>
<xsl:template match="comment()">
<node>comment()</node>
</xsl:template>
<xsl:template match="processing-instruction()">
<node>processing-instruction()</node>
</xsl:template>
<xsl:template match="text()">
<node>text()</node>
</xsl:template>
<xsl:template match="node()">
<node>node()</node>
</xsl:template>
</xsl:stylesheet>
我们得到这个:
<nodes>
<node>comment()</node>
<node>processing-instruction()</node>
<node>comment()</node>
<node>node()</node>
<node>comment()</node>
<node>processing-instruction()</node>
<node>comment()</node>
</nodes>
换句话说:根节点的子节点可以是任意数量的注释和处理指令,也可以是单个根元素。在这个级别上可能没有文字和属性。
在的XPath:
/选择文档根(它始终是 文档元素的父)
http://www.w3.org/TR/xpath/#location-paths
在XSLT:
/根节点
http://www.w3.org/TR/xslt/#patterns
匹配对于根节点你must refer to the XPath data model,其定义为的定义:
根节点是树的根。除了树的根之外,根节点不会发生 。文档 元素的元素节点是根节点的子节点。根节点还具有用于处理 子处理指令和注释节点以处理在文档元素的序言中和结束 中发生的指令和注释。
http://www.w3.org/TR/xpath/#root-node
在XML根节点正式地定义为:
文件实体充当实体树的根和 起点的XML处理器。
非常感谢大家的帮助。官方文档对我来说很复杂,但我发现这个http://www.dpawson.co.uk/xsl/sect2/root.html试图解释普通英语中的根节点。 – ivoronline
匹配模式不会'返回'任何东西。您将模式应用于节点,并且它与该节点匹配或不匹配。在模式“/”的情况下,当且仅当节点是文档节点时,才匹配节点。 (注意:规范之间的术语有一些变化,XPath 2.0和DOM都谈论“文档节点”,他们基本上以相同的方式使用术语。XPath 1.0有相同的概念,但称它为但是一些规范,包括XML规范本身,使用术语“根”来描述最外面的元素。)
文档节点是虚构的,只是在没有对应于节点。但是,如果您认为标记是真实的并且节点是虚构的,那么您并不是真的在考虑XSLT。从XSLT的角度来看,树是真实的,它们是唯一与之交互的东西。
你从哪里得到“7种节点”列表? –
从最终的www参考http://www.w3schools.com/xpath/xpath_nodes.asp – ivoronline
“*最终www参考*”我希望你在开玩笑。 –