匹配=" /"实际上回来?

时间:2015-06-18 15:40:06

标签: xslt

究竟匹配=&#34; /&#34;如果我们假设我们有下面显示的XML,则返回? 据我所知,它返回一些假想的顶级节点,其中<people>元素作为其子元素。这7种类型的节点中此节点的类型是什么: 元素,属性,文本,命名空间,处理指令,注释,文档节点

的test.xml

<people>

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

</people>

3 个答案:

答案 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处理器的起点。

http://www.w3.org/TR/REC-xml/#dt-docent

答案 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的角度来看,树是真实的,它们是您唯一的交互方式。