如何实现XSLT tokenize功能?

2024-03-06

EXSLT tokenize 函数似乎不适用于 PHP XSLTProcessor (XSLT 1.0)。

我尝试用纯 XSL 实现它,但无法使其工作:

<xsl:stylesheet
    version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:func="http://exslt.org/functions"
    xmlns:exsl="http://exslt.org/common"
    xmlns:my="http://mydomain.com/">

    <func:function name="my:tokenize">
        <xsl:param name="string"/>
        <xsl:param name="separator" select="'|'"/>
        <xsl:variable name="item" select="substring-before(concat($string,$separator),$separator)"/>
        <xsl:variable name="remainder" select="substring-after($string,$separator)"/>
        <xsl:variable name="tokens">
            <token><xsl:value-of select="$item"/></token>
            <xsl:if test="$remainder!=''">
                <xsl:copy-of select="my:tokenize($remainder,$separator)"/>
            </xsl:if>
        </xsl:variable>
        <func:result select="exsl:node-set($tokens)"/>
    </func:function>

    <xsl:template match="/">
        <xsl:copy-of select="my:tokenize('a|b|c')"/>
    </xsl:template>

</xsl:stylesheet>

预期结果 :

    <token>a</token><token>b</token><token>c</token>

实际结果 :

    abc

我知道这个问题已被多次发布,但我找不到简单的解决方案。

感谢您的帮助。


Quoting http://www.exslt.org/str/functions/tokenize/index.html http://www.exslt.org/str/functions/tokenize/index.html

以下 XSLT 处理器支持 str:tokenize:

  • 4XSLT,来自 4Suite。 (版本0.12.0a3)
  • 来自 Daniel Veillard 等人的 libxslt。 (版本1.0.19)

由于 PHP 使用 libxslt,这意味着tokenize可用,但您必须使用正确的扩展名称空间(您不这样做):

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:str="http://exslt.org/strings"
    extension-element-prefixes="str"
    …

然后您可以使用 tokenize 作为函数,例如构建一个包含数字 1-12 的选择框:

<select name="months">
    <xsl:for-each select="str:tokenize('1,2,3,4,5,6,7,8,9,10,11,12', ',')">
        <xsl:element name="option">
            <xsl:attribute name="value">
                <xsl:value-of select="."/>
            </xsl:attribute>
            <xsl:value-of select="."/>
        </xsl:element>
    </xsl:for-each>
</select>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何实现XSLT tokenize功能? 的相关文章

  • 如何使用 Facebook SDK API 为页面/网址“点赞”?

    我正在使用这段代码 facebook gt api me likes post array url gt http www google com 我收到以下错误 Fatal error Uncaught OAuthException 200
  • 在字符串中间添加一个字符

    可能有一个简单的解决方案可以解决这个问题 但会引起面部表情 我将时间存储为 4 个字符长的字符串 即 1300 我试图将该字符串显示为 13 00 我觉得必须有一个比我现在正在做的更优雅的解决方案 我目前有 startTime get fi
  • Android 子菜单布局

    我读到 Android 中的子菜单不支持图标 我想知道这是否已经改变 或者是否有类似的方法来生成支持图标的 子菜单 Currently This is My Submenu 这是它的 XML 文件 menu menu
  • 如何通过php的require()或include()函数传递变量?

    当我使用这个时 require diggstyle code php page page no 警告是 无法打开流 第 198 行 C xampp htdocs 4ajax gallery core php 中没有错误 错误是 Failed
  • 使用 php 在多维数组中按键排序[重复]

    这个问题在这里已经有答案了 可能的重复 在 PHP 中对多维数组进行排序 https stackoverflow com questions 2059255 sorting multidimensional array in php 如何在
  • 第三个下拉菜单不从数据库填充

    我有以下 Index php
  • 如何使用 Twig 的属性函数访问嵌套对象属性

    我试图使用一个树枝变量来访问另一个树枝变量的属性 直到我找到 属性 函数为止 该变量才起作用 除了需要访问嵌套属性的情况外 效果很好 当包含属性的变量实际上是对象 属性时 它不起作用 例如 attribute object1 variabl
  • 限制自己超载外部 API 的速率

    我发现了很多信息和脚本示例 展示了如何对 API 用户进行速率限制 但我无法找到任何示例来说明在施加这些限制时如何对您自己的 API 请求进行速率限制 我总是用诸如以下的代码来限制我的脚本sleep or usleep命令 但感觉这是一种低
  • 使用 XSLT 将 XML 转换为 SQL

    由于我无法控制的原因 我将获得一个 XML 文件和一个 XSLT 文件 该文件可以将 XML 文件转换为 SQL 代码或错误 现在让我们假设我们可以信任提供 XML 文件的人不会在 XML 中包含危险的构造 我什至不知道是否应该使用 Sim
  • fgetcsv 在特定行打开?

    有没有办法使用 fgetcsv 在特定行上打开 我有一个非常大的 csv 想通过 ajax 一次运行大约 100 行 我可以轻松停止 while 循环 但如何在特定行上打开 或者这是不可能的 从第 100 行开始读取没有简单的方法 但您可以
  • 为什么我的 if 语句没有按我预期的方式工作?

    我正在尝试实现以下目标 我向我的 SQL 数据库询问使用SELECT FROM subjects 这样做之后我要求使用数组mysqli fetch assoc 在那之前一切都很好 现在的问题是 当我尝试在每个循环中修改 genero 的值
  • 文件存在时,FileMode.Open 和 FileMode.OpenOrCreate 有何区别? c# 错误?

    我已经写了该代码 public void Save using FileStream fs new FileStream Properties Settings Default settings file path FileMode Ope
  • apache_request_headers() 与 $_SERVER

    据我所知 apache request headers 提供与以下相同的信息 SERVER 但按键略有不同 为什么有人应该使用apache request headers 而不仅仅是从那里获取这些信息 SERVER 我在 Centos 上使
  • Apache、PHP 和 MySQL 可移植吗?

    我可以在外部硬盘上运行 Apache PHP 和 MySQL 吗 我需要这个 因为我在不同的地方工作 计算机 有时我没有安装和配置所有使用的应用程序 当然可以 XAMPP http www apachefriends org en xamp
  • Sonata DateTimePickerType 类默认日期显示错误的日期时间格式

    我陷入困境 我不知道如何使用 sonata DateTimePickerType 类正确设置默认日期和时间 我尝试了不同的方法 但到目前为止 没有一种方法没有帮助 在下面的截图中 help 键显示正确的日期和时间 但是当我使用 dp 默认日
  • 具有 java XSLT 扩展的数组

    我正在尝试使用 java 在 XSLT 扩展中使用数组 我收到以下错误 Caused by java lang ClassCastException org apache xpath objects XObject cannot be ca
  • 扩展 XSD 文件

    我有一个带有枚举类型的 XSD 文件 我想创建一个 扩展 XSD 文件 它添加一些额外的枚举 但其他方面的行为就像主 XSD 一样 例如 主 XSD 文件包含以下内容
  • URL 中的 %2F 中断并且未引用所需的 .php 文件 [重复]

    这个问题在这里已经有答案了 我需要将 作为变量作为 URL 的一部分传递 我的结构如下所示 www domain com listings page 1 city Burnaby South type Townhome bedroom 2
  • 保存多对多关系,同步/附加不存在?

    我有以下两个多对多关系的模型 use Illuminate Database Eloquent Model class Permission extends Model The database table used by the mode
  • 一种无需 JavaScript 即可在 PHP 中确定浏览器宽度的方法?

    首先有吗 或者我必须使用javascript 我希望能够更改使用的 CSS 因此 frex 我可以为移动设备或其他设备加载较小的字体 不幸的是 仅使用 PHP 无法检测用户分辨率 如果您使用 Javascript 则可以在 cookie 中

随机推荐

  • javax.net.ssl.SSLPeerUnverifiedException:主机名与对等方提供的证书主题不匹配

    我关注了 stackoverflow 上的许多链接并尝试了许多解决方案 但没有一个对我有用 我在用着WSO2 API manager版本1 9 1 我面临以下错误 Exception in thread main javax net ssl
  • nginx 到 localhost 的配置是否正确?

    我大约一个小时前刚刚安装了 nginx 和 php fastcgi 在阅读了快速启动配置的示例以及 nginx 文档等后 我只是无法让它工作 无论我改变或尝试什么 我总是只得到 欢迎来到 Nginx localhost 上的屏幕 我什至无法
  • jQuery.get 未收到服务器上文件的最新版本[重复]

    这个问题在这里已经有答案了 可能的重复 防止缓存 AJAX 调用 https stackoverflow com questions 367786 prevent caching of ajax call 我正在使用 jQuery 读取 W
  • sql插入到asp.net中

    con Open SqlCommand cmd new SqlCommand INSERT INTO user Firstname Lastname Email Pass Type values first last email pass
  • 在 Unix / Bash 中,“xargs -p”是在运行任何命令之前提示确认的好方法吗?

    我问过如何发出任何命令 询问是 否 在执行之前 问题中 在 Bash 中 如何将 Are you certain Y n 添加到任何命令或别名中 https stackoverflow com q 3231804 似乎对于命令 hg pus
  • Rails 从显示操作下载文件?

    我有一个上传器 可以让您上传文档 我想要做的是当您查看文档的显示操作时触发文档的下载 网址将类似于 documents 16 该文档可以是 txt 或 doc 到目前为止 我的表演动作如下所示 def show document Docum
  • 我需要检测云函数中何时仅某个字段发生更改

    请查看下面我的云功能 我想在仅 Job jobId 中的状态字段更改时执行一些操作 然后在 Job jobId 中的任何其他字段更改时执行其他操作 因此我创建了下面的两个函数 但当状态字段发生变化时 这两个函数似乎都会触发 我怎样才能限制这
  • 无法读取临时文件

    我正在尝试调用一个外部进程 该进程写入我通过以下方式获得的临时文件与系统临时文件 https hackage haskell org package temporary 1 3 docs System IO Temp html v with
  • 是否可以迭代 Lucene 索引中存储的文档?

    我有一些文档存储在带有 docId 字段的 Lucene 索引中 我想获取存储在索引中的所有 docId 还有一个问题 文档数量约为 300 000 因此我希望以大小为 500 的块获取此 docId 是否可以这样做 IndexReader
  • Objective-C 中如何检查一个字符串是否包含另一个字符串?

    如何检查字符串 NSString 包含另一个较小的字符串 我希望有这样的事情 NSString string hello bla bla NSLog d string containsSubstring hello 但我能找到的最接近的是
  • GetMapping 和 PostMapping 注释

    我对这个操作有疑问 创建此类控制器的工作原理 Controller public class StudentController RequestMapping value student method RequestMethod GET p
  • 云功能完成延迟太多

    这是我正在使用的云功能当发货人接受订单时向店主发送通知 但有时至少需要 20 秒才能完成 更常见的是需要 3 分钟以上 我的其他云功能运行得很好 无法找出此功能的问题 exports onChangeOfOrderStatus functi
  • 连接组件标签 - 实施

    几天前我问过类似的问题 但我还没有找到解决问题的有效方法 我正在开发一个简单的控制台游戏 我有一个像这样的二维数组 1 0 0 0 1 1 1 0 1 1 0 1 0 0 1 1 1 1 1 0 0 0 0 1 0 我试图找到由相邻 1 4
  • 本地化系统生成的状态消息

    我在 NET 环境中工作 系统偶尔会为客户生成日志条目 然后 消息将附加到客户日志中 以便稍后查看 例如 如果客户正在订阅新服务 或者客户付款尝试失败 这些消息将被附加到客户日志中 目前 所有消息都被硬编码到代码中 例如 客户未能完成 XX
  • 正则表达式问题通过curl向Varnish服务器发送BAN请求

    我一直在尝试发送BAN请求通过curl to the Varnish服务器缓存的内容无效 该 url 包含一些供 Varnish 检查的正则表达式 我已成功发送此请求 1 curl X BAN https oursite com produ
  • “pip uninstall jupyter”不起作用,但是“which jupyter”返回有效路径[重复]

    这个问题在这里已经有答案了 我正在尝试卸载 jupyter pip uninstall jupyter 它给了我这个错误 Cannot uninstall requirement jupyter not installed but whic
  • php gd imagecreatefromstring() 和图像 mime 类型

    有没有办法使用imagecreatefromstring 并以某种方式得到图像类型是什么 当您使用 imagecreatefrom 方法时 图像将作为未压缩的位图加载到内存中 此时还没有真正的图像类型 您可以使用 image 功能将其保存为
  • Mongodb Atlas:管理员无权执行命令

    我有一个 MongoDB Atlas 集群 我试图在其中简单地复制同一实例中的数据库 不幸的是 每次我尝试运行 db copyDatabase 或 copydb admin 命令时 都会收到以下错误 not authorized on ad
  • 根据特定时间格式计算总秒数

    如何计算总秒数 33 小时 40 分 40 秒 在 asp net c 中 new TimeSpan 33 40 40 TotalSeconds
  • 如何实现XSLT tokenize功能?

    EXSLT tokenize 函数似乎不适用于 PHP XSLTProcessor XSLT 1 0 我尝试用纯 XSL 实现它 但无法使其工作