在 XSLT 中使用正则表达式

2024-04-18

我需要解析 Visual Studio 自动生成的 XML 文档来创建报告。我决定使用 XSLT,但我对它很陌生并且需要帮助。 常见的模板是:

<doc>
  <members>
    <member name="F:MyNamespace">
      <summary>Some text</summary>
    </member> 
  </members>
</doc>

我想隔离名称以某个单词开头的成员,例如 P:Interfaces.Core。我决定在 select 语句中使用 RegExp。

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:fn="http://www.w3.org/TR/xpath-functions/">
    <xsl:template match="/" >
        <html xmlns="http://www.w3.org/1999/xhtml">
            <body style="font-family:Tahoma">
                <p>Interfaces list:</p>
                <table>
                    <xsl:for-each select="doc/members/member">
                        <xsl:sort order="ascending" />
                        <xsl:value-of select="fn:matches(., 'P\..+')" />
                        <br />
                    </xsl:for-each>
                </table>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>

为什么我会收到错误:

命名空间http://www.w3.org/TR/xpath-functions http://www.w3.org/TR/xpath-functions不包含任何功能>

我哪里错了?我在示例中找到了这样的代码,包括 w3c.org!


如果您使用 Visual Studio X 执行转换,其中 X 不大于 2008,这将由XSLT 1.0 http://www.w3.org/TR/xslt处理器(.NET 的XslCompiledTransform http://msdn.microsoft.com/en-us/library/system.xml.xsl.xslcompiledtransform.aspx or XslTransform http://msdn.microsoft.com/en-us/library/system.xml.xsl.xsltransform.aspx)。 XSLT 1.0 的用途XPath 1.0 http://www.w3.org/TR/xpath, not XPath 2.0 http://www.w3.org/TR/xpath20/和它的餐饮 http://www.w3.org/TR/xpath-functions/(功能和操作),去年才成为 W3 推荐标准。

你有两个选择:

  1. 使用兼容的 XSLT 2.0 处理器。如果您更喜欢留在 .NET 平台内,那么合适的选择是撒克逊网 http://saxon.sourceforge.net/

  2. 只需使用 XPath 1.0 函数 starts-with() http://www.w3.org/TR/xpath#section-String-Functions,足以解决当前问题。
    表达方式:starts-with(., 'P:Interfaces')被评估为true()如果上下文节点的字符串值以字符串“P:Interfaces”开头并且false()否则。

另一个 Xpath 1.0 函数对于这种类型的处理可能会派上用场,它是函数contains() http://www.w3.org/TR/xpath#section-String-Functions.

Xpath的2.0功能ends-with() http://www.w3.org/TR/xpath-functions/#func-ends-with可以通过以下方式在 XPath 1.0 中进行模拟:

ends-with(s1, s2) ====substring(s1,string-length(s1)-string-length(s2)+1)=s2

where "===” 的意思是“相当于”。

这里我们还使用了XPath 1.0函数substring() http://www.w3.org/TR/xpath#section-String-Functions and string-length() http://www.w3.org/TR/xpath#section-String-Functions.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 XSLT 中使用正则表达式 的相关文章

  • 根据特定字符获取整个字符串或子字符串

    我有一个包含 MIME 类型的字符串 例如application json 现在我想将其与实际的 HTTP 标头进行比较 在本例中content type 如果标头包含 MIME 类型 那么就很简单 if mimeType contentT
  • JavaScript 中的实时摩尔斯电码转换器

    在看到谷歌关于莫尔斯电码 gmail 的愚人节笑话后 我想我应该尝试用 javascript 创建一个实时莫尔斯电码转换器 我正在使用正则表达式和替换将莫尔斯电码更改为字符 例如 replace g a replace g r 我遇到的问题
  • 正则表达式库基准

    我最近一直想知道正则表达式实现的性能 并且很难想出很多有用的信息 它很容易对浏览器 javascript 正则表达式性能进行基准测试 网上有很多工具 Chrome 和 Opera 中的 javascript 正则表达式实现几乎摧毁了所有其他
  • 如何使用正则表达式在 Java 中检查确切的电话号码

    你好 我是正则表达式的新手 我不知道我在做什么 这就是我寻求帮助的原因 我有以下电话号码 359878123456 我需要检查该电话号码是否符合条件 359 是准确的扩展名 第二个 2 个数字是操作员号码和以下 3 个数字之一 87 88
  • 如何使正则表达式匹配不区分大小写?

    我有以下正则表达式加拿大的邮政编码 http en wikipedia org wiki Postal codes in Canada ABCEGHJKLMNPRSTVXY 1 d 1 A Z 1 d 1 A Z 1 d 1 它工作正常 但
  • 使用基于 DFA(线性时间)正则表达式捕获组:可能吗?

    是否可以使用基于 DFA 的正则表达式实现捕获组 同时保持相对于输入长度的线性时间复杂度 直觉上我认为不是 因为子集构造过程不知道它可能落在哪个捕获组内 但这是我第一次意识到这可能是一个潜在的问题 所以我不知道 是否可以使用基于 DFA 的
  • 如何通过保持目录结构完整来同步路径中匹配模式的文件?

    我想将所有文件从服务器 A 复制到服务器 B 这些文件在不同级别的文件系统层次结构中具有相同的父目录名称 例如 var lib data sub1 sub2 commonname filetobecopied foo var lib dat
  • & 在 XML 代码中导致错误的符号

    我有以下 XML 代码 用于过滤我的 Crm Dynamics 表单中的查找字段 该过滤器根据输入帐户字段的数据使用 但是 帐户字段可以包含 符号 当出现时 会发生错误 表明 XML 格式不正确 有人有解决问题的办法吗 function a
  • 将维基百科中的表格加载到 R 中

    我正在尝试从以下 URL 将最高法院法官表加载到 R 中 https en wikipedia org wiki List of Justices of the Supreme Court of the United States http
  • Ebay api GetSellerList,解析响应 XML

    我正在使用 eBay 交易 api 来获取当前列出的卖家股票 我正在使用 GetSellerList 调用 我在解析 xml 时遇到问题 然后将其插入到网站商店中 这是 xml 请求
  • Dispatcher-servlet 无法映射到 websocket 请求

    我正在开发一个以Spring为主要框架的Java web应用程序 特别使用Spring core Spring mvc Spring security Spring data Spring websocket 像这样在 Spring 上下文
  • 如何在 gulp.src 中使用基本正则表达式?

    我正在尝试选择两个文件gulp src highcharts js and highcharts src js 当然 我知道我可以使用数组表达式显式添加这两个表达式 但出于学习目的 我尝试为它们编写一个表达式 我读过可以使用简单的正则表达式
  • 如何让 Vim 突出显示非 ascii 字符?

    我试图让 Vim 突出显示非 ASCII 字符 是否有可用的设置 正则表达式搜索模式或插件来执行此操作 在 a 中使用范围 搜索中的字符类 您应该能够excludeASCII 十六进制字符范围 因此突出显示 假设您有hlsearch启用 所
  • 正则表达式删除字符串中的双/三逗号

    我需要解析一个字符串 因此结果应该像这样输出 abc def ghi klm nop 但我收到的字符串可能看起来更像这样 abc def ghi klm nop 关键是 我事先不知道单词之间有多少个逗号 我可以在 C 中使用正则表达式来帮助
  • 正则表达式查找数字后跟字母[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我是正则表达式的新手 所以对愚蠢的问题表示歉意 如何识别字符串包含数字后跟字母 例如 在这个地址中 Flat 3a Butterfly St
  • 替换C#字符串中的数字

    我正在尝试使用正则表达式对字符串进行一些工作 但遇到了一些困难 我的目标是用字符替换字符串中的数字 特别是如果字符串中有一组数字 我想用一个字符替换整个数字组 如果只有一个数字 我想将其替换为 例如 如果我有字符串 test12345 tx
  • 正则表达式可以与 C++ 中的字符数组一起使用吗

    我正在开发一个无法使用字符串库文件的程序 而是使用字符数组 我能够使用正则表达式 并且想知道是否有办法使用正则表达式和字符数组 甚至正则表达式和单个字符 我问的原因是当我尝试在匹配中使用我的 char 数组时 xUtility 会抛出一堆来
  • 如何添加 Java 正则表达式实现中缺少的功能?

    我是 Java 新手 作为一名 Net 开发人员 我非常习惯Regex Net 中的类 Java 实现Regex 正则表达式 还不错 但它缺少一些关键功能 我想为 Java 创建自己的帮助器类 但我想也许已经有一个可用的了 那么 是否有任何
  • 当找到匹配时使用 sed 替换行首

    我有一个 Java 文件 我想注释包含匹配的任何代码行 myvar 我认为 sed 应该在这里帮助我 sed s myVar not sure what to put here g MyFile java 我不知道要输入什么 not sur
  • 根据列中的部分字符串匹配选择数据框行

    我想根据列中字符串的部分匹配从数据框中选择行 例如列 x 包含字符串 hsa 使用sqldf if它有一个like语法 我会做类似的事情 select from lt gt where x like hsa 很遗憾 sqldf不支持该语法

随机推荐

  • swift 2.1 alamofire超时方法

    我对 alamofire 超时方法有疑问 首先 我的英语可能不够好 无法让你们理解我所说的 但我会厌倦解释我的问题 在我的项目中 我使用了 alamofire 出于某种原因 我需要确保我的应用程序在连接不良的区域工作 所以我正在考虑使用超时
  • Node-sass 是 React 项目的开发依赖还是生产依赖?

    在各种 React 文档中 我看到它被添加为产品依赖项 但我不明白为什么 难道它不应该是一个 devDependecy 吗 因为 SASS 只在开发过程中被编译 而当推送到 prod 时 你实际上推送的是编译后的 CSS 文件 由于需要进行
  • redis集群不断打印日志WSA_IO_PENDING

    当我启动redis集群的所有redis服务器时 所有这些服务器不断打印类似WSA IO PENDING clusterWriteDone的日志 9956 03 Feb 18 17 25 044 WSA IO PENDING writing
  • .NET 列表.Distinct

    我正在使用 NET 3 5 为什么我仍然收到 不包含 不同 的定义 用这个代码 using System Collections Generic code List
  • R:进入“内部”环境

    给定一个environment object e gt e
  • 使用 highcharts 将 mysql 数据库中的动态数据添加到折线图

    我想使用 ajax 或 json 将数据点添加到我的折线图中 现在我必须重新加载整个网页才能在图表上显示我的新数据 但我想通过添加如下链接的点来显示实时数据 jsfiddle net gh get jquery 1 9 1 highslid
  • 完全离线工作的领域(从不在线)

    我试图了解 mongoDB 的每个元素是如何工作的 但我真的很困惑如何处理离线 即将 https realm io https realm io 我读到了这个 Realm 移动数据库是 Core Data 和 SQLite 的开源 开发人员
  • 自动完成搜索,即使是一个字符 Android

    我在用AutoComplete小部件 它适用于两个字符搜索 但不适用于一个字符 即使用户只输入一个字符 我也想自动完成工作 例如 当我输入 1 时 它应该显示所有以 1 开头的列表 现在它显示 2 个字符的建议列表 例如 12 Code z
  • CYK算法是如何工作的?

    我必须检查一个字符串是否可以从乔姆斯基范式的给定上下文中派生出来 我正在使用 C 有非常好的伪代码 http en wikipedia org wiki CYK algorithm As pseudocode关于 CYK 算法的维基百科文章
  • 在 safari 中显示本地磁盘的图像

    我的页面中有这个标签 在 localhost 3000 上运行 img src width 400 height 200 图像确实存在 但未显示 如果我将 src 属性中的路径放入地址栏 则图像已加载 但它在 img 标记中不起作用 甚至在
  • Android Facebook 集成与无效密钥哈希

    在我的一个应用程序中 我需要从 Facebook 获取数据 我正在这样做 我创造了app ID 它登录成功 但是注销后 我登录 然后它给我 我做错了什么 我正在使用脸书软件开发工具包 我已经在手机上安装了 Facebook 它在模拟器中运行
  • 如何使用 re.sub 搜索和替换精确的字符和数字?

    我正在尝试在 python 中使用正则表达式来搜索 p1 in p1 p2 p3 p10 p11 p12 并将其替换为 hi 下面是我的Python代码 import re x p1 p2 p3 p10 p11 p12 data p1 y
  • 如何使用 MassTransit 测试工具通过构造函数依赖注入来测试 Consumer?

    我有一些消息使用者通过构造函数获取依赖项 我想在单元测试中涵盖它们 MassTransit 的测试工具是否提供了一种使用构造函数参数注册消费者的方法 创建消费者测试工具时 您可以指定工厂方法或消费者工厂 harness Consumer
  • 单击的单选按钮值显示为未定义

    对于被单击的单选按钮的值 结果显示为未定义 document ready function input radio change function checkResult this function checkResult el var c
  • 寻找 AES-CTR 加密的输入

    由于 CTR 模式下的 AES 非常适合随机访问 假设我有一个使用CipherOutputStream在 AES CTR 模式下 下面的图书馆 不是我的 使用RandomAccessFile允许查找文件中的特定字节偏移量 我最初的想法是使用
  • Spring boot:如何为静态资源添加拦截器?

    我有几个文件夹 static img 我需要向其中一些添加拦截器来检查用户权限 我之前使用过拦截器并以这种方式添加它们 SpringBootApplication EnableTransactionManagement public cla
  • 从字符串中删除所有“不可见”字符?

    我正在编写一个小类来从文件中读取键值对列表并写入Dictionary
  • RISC-V 规范引用了“hart”一词 - “hart”是什么意思?

    我找到了参考文献hart在第 35 页RISC V 2 1 规范 https content riscv org wp content uploads 2016 06 riscv spec v2 1 pdf 但是 我找不到它的定义hart在
  • PHPickerViewController 点击搜索时出现错误...“无法加载照片”

    我正在尝试实现一个PHPickerViewController使用 SwiftUI 和可组合架构 并不是说我认为这特别相关 但它可以解释为什么我的一些代码是这样的 示例项目 我一直在尝试解决这个问题 我在 GitHub 上创建了一个小示例项
  • 在 XSLT 中使用正则表达式

    我需要解析 Visual Studio 自动生成的 XML 文档来创建报告 我决定使用 XSLT 但我对它很陌生并且需要帮助 常见的模板是