如何使用 XSLT 进行通配符匹配?

2023-12-20

如果我有这样的源文件:

<animal name="fred_monkey" />
<animal name="jim_banana" />
<animal name="joe_monkey" />

我可以在样式表中执行 XPATH 表达式,仅选择名称中带有字符串“_monkey”的动物吗?

例如通配符匹配“*_monkey”?


我可以在我的程序中执行 XPATH 表达式吗? 样式表仅选择 带有字符串“_monkey”的动物 他们的名字?

例如通配符匹配“*_monkey”?

这个通配符的意思是以以下结尾的字符串“_monkey”,不是一个字符串包含“_猴”。

Use:

//animal[ends-with(@name, '_monkey')]

上面使用了标准的XPath 2.0函数ends-with() http://www.w3.org/TR/xpath-functions/#func-ends-with因此仅在 XSLT 2.0 中可用。

在 XSLT 1.0 中使用以下 XPath 1.0 表达式:

//animal[substring(@name, string-length(@name) -6)='_monkey']

不建议使用//缩写,因为这可能会导致评估效率低下。只要 XML 文档的结构已知,就可以使用更具体的位置链测试。例如,如果animal元素都是 XML 文档顶部元素的子元素,那么以下 XPath(分别为 2.0 或 1.0)表达式可能会更有效:

/*/animal[ends-with(@name, '_monkey')]

and

/*/animal[substring(@name, string-length(@name) -6)='_monkey']

根据一个人的具体需求(例如,您真正的意思是“包含”而不是“结束于”),功能contains() http://www.w3.org/TR/xpath/#function-contains, starts-with() http://www.w3.org/TR/xpath/#function-starts-with and substring() http://www.w3.org/TR/xpath/#function-substring也可能有用:

contains(someString, someTargetString)

starts-with(someString, someTargetString)

substring(someString, start-index, length) = someTargetString

最后,match的属性<xsl:templates>不需要包含绝对 XPath 表达式-- 建议仅使用指定足够上下文的相对 XPath 表达式。

因此,上面用作匹配表达式的内容将如下所示:

<xsl:template match="animal[ends-with(@name, '_monkey')]">

and

<xsl:template match=
  "animal[substring(@name, string-length(@name) -6)='_monkey']">
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 XSLT 进行通配符匹配? 的相关文章

随机推荐

  • 加载库 193

    我正在创建一个 C CLI dll 它将加载到旧版 C 应用程序中 遗留应用程序通过传统的 LoadLibrary 调用来完成此操作 应用程序和 C CLI dll 均以 64 位模式编译 当发生 LoadLibrary 调用时 它会失败并
  • Rails 中的社交网络 - 哪个框架

    我应该使用 社区引擎 Insoshi 少爱 轨道空间 自己卷 我希望快速建立一个支持移动浏览的社交网络 虽然我熟悉 Ruby 和 Rails 但我不是专家 已经构建了一些基本的 Rails 应用程序 已经编写了一堆用于企业集成的 Ruby
  • 创建方案 .avsc Avro 时出现问题

    我在创建 avro 方案时遇到问题 下面我将放置我的方案 推特 avsc type record name twitter schema namespace com miguno avro fields name id type recor
  • 发送 X11 点击事件不适用于某些窗口

    以下代码片段在大多数情况下都有效 除了在某些窗口中 例如 在最新的 Ubuntu 下 它无法在文件资源管理器中选择文件夹 它似乎在其他地方都适用 但这个差距是巨大的 我怀疑这与我使用 XQueryPointer 的方式有关 但我已经尝试了几
  • 在 Laravel 4 中构建 SAAS 的正确方法

    好吧 大约一年前 我编写了一个网络应用程序 可以帮助为我父亲的公司组织约会 现在他 没有它就无法做生意 我决定建立一个 SAAS 订阅模式并向公众开放 它目前基于 codeigniter 和 php 构建 我认为这不太适合 SAAS 版本
  • Java 中的 InterruptedException 处理

    以下处理方式有什么区别InterruptedException 最好的方法是什么 try catch InterruptedException e Thread currentThread interrupt OR try catch In
  • 检查给定字符串是否有效匹配一组前缀

    使用什么算法来检查给定字符串是否与一组前缀匹配 以及该组中的哪个前缀 其他变体 给定路径和一组目录 如何检查路径是否在一组目录中 假设没有符号链接 或者它们不重要 我对算法的描述或名称感兴趣 或者解决这个问题的 Perl 模块 或者可以用来
  • CakePHP:使用不同数据库关联两个模型?

    我有两个模型 Plant 和 Emp 它们具有 Has And Belongs To Many 关系 我已将它们配置为关联 并且获取每个数据的查询是正确的 但问题是 Plant 和 Emp 位于不同的数据库上 Emp 位于数据库 1 上 P
  • 如何使用 C# 向文件中插入字符

    我有一个巨大的文件 我必须在其中的特定位置插入某些字符 在 C 中执行此操作而无需再次重写整个文件的最简单方法是什么 文件系统不支持在文件中间 插入 数据 如果您确实需要一个可以以排序方式写入的文件 我建议您考虑使用嵌入式数据库 您可能想看
  • 如何使用捆绑器重新安装 gem

    I did a bundle show并获取 gem 目录的完整路径 不幸的是 我使用删除了目录rm r gem path 然后我的 Rails 应用程序不再工作了 如果我尝试启动服务器或启动 Rails 控制台 它会输出以下错误
  • 地图和列表中的 ModCount

    在调试 eclispse 中的集合时 我只是检查是否存在名为 modCount 的东西 例如 如果我们调试列表 我们将在调试中检查此 modCount 代表的内容时看到 请告知 请参阅 javadoc 该列表的结构修改次数 结构修改是那些改
  • 将不同的 CSS 应用于不同的 jQuery 日期选择器

    我有几个与输入字段绑定的日期选择器 它们以通常的方式创建 input1 datepicker options1 input2 datepicker options2 现在我想为每个领域设置不同的样式 但是当在 Firefox 中检查页面时
  • 将多个列表理解转换为单个列表理解

    我正在尝试使用列表理解来更改列表的值我可以通过使用 3 个列表理解来做到这一点 clr 1 2 2 1 3 1 2 3 clr green if i 1 else i for i in clr clr yellow if i 2 else
  • 阿普塔纳工作室3.3.1。 JavaScript 代码补全

    我是 Aptana 的新手 刚刚开始了一个本质是 Web 的项目 我在代码完成方面遇到两个问题 在网上做了一些研究 但没有找到解决方案 1 我有这两行代码 var script document createElement script s
  • 如何在 XML+XSL 生成的 HTML 中使用 jQuery 来操作 UL?

    这是 XML
  • Kotlin:迭代 JSONArray

    我正在使用 Kotlin 和 Realm 编写 Android 应用程序 我有一个 JSONArray 我想迭代该数组中的 JSONObject 以便将它们加载到 Realm 数据库类中 境界等级 import io realm Realm
  • 统一成本搜索实施

    I am trying to implement the Uniform Cost Search after watching the Intro to AI course in Udacity However my algorithm i
  • 是否可以*仅*跨子子域共享表单身份验证?

    我知道我可以跨 2 个子域共享表单身份验证sub1 domain com sub2 domain com通过使用以下 Web config 设置
  • PDO 中的预备语句真的能提高安全性吗?

    我想知道那些准备好的 PDO 语句是否真的提高了安全性 或者它们只是查询中的 廉价 文本替换 准备好的语句的要点实际上是 无论作为参数插入什么 都不会被 DBMS 解析为指令本身的一部分 因此像这样的参数 DROP TABLE foobar
  • 如何使用 XSLT 进行通配符匹配?

    如果我有这样的源文件