如何使用 PHP 将 XPath 表达式作为 XSL 参数传递?

2024-04-11

我有一个非常大的 XML 文件,我要从中提取信息,并将其转换为不同的 XML 格式。我已经完美地运行了转换本身,所以现在我想通过使用 PHP 传递变量来使其更加灵活select=""标准。

以下是我正在使用的工作 XSLT 代码(为简单起见,进行了截断):

<xsl:param name="criteria" select="//Product[PublicationDate &gt; 20141231]" />
<xsl:template match="ONIXMessage">
 <xsl:for-each select="$criteria">
  <xsl:apply-templates select="Title"/>
 </xsl:for-each>
</xsl:template>

$criteria 的值是一个 XPath 表达式,上面的操作没有问题。问题是当我尝试使用 PHP 将不同的值传递到 $criteria 时:

$proc = new XSLTProcessor;
$proc->importStyleSheet( $icml );
$proc->setParameter( "", "criteria", "//Product[Imprint = 'Nightwood']");

当我使用时,转换完全失败setParameter。我知道表达式本身是准确的,因为当我将它们直接输入 XSLT(没有 PHP)时,转换工作得很好。

据我了解,问题在于参数作为字符串传递,而不是作为正确的 XPath 表达式传递,因此 XSLT 无法解析select=""到一个节点集。那么我该如何防止这种情况发生呢?传递整个 XPath 表达式非常重要,这样我就可以将 for-each 标准更改为我想要的任何内容。


据我了解,问题在于该参数正在 作为字符串而不是作为正确的 XPath 表达式传递

这是一个正确的评价。您需要一个可以将字符串计算为 XPath 表达式的处理器。幸运的是,PHP 使用的 libxslt 处理器确实支持EXSLT dyn:evaluate() 扩展函数 http://exslt.org/dyn/functions/evaluate/index.html.

如果没有这个,您必须将参数传递给另一个 XSLT 样式表,其功能是生成实际转换所需的 XSLT 样式表。

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

如何使用 PHP 将 XPath 表达式作为 XSL 参数传递? 的相关文章

  • 当用户再次访问同一页面时保持登录状态?

    目前我正在使用会话来登录用户 但是当我关闭浏览器并再次打开它时 我必须再次登录 你如何让用户在 2 周内保持登录状态 那么是通过cookie吗 那么您想要 在这台计算机上记住我 选项吗 这是一种与语言无关的方法 创建一个至少包含以下内容的数
  • 有没有办法在不使用 foreach 或其他函数的情况下在 PHP 中内爆关联数组的键和值?

    我有一个像这样的关联数组 myarray array a gt 1 b gt 2 c gt 3 我想显示数组键和值 如下所示 a is 1 b is 2 c is 3 我不想使用 print r 或 var dump 来执行此操作 我也不想
  • 如何使用 Python Selenium 选择具有相同类名但不同条件的第一个 div

    Python Selenium 新手 我想选择第三个 div class inner TPBYkbxL 从以下3 div 具有相同类名的类 我不确定是什么意思 lt data is fake main panel true or false
  • 主题以编程方式设置。如何重新加载 Activity 来应用

    如何在不重新启动整个应用程序的情况下应用主题 如果我这样做startActivity getIntent finish 活动退出并且不重新启动 是否可以简单地重新启动 重新创建活动来应用主题 它的顺序不正确 finish intent ne
  • PHP语言问题

    我有一个 php 页面 它将邮件发送到特定电子邮件 其中包含此页面表单中的数据 邮件必须以网站的母语 阿拉伯语 发送 但是当我单击表单上的提交按钮时 收到的邮件一半可读 阿拉伯语 另一部分不可读 符号 我想知道如何解决这个问题并且能够发送邮
  • Symfony 学说错误“DoctrineMigrationsBundle 需要启用 DoctrineBundle。”

    我创建了一个新的 Symfony 项目 并且不断收到此消息 DoctrineMigrationsBundle 需要启用 DoctrineBundle 错误并且无法摆脱它 显然我是这个星球上唯一一个收到此错误的人 因为谷歌并没有太大帮助 在
  • json_encode 创建格式错误的 JSON 数据?

    我有一个 codeigniter 应用程序将一些数据从数据库返回到视图 我正在尝试将其作为 json 数据发送回来 问题是返回的数据格式错误 它看起来像这样 2 5 Admin1 2 10 Admin2 当我在 jsonlint com 上
  • 通过 XML 将重复事件添加到 Google 日历

    我正在尝试通过协议 API 将重复事件添加到我的日历中 我从在 Google 界面中创建的事件中获取了重复标记的语法 并将其用于我的创建请求中 这是我提交的内容
  • PHP,文本从数据库中回显,没有换行,全部一体

    我的数据库中有一个长文本 从 php mayadmin 来看它看起来很好 但是当我将它回显到页面时 它会丢失所有格式 即没有新行 全部都在一个块中 有任何想法吗 Thanks 可能是因为换行符是 n 并且 html 想要 br 所以使用nl
  • XML 创建 - 错误:带有替代方案的重载方法构造函数 UnprefixedAttribute

    scala gt val count 7 count Int 7 将其放入 XML 属性中会出现错误 scala gt val x
  • XPath 中的 ., 有什么用?

    为什么在某些 XPath 表达式中句号后面使用逗号 这是一个例子 Set nlist doc selectNodes book author first name starts with M 我试图用谷歌搜索这个 但字面意思 运算符似乎不喜
  • JSPX 命名空间对于 EL 函数不可见?

    我正在尝试使用 JSPX JSP 的纯 XML 语法 并遇到看起来应该可以工作但实际上却不起作用的情况 我使用 jsp root 元素中的命名空间声明导入标签库 然后稍后将这些用于元素以及 EL 函数
  • 如何让Symfony2直接加载CSS、JS文件而不是通过PHP?

    老问题 请参阅下面的更新版本 我的开发环境不是最快的 每个 PHP 请求大约需要 500 毫秒 它开始成为 Symfony2 资源文件的问题 因为每个资源文件都是通过 Symfony 的内部控制器请求的 http localhost myp
  • 从文本文件 PHP 读取数据

    我只是想知道如何在 php 中读取文本文件 我想让它显示文本文件中的最后 200 个条目 每个条目都在一个新行上 Like John White Jane Does John Does Someones Name 等等 Thanks Use
  • PHP URL 验证

    我知道有无数的线程问这个问题 但我一直无法找到一个可以帮助我解决这个问题的线程 我基本上试图解析大约 10 000 000 个 URL 的列表 确保它们根据以下标准有效 然后获取根域 URL 此列表包含您能想象到的几乎所有内容 包括类似的内
  • 如何从列表创建多维数组?

    我在 MySQL 中有一个带有父 ID 的类别列表 如何从列表中创建 PHP 数组 ID Category Parent ID 1 Car NULL 2 Education NULL 3 Mathematics 2 4 Physics 2
  • 在 Windows 上查看 PHP 文件夹

    我正在编写一个简单的 PHP 脚本来监视文件夹及其子文件夹的任何更改 新文件 修改 删除 然后执行操作 我将使用 Windows 上的命令行运行此脚本php f script php 我一直在寻找一种在 Windows 上观看具有 PHP
  • 在 Java 中创建 XML 文件的最佳方法是什么?

    我们目前使用 dom4j 来创建 XML 文件 不过 我猜现在有更好的东西了 如果我们使用的是 Java 1 6 或更高版本 那么在编写 XML 文件时最好使用什么类 运行速度最快 使用简单 我不需要构建一个 DOM 然后编写整个 DOM
  • Magento 中的子域 htaccess 问题

    public html www domain com public html subdomain subdomain domain com public html htaccess public html subdomain htacces
  • PHP 文件上传帮助

    div align center div 这是我的代码

随机推荐

  • XIB 文件在 XCode 中像 XML 一样打开,但使用 Interface Builder 可以正确打开

    当我在 Xcode 4 中双击 StartWindow xib 文件时 它不会在集成 Interface Builder 中打开 它像 XML 文件一样打开 我可以打开所有其他 xib 文件 它们会按预期显示 我可以通过 打开方式 使用旧的
  • Cython 优化

    我正在用 Python 编写一个相当大的模拟 并希望从 Cython 获得一些额外的性能 然而 对于下面的代码 我似乎没有得到那么多 即使它包含一个相当大的循环 大约 10 万次迭代 我是否犯了一些初学者错误 或者这个循环大小是否太小而无法
  • 尝试使用 Phantom.js 生成 PDF 时 Vue.js 未渲染

    在这个带有硬编码 url 的简单示例中 我的 Vue js 组件未渲染 纯 html 被渲染 但我有组件的所有位置都显示为空白 Phantomjs 应该能与 Vue js 正常工作吗 var webPage require webpage
  • 构建 Java Swing GUI 的最佳方法?

    到目前为止 我一直在使用 Netbeans Swing GUI 生成功能为我的 java 应用程序构建 GUI 现在我已经开始在我的项目中使用 Eclipse 并放弃了 Netbeans 那么除了手动编写 GUI 的所有代码之外 还有什么其
  • ios UICollectionView 单元格之间顶部/底部分离

    我有一个集合视图 工作正常 并且我调整了 X 填充的分离 而且效果很好 但对于单元格之间的 Y 填充 似乎没有调整为无分离 这是我的布局代码 UICollectionViewFlowLayout layoutItem UICollectio
  • 如何使用 slf4j 记录 postgres 驱动程序消息?

    我在我的网络应用程序中使用 postgres db 我在我的中添加了以下依赖项pom xml
  • AS3 - 我可以知道一个类是否实现了一个接口(或者是另一个类的子类)?

    有了这个代码 function someFunction classParam Class Boolean how to know if classParam implements some interface 即比较classParam
  • .NET 系统类型到 SqlDbType

    我一直在寻找 Net System Type 和 SqlDbType 之间的智能转换 我发现这是以下想法 private static SqlDbType TypeToSqlDbType Type t String name t Name
  • 如何生成与 java TimeZone 对应的良好时区下拉列表

    其他网络应用程序使用什么策略来生成格式良好的时区列表以满足用户偏好 我尝试获取所有时区 但列表很长 而且格式不适合用户 只是想知道其他人是如何做到这一点的 下面的代码片段 String ids TimeZone getAvailableID
  • 如何访问包含特殊字符的对象属性?

    我有一个formDOM 元素 var virDom document getElementsByTagName form 0 virDom有两个带 ID 的字段creditId and pwdId 我可以访问virDom creditId没
  • 表与临时表性能

    对于数百万条记录 哪个更快 永久表or临时表 我只需要将它用于 1500 万条记录 处理完成后 我们删除这些记录 在您的情况下 我们使用称为临时表的永久表 这是大量导入的常用方法 事实上 我们通常使用两个暂存表 一张包含原始数据 一张包含清
  • 如何获取用javascript加载的标签值

    我有一个这样的链接 它是从 Instagram api 获取的 http localhost 60785 access token aspx access token 43667613 4a1ee8c 791949d8f78b472d813
  • glBufferData() 的分段错误

    我不明白为什么这段代码会出现段错误 AxesMarker AxesMarker float size size size vbo vertices 0 vbo elements 0 Vertex vertices 6 Vertex Colo
  • 严格模式性能更高吗?

    一般来说 在浏览器中以 严格模式 执行 JavaScript 是否会提高性能 主流浏览器是否会进行额外的优化或使用任何其他技术来提高严格模式下的性能 稍微改一下 除了其他目标之外 严格模式是否旨在允许浏览器引入额外的优化或其他性能增强 除其
  • cakephp - 获取表名称及其列详细信息

    有谁知道如何从模型名称获取表名称 另外我想获取该模型 表名称的所有列名称及其类型 是否有可能获得给定型号名称的此类详细信息 Thanks 表名 要获取该表 请参阅 this gt Model gt table 或者检查类变量的模型 useT
  • geocomplete 不是使用自动完成的函数

    您好 我正在使用自动填充代码 收到错误 geocomplete 不是一个函数 如果在本地 单独的文件 中使用它 它对我有用 可能是什么错误 function location geocomplete alert gine details g
  • 如何知道 RecyclerView / LinearLayoutManager 是否滚动到顶部或底部?

    目前我正在使用以下代码来检查是否应启用 SwipeRefreshLayout private void laySwipeToggle if mRecyclerView getChildCount 0 mRecyclerView getChi
  • 无法连接到数据库来执行身份功能

    我使用 ASP NET MVC5 创建了一个新应用程序 使用个人用户帐户来确保安全性 并使用代码优先迁移来进行模型 数据库建模 所有选项均为默认 我想为其设置自定义用户和角色 所以我使用创建了一个种子RoleManager and User
  • Mongodb findAndModify节点js

    以下代码在 Node js 中给了我一个异常 需要删除或更新 var args query id id update set data new true remove false db collection COLLECTION INVEN
  • 如何使用 PHP 将 XPath 表达式作为 XSL 参数传递?

    我有一个非常大的 XML 文件 我要从中提取信息 并将其转换为不同的 XML 格式 我已经完美地运行了转换本身 所以现在我想通过使用 PHP 传递变量来使其更加灵活select 标准 以下是我正在使用的工作 XSLT 代码 为简单起见 进行