通过xslt中的标签名称获取最近的祖先

Posted

技术标签:

【中文标题】通过xslt中的标签名称获取最近的祖先【英文标题】:Get nearest ancestor by tag name in xslt 【发布时间】:2019-01-10 11:51:45 【问题描述】:

我有以下结构的xml文件

<abc:element name="Super A">
    ...(some of other tags)
        <abc:element name="A">
           ...(some of other tags)
              <abc:element name="1A">
                    ...(some of other tags)
                        <abc:element name="ABC">
                            <abc:docs>
                                <abc:text> 
                                     Some text
                                </abc:text>
                            </abc:docs>
                        </abc:element>   
                    ...(some of other tags)
               </abc:element>
           ...(some of other tags)
        </abc:element>
    ...(some of other tags)
</abc:element>

我在 abc:element name="ABC"> 节点中,我只想获取带有标签 &lt;abc:element&gt; 的最近祖先。在上面的例子中是&lt;abc:element name="1A"&gt;。我尝试了一些方法,但都没有返回预期的结果。示例我尝试使用这个:&lt;xsl:value-of select="ancestor::abc:element[1]"/&gt; 但这不仅返回最近的所有元素。如何得到我预期的结果?在 xslt 中可以吗?

【问题讨论】:

您能否编辑您的帖子,向我们展示最小但完整的 XML、XSLT 示例、您想要的输出以及您收集到的关于您使用哪个软件运行它的信息?路径ancestor::abc:element[1] 乍一看是对的,不知道哪里出了问题。 您的问题无法从您的描述中重现:请参阅:xsltransform.hikmatu.com/bFDb2BS/1 所以您必须做一些与您描述的不同的事情。 我的例子中的属性“name”只是为了简化描述我的问题而添加的。我只知道我在&lt;abc:element&gt; 标签中,我想去最近的祖先标签&lt;abc:element&gt; MY例子中的name属性用来说明选择正确。 【参考方案1】:

尝试祖先::node()[1]/abc:element

【讨论】:

1.这将返回上下文节点。 2. 在提出解决方案之前,让我们看看实际问题是什么。

以上是关于通过xslt中的标签名称获取最近的祖先的主要内容,如果未能解决你的问题,请参考以下文章

如何获取具有相同名称的元素并根据 XSLT 中的子节点值对它们进行排序

jQuery中最近的祖先节点

获取最远的祖先节点 -Xpath, XSLT

从 json 文件中获取标签名称作为类中的变量

是否有 XSLT 元素名称?

XSLT:获取元素的前缀?