问题标签 [exslt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
582 浏览

xpath - 在 XSLT-1.0 中对节点集进行两次迭代

我有一个包含博客文章的 XML。每个帖子都包含一个date节点。

我想提取发布帖子的年份列表,并以精美的格式打印出来。对于每一年,我都想以非常相似的方式打印出活跃月份的列表。

外部对我来说工作正常。由于我找不到使用原始 XSLT-1.0 实现此目的的方法,因此我使用 EXSLT 实现了它。我遍历帖子,提取年份,将其放入新year节点并将其作为临时 XML 树存储在变量中。然后我使用 EXSLT 从这个变量创建一个节点集,迭代它并删除重复项。

但是,一旦我调用了每年的内部模板,即使我从第一个模板复制并粘贴变量构造代码并转储它,它也不会生成任何输出。它只是拒绝再次迭代相同的节点集。

我在这里碰壁了,我绝对无法理解到底发生了什么。

这与我设法简化样式表一样多::

这是我的示例输入::

这是我得到的输出::

0 投票
1 回答
168 浏览

validation - XSLT - 验证

我有一个基于 ESB(Data-power)的服务,它从后端获取个人详细信息。当响应以 SOAP 消息的形式返回 ESB 时,我们会对响应进行一些验证。验证后,响应与验证结果一起发送回前端。这里没有业务故障。我对此有以下问题-

  1. 后端返回了多个单独的记录。我需要对所有记录进行相同的验证。如何在 XSLT 或 EXSLT 中实现这种迭代功能?

  2. 如何根据字符串值列表检查响应字段(字符串)。就像如果 A 等于 B 或 C 或 D 做这个或做那个。

  3. 是否有任何工具可以直接从响应 XSD 生成验证 XSLT?

请帮忙,它是一个生产环境,非常紧急。我在 XSLT 中没有任何背景。

0 投票
2 回答
1059 浏览

xml - xslt 1.0 上的正则表达式错误

我正在使用 xslt 1.0 来转换我的 xml。

我有这个字符串:

我想像这样格式化它:

为此,我尝试了这个 xslt:

但是当我运行它时出现以下错误:

我究竟做错了什么?

0 投票
1 回答
118 浏览

xslt - 如何使用 Saxon EE SQL 扩展获取列名

Saxon EE XSLT 处理器具有出色的SQL 扩展。它允许将 SQL 数据库中的结果直接导入 XSLT。但是,我无法将表列名称转换为 XML。相反,它只是使用 XML 之类的

有没有办法解决这个问题?我对我可以使用的技术有点限制,但是有另一个 XSLT 处理器允许它,请告诉我。

0 投票
2 回答
3067 浏览

xslt - 在 SOAP 消息中使用 XSLT 替换命名空间 uri

我有一个输入肥皂消息,试图用不同的字符串替换命名空间 uri 的一部分。我可以用不同的 URI 替换整个 URI,但不能修改现有的 URI。我需要寻找“OLDSTRING”并替换为“NEWSTRING”。字符串 VARIABLESTRING 在每个输入 xml 中都不同,所以我应该保持在输出 xml 中的原样

输入 XML:

输出 XML:

我已经尝试了以下 XSL,并且能够更改命名空间 URI,但我只想将 'OLDSTRING' 替换为 'NEWSTRING' 并保持剩余字符串不变。

XSLT:

0 投票
1 回答
953 浏览

xslt - EXSLT 字符串:替换

我在让我的 XML 使用 EXSLT str:replace 模板正确转换时遇到问题。

这是我的 XML:

这是我的 XSL:

我的问题是我只得到一个 XML 文档标题,没有别的,但没有别的?我认为我离一个可行的解决方案还差得很远,问题可能在于我为模板上的“匹配”参数设置的值,以及带有参数节点的调用模板中的选择参数。

任何帮助,将不胜感激。

麦克风

0 投票
2 回答
3162 浏览

javascript - 如何让 XSLT Javascript 扩展函数返回节点集?

有没有一种简单的方法可以让用 javascript 编写的 XSLT 1.0 中的扩展函数返回一个节点集?
我可以为此创建一个新的 java 类,但我宁愿在脚本本身中添加一些代码。
当这可以用所有或大多数 XSLT 处理器支持的另一种脚本语言(VB 脚本?Groovy?C#?)来完成时,当然也可以。

我有以下简单的脚本:

它返回一个字符串,因此在 Xpath 表达式中调用该函数没有问题。
我想要的是一个节点集的结果。但是当我将脚本更改为

然后调用该函数会出错,因为数组不会自动转换为节点集。

我查看了arrays-with-java-xslt-extensions,但这更多的是为此创建一个新类,我现在希望避免。

那么应该将哪些语句添加到脚本中以便将数组转换为节点集,从而允许在 Xpath 表达式中使用函数调用?

0 投票
1 回答
484 浏览

javascript - 在 javascript xpaths 中使用 exslt 扩展

我想在使用 exslt 扩展的网络应用程序中使用 javascript XPaths,但我不知道如何做到这一点。

假装我有一个 html 文档,里面有一些 div。我想运行这个:

只有这样会在评估中导致无效的 XPath 表达式异常。我正在使用铬。

我还需要做些什么来使这些东西正常工作吗?我在 exslt.org 上看到有 javascript 的实现,但我如何确保它们可用?我是否需要将我的 javascript 插入到 dom 中的命名空间脚本元素中或一些疯狂的东西中?

更新

如果直接使用浏览器 dom + javascript 和 xpath 无法做到这一点,是否可以在浏览器中使用 exslt 扩展编写 XSLT 来模拟 document.evaluate(返回与 xpath 匹配的元素列表)?

0 投票
1 回答
2958 浏览

xslt - 在 XSL 中使用 Map 来扩展缩写

我在创建地图时看到了类似的问题。

该答案具有以下代码:

我想替换输出命令以在我的 XML 中使用一个值,以查看它是否是映射中的键,然后用该值替换它。

在地图上进行 for-each 选择并与包含进行比较的最佳方法是什么?

这是 XML 的一个片段:

内容节点值可能有一个包含我想用完整值替换的缩写的字符串。

谢谢,保罗

0 投票
3 回答
1597 浏览

xslt - exsl:node-set 将什么视为根节点?

我无法理解 exsl:node-set 函数的工作原理。

我有一些 XML 正在扩展并用于动态填充 exsl:node-set。假设它目前是这种格式:

这按要求工作,输出 $wrapNodeSet 显示上面的节点标记。根节点名称使用名称($wrapNodeSet/*)显示为“节点”。

现在我需要扩展它以拥有 2 个节点并动态填充节点集。所以:

输出节点集包括节点元素,但输出根节点的名称现在更改为“节点”。

有人可以解释为什么仍然输出节点元素吗?