究竟匹配=" /"如果我们假设我们有下面显示的XML,则返回?
据我所知,它返回一些假想的顶级节点,其中<people>
元素作为其子元素。这7种类型的节点中此节点的类型是什么:
元素,属性,文本,命名空间,处理指令,注释,文档节点
的test.xml
<people>
<person>
<name> John </name>
<age> 50 </age>
</person>
</people>
答案 0 :(得分: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,将其定义为:
根节点是树的根。不会发生根节点 除了作为树的根。文档的元素节点 element是根节点的子节点。根节点也有as 子处理指令和注释节点进行处理 在prolog中和结束后发生的说明和注释 文件元素。
http://www.w3.org/TR/xpath/#root-node
在 XML 中,根节点正式定义为:
文档实体充当实体树的根和a XML处理器的起点。
答案 1 :(得分: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 -->
让我们创建一个XSLT文件,告诉我们处理过的XML文件的顶级结构:
<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>
换句话说:根节点的子节点可以是任意数量的注释和处理指令,以及单个根元素。这个级别可能没有文本也没有属性。
答案 2 :(得分:0)
匹配模式不会返回&#39;任何东西。您将模式应用于节点,它与该节点匹配或不匹配。对于模式&#34; /&#34;,当且仅当节点是文档节点时,它才匹配节点。
(注意:这里的规范之间有一些术语的变化.XPath 2.0和DOM都说&#34;文档节点&#34;,它们基本上以相同的方式使用该术语.XPath 1.0具有相同的概念,但称之为&#34;根节点&#34;。但是一些规范,包括XML规范本身,使用术语&#34; root&#34;来描述最外层的元素。)
文档节点仅在没有与节点对应的有形标记的意义上是虚构的。但是,如果您认为标记是真实的并且节点是虚构的,那么您并不是真的在想XSLT。从XSLT的角度来看,树是真实的,它们是您唯一的交互方式。