首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在XSLT中限制祖先搜索的范围?

如何在XSLT中限制祖先搜索的范围?
EN

Stack Overflow用户
提问于 2017-06-06 06:28:16
回答 1查看 81关注 0票数 2

示例输入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<body>
  <ul>
     <li>
       <p>Some text with <b><i><span style="color:red">formatting</span></i></b></p>
   </li>
</ul>
</body>

“内联”元素是bispan

假设上下文节点是示例中嵌套的span元素。

如何在不经过包含p元素的搜索的情况下获取所有祖先内联元素?

表达式ancestor-or-self::*[self::b | self::i | self::span]实际上应该工作,因为不可能有包含‘块’级元素的祖先内联元素,例如pul等。

但是,我想知道是否可以避免一些性能成本,因为我认为搜索将在包含p元素之后继续进行。有什么办法可以避免吗?

编辑

这就是我到目前为止想出的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<xsl:function name="my:getInlineSeq" as="element() *">
    <xsl:param name="pElem" as="element()" />
    <xsl:if test="$pElem[self::b | self::i | self::span]">
        <xsl:sequence select="my:getInlineSeq($pElem/parent::*)" />
        <xsl:sequence select="$pElem" />
    </xsl:if>
</xsl:function>

但是,我不确定是否有更好或“标准”的方法来解决这个问题。

注意:代码中的$pElem/parent::*将始终返回元素,因为内联项必须有块元素容器,如ph1等。此外,假设最初提供的$pElem参数始终是内联元素。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-06 07:39:35

使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<xsl:function name="mf:block" as="element()">
    <xsl:param name="inline" as="element()"/>
    <xsl:sequence select="$inline/ancestor::*[self::h1 | self::h2 | self::h3 | self::h4 | self::h5 | self::h6 | self::li | self::p][1]"/>
</xsl:function>

以及关于块元素和内联元素的假设,您可以在match="span | b | i"上下文中重写match="span | b | i"

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for $block in mf:block(.) return ancestor-or-self::*[. >> $block]

我认为(或者假设您使用<xsl:variable name="block" select="mf:block(.)"/>来实现ancestor-or-self::*[. >> $block] )。我不知道这是否比你的尝试更好。

尝试在http://xsltransform.net/3MvmrzK测试表达式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<xsl:template match="span | b | i">
    <xsl:copy>
        <xsl:apply-templates select="@*"/>
        <xsl:attribute name="inline-ancestor" select="ancestor-or-self::*[self::b | self::i | self::span]/name()"/>
        <xsl:attribute name="test-block" select="for $block in mf:block(.) return ancestor-or-self::*[. >> $block]/name()"/>
        <xsl:apply-templates/>
    </xsl:copy>
</xsl:template>

为内联元素提供相同的结果。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   <p>Some text with <b inline-ancestor="b" test-block="b"><i inline-ancestor="b i" test-block="b i"><span style="color:red" inline-ancestor="b i span" test-block="b i span">formatting</span></i></b></p>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44392770

复制
相关文章
限制QLineEdit的数值输入范围
QLineEdit *lineEdit = new QLineEdit(this);
bear_fish
2018/09/20
11.9K0
范围搜索(kDTree)
范围搜索是从拥有多个属性的报表集合中,寻找具有特定属性且位于指定范围内的元素,这类问题被称为范围搜索。
灯珑LoGin
2022/10/31
1.1K0
范围搜索(kDTree)
二叉搜索树的最近公共祖先
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”
木子星兮
2020/07/17
4360
Geohash之范围搜索
很多时候,我们都会遇到这样的需求:查找某个点周边多少距离的点。从本质来说,是一个缓冲区分析+空间查找,本文结合Geohash来实现类似的功能。
牛老师讲GIS
2018/10/23
1.5K0
Geohash之范围搜索
34. 搜索范围
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。
张伦聪zhangluncong
2022/10/26
3280
二叉搜索树的最近公共祖先
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”
_kyle
2020/12/17
7950
二叉搜索树的最近公共祖先
给定一棵二叉搜索树的先序遍历序列,要求你找出任意两结点的最近公共祖先结点(简称 LCA)。
叶茂林
2023/07/30
1830
二叉搜索树的公共祖先问题!
题目链接:https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-search-tree/
代码随想录
2021/09/08
3550
二叉搜索树的公共祖先问题!
如何在容器中避免CPU瓶颈限制
在 Uber,所有有状态的工作负载都运行在一个跨大型主机的通用容器化平台上。有状态工作负载包括 MySQL®、Apache Cassandra®、ElasticSearch®、Apache Kafka®、Apache HDFS™、Redis™、Docstore、Schemaless 等,并且在许多情况下,这些工作负载位于同一物理主机上。
从大数据到人工智能
2022/03/30
1.3K0
如何在容器中避免CPU瓶颈限制
如何在MySQL中搜索JSON数据
从MySQL 5.7.8开始,MySQL支持本机JSON数据类型。在本教程中,我们将学习如何在MySQL中搜索JSON数据。
Lemon黄
2020/04/14
5.4K0
Canvas动画限制图片运动范围
分享一个利用Canvas绘图的动画,并通过计算限制图片的运动范围,希望能够给大家一些启发。
越陌度阡
2020/11/26
6830
HDU 4778 内存搜索&amp;如压力
假设你可以成为魔法石拿着魔法石,次还这个人拿包。没变成则换人。 魔法石的个数就是获得分数,问两人最优的时候分差是多少。
全栈程序员站长
2022/07/06
3400
235. 二叉搜索树的最近公共祖先
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。(一个节点也可以是它自己的祖先) class Solution { public TreeNode lowestCommonAn
CaesarChang张旭
2021/06/22
1900
235. 二叉搜索树的最近公共祖先
如何在你的 wordpress 网站中添加搜索框
💂 个人网站:【海拥】【摸鱼游戏】【神级源码资源网站】 🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】 💅 想寻找共同学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 💬 免费且实用的 前端刷题(面经大全)网站:👉点击跳转到网站 博主前些天发现了一个巨牛巨好用的刷题网站,忍不住分享一下给大家,👉点击跳转到网站 如果你的主题不提供在你的 WordPress 网站中包含搜索框的功能,请按照以下步骤了解如何做到这一点: 转到你的仪表板并单击 Plugins 按钮。 转到添加新插件部分并搜
海拥
2022/11/29
4K0
如何在你的 wordpress 网站中添加搜索框
如何在 Python 中搜索和替换文件中的文本?
让我们看看如何在文本文件中搜索和替换文本。首先,我们创建一个文本文件,我们要在其中搜索和替换文本。将此文件设为 Haiyong.txt,内容如下:
海拥
2021/10/20
16.1K0
XSL、XSLT
(图片来自:https://www.w3school.com.cn/xsl/xsl_for_each.asp)
问问计算机
2021/05/08
1.8K0
XSL、XSLT
leetcode树之二叉搜索树的最近公共祖先
这里采用递归的思路,并利用二叉搜索树的特性来解题;针对root.val大于p.val及q.val的递归执行lowestCommonAncestor(root.left, p, q);针对root.val小于p.val及q.val的递归执行lowestCommonAncestor(root.right, p, q)。
code4it
2020/09/28
2940
LeetCode 235. 二叉搜索树的最近公共祖先
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”
Michael阿明
2022/11/26
2270
LeetCode 235. 二叉搜索树的最近公共祖先
点击加载更多

相似问题

在XSLT中按范围限制输出

20

如何在VI/VIM中限制搜索范围?

20

中断祖先- XSLT的内容

10

限制搜索范围jQuery

13

XSLT,获取其祖先节点

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文