【问题标题】:Deep XPATH accessing a temp. tree深度 XPATH 访问临时。树
【发布时间】:2014-06-03 21:29:25
【问题描述】:

我有这个变量$toc,整齐地包含一个临时变量。树:

<epub:nav hidden="hidden" epub:type="toc" id="toc">
    <h2 id="inhoud1">Inhoud</h2>
    <ol>
       <li>
          <a id="idh1x6x4" href="02-Vord.xhtml#idh1x6x4">Voodoo</a>
       </li>
       <li> 
etc.

执行&lt;xsl:sequence select="$toc"/&gt; 会按照广告输出树。

但是,我无法像使用

那样通过 XPATH 访问树中更深的内容
<xsl:sequence select="$toc//epub:nav/ol/li/a

它什么也不输出。 查看 XMLSpy 中的变量,我发现 $toc 已按原样填充:

toc  document
  *  document
     epub:nav  element
       hidden   attribute
       epub:type  attribute 
       id         attribute
     h2 element
     ol element

etc.

如何实现ol的XPATH访问,例如?

【问题讨论】:

  • 您是否在 XSLT 文件中注册了 epub 前缀?尝试使用本地名称选择它:$toc//*[local-name()='nav']/ol/li/a
  • 是的,它在
  • 在您的源代码中是否有一个 default 命名空间,位于这些无前缀标签的某个祖先(例如:xmlns="http://www.w3.org/1999/xhtml")?如果有,您要么必须在样式表中为它们声明前缀,要么在使用 XPath 选择或匹配的标签中使用 xpath-default-namespace="" 属性。
  • 您在问题中描述的问题不会出现在您提供的数据中。见xsltransform.net/948Fn5r。您需要提供有关您的问题的更多详细信息。
  • Erik,创建临时树的样式表,它是否可能在根元素或至少在 xsl:variable 元素的祖先上有一些 xmlns="http://www.w3.org/1999/xhtml" 声明?尝试使用&lt;xsl:variable name="toc" xmlns=""&gt;&lt;epub:nav hidden="hidden" epub:type="toc" id="toc"&gt;..&lt;/epub:nav&gt;。或者检查您是否在样式表的某处使用xpath-default-namespace,这样您的路径也可能具有与您想要的不同的含义。

标签: xml xpath xslt-2.0


【解决方案1】:

如果我记得你应该定义要遵​​循的 li 标签。

我不确定默认操作是否是获取第一个找到的标签。 尝试使用以下定义解析哪个“li”

<xsl:sequence select="$toc//epub:nav/ol/li[1]/a

【讨论】:

  • 不,这不是解决办法。
猜你喜欢
  • 2016-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-13
  • 2017-03-07
  • 1970-01-01
  • 1970-01-01
  • 2021-07-30
相关资源
最近更新 更多