当前位置: 首页 > 知识库问答 >
问题:

xslt:有什么方法可以引用根节点吗?

柯波
2023-03-14

有没有办法从另一个上下文中访问ROOT节点?

上面的例子只是为了表明我的意图。在不使用“../../…”的情况下访问根_节点因为xml中的更改可能会破坏这种类型的选择器。

XSLT

<div class="column">
  <xsl:for-each select="languages/server/elem">
    <!-- Context is ELEM node -->
    <div>
      <!-- How can I get access to the ROOT_NODE ?-->
      <span class="text"><xsl:value-of select="ROOT_NODE/@title"/></span>
      <!-- Print ELEM text -->
      <span class="text"><xsl:value-of select="current()"/></span>
    </div>
  </xsl:for-each>
</div>

共有2个答案

岳出野
2023-03-14

根节点是XML树的根,是文档元素上方的空间。由于XML文档也可以将注释和处理指令作为顶级节点,因此您还可以选择它们。

http://www.w3.org/TR/1999/REC-xpath-19991116/#location-paths

/选择文档根(始终是文档元素的父级)

听起来好像你想引用“根元素”,也称为“文档元素”,这样你就可以得到它的标题的值。

您可以使用以下XPath选择它:

/*/@title
巫新知
2023-03-14

表达式“/”选择包含上下文节点的树的根处的文档节点。(1.0中的所有树都以文档节点为根。)

在XSLT 2.0中,root()选择包含上下文节点的树的根,无论该根是否是文档节点。

要获得主源文档的根,即使上下文节点是不同树中的节点,也需要绑定一个全局变量

<xsl:variable name="principal-root" select="/"/>

您可以在任何地方将其称为主根。

哦,正如Mads Hansen所指出的,如果“根节点”实际上是指最外层的元素节点,与文档节点不同,那么您通常会使用“/*”。

 类似资料:
  • 我是XSLT新手。我想根据其他子节点的条件更改XML中的根节点。但子节点始终保持不变。例如,我有以下XML: 我喜欢将XML更改为: 这意味着依赖于<代码> 我不想在每个<代码>

  • 问题内容: 我有一个使用XML和反射将 s 返回到另一个类的类。 通常,这些对象是外部对象的子字段,但有时我想即时生成它。我已经尝试过类似的方法,但无济于事。我相信这是因为Java不允许你访问进行反射的方法。 如果提供的方法失败,则失败。我可以通过制作方法来解决它,或者制作另一个类来派生它。 长话短说,我只是想知道是否存在一种通过反射访问方法的方法。 问题答案: 你可以使用反射调用私有方法。修改已

  • 我是xslt新手。 请参阅以下案例: 输入: 案例1: Xslt代码: 案例1的输出: 案例2: Xslt代码: 在情况2中,没有显示输出。我不明白为什么? 当它指向根节点Hello时。因此,在案例1中,当它执行时 这将打印整个xml。 案例2:执行时 它应该打印在下面。 有人能帮忙吗? 谢谢,Shashiraj NK

  • 材料设计非常强调“纸张”的隐喻。要做到这一点,阴影是必不可少的。由于材料设计是一种理念,而不是API(尽管它内置在L中),因此应该在任何地方(Windows窗体、HTML/CSS等)进行设计。如何在Android API 14到20中做到这一点? 请注意,对于圆形和其他非方形形状,预制PNG实际上并不实用。

  • 问题内容: 我不应该能够调用实例化对象的私有方法。我想知道为什么下面的代码有效。 我知道可以从类中访问私有方法。但是,如果类中的方法实例化了同一类的对象,则作用域规则是否不适用于该实例化的对象? 如本例所示,像main这样的静态方法可以访问类的非静态成员吗​​? 问题答案: 您的方法是的方法,因此可以调用的私有方法。 只是因为它是一个方法并不妨碍它表现得像为目的的方法,等等。 只是阻止的方法 等

  • 我有一个XML: 我想向根元素:/doc添加一个属性(名称空间),以便输出如下所示: 我尝试了三种xslt(跳过了默认的“复制所有”部分以减少问题的长度)。 xslt1:见下文,问题在于将空名称空间xmlns=”“添加到/doc的所有子节点(即:/doc/tag1和/doc/tag2) Xslt2:见下文,问题是“ns”被添加到根节点:和 xslt3:请参见下文,问题是报告了错误:未定义名称空间前