2015-06-18 61 views
0

如果我们假设我们在下面显示了XML,match =“/”会返回什么结果? 据我可以告诉它返回一个假想的顶级节点,其中有<people>元素作为它的孩子。什么是这个节点的那些7种类型的节点之间的类型: 元素,属性,文本,命名空间,处理指令,注释,文档节点什么匹配=“/”实际返回?

的test.xml

<people> 

    <person> 
    <name> John </name> 
    <age> 50 </age> 
    </person> 

</people> 
+0

你从哪里得到“7种节点”列表? –

+0

从最终的www参考http://www.w3schools.com/xpath/xpath_nodes.asp – ivoronline

+0

“*最终www参考*”我希望你在开玩笑。 –

回答

0

让我们用这个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> 

换句话说:根节点的子节点可以是任意数量的注释和处理指令,也可以是单个根元素。在这个级别上可能没有文字和属性。

0

的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.w3.org/TR/REC-xml/#dt-docent

+0

非常感谢大家的帮助。官方文档对我来说很复杂,但我发现这个http://www.dpawson.co.uk/xsl/sect2/root.html试图解释普通英语中的根节点。 – ivoronline

0

匹配模式不会'返回'任何东西。您将模式应用于节点,并且它与该节点匹配或不匹配。在模式“/”的情况下,当且仅当节点是文档节点时,才匹配节点。 (注意:规范之间的术语有一些变化,XPath 2.0和DOM都谈论“文档节点”,他们基本上以相同的方式使用术语。XPath 1.0有相同的概念,但称它为但是一些规范,包括XML规范本身,使用术语“根”来描述最外面的元素。)

文档节点是虚构的,只是在没有对应于节点。但是,如果您认为标记是真实的并且节点是虚构的,那么您并不是真的在考虑XSLT。从XSLT的角度来看,树是真实的,它们是唯一与之交互的东西。

相关问题