问题标签 [xslt-3.0]

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 回答
1001 浏览

json - 使用 xslt 3.0 解析 json 时 prolog 错误中不允许内容

我正在尝试做一个 POC 将 json 转换为 xml 格式。现在我通过 java 使用 Saxon-HE 版本 9.8.0-5

让我们假设一个简单的 json 为:

现在java代码如下:

但我得到以下错误:

sample_test1.json 的第 1 行第 1 列出错:SXXP0003:XML 解析器报告的错误:prolog 中不允许内容。

当我尝试将 json 内容放在任何 xml 元素中并对其进行处理时,它是成功的。为什么??我们不能直接处理 json 而不将其内容放入任何 xml 结构中吗?

0 投票
1 回答
372 浏览

xslt-3.0 - xslt:删除特定元素前后的空格

我正在使用 Saxon PE 9.7,XSLT版本 3.0。

我尝试在<w>before之后删除空间<damage>。我尝试了几种解决方案:normalize-space(), translate(., ' ', ''), even css, white-space: nowrap... 我还查看了如何使用 xslt 删除所有属性值中的空格?. 不幸的是,没有一个工作。

TEI

当我damage/supplied/w在第二个之前<w>,它可以工作,但不是在第一个之后<w>

XSLT

在此先感谢您的友好建议。

0 投票
1 回答
347 浏览

xslt-3.0 - 搜索并替换一个元素,使用xslt 3,替换词组是一样的

虽然我有一个 xml 文件作为输入,例如:

我试图找到在文件中或在 xsl 本身中包含以下信息的最佳方法:

所以如果我制作了一个逗号分隔的输入文件,它看起来像:

我已经尝试过使用 xslt 2,但我不断收到错误,例如不允许多个项目的序列,因为变量 $search_phrase 的值...

期望的输出:

有人可以给我一个 xslt-3.0 的例子,我可能可以替换上述短语,并添加所需的元素,只要有匹配项?

我需要做什么:

在完整的 xml 文件中,有许多记录可以具有相同的描述。我还需要对描述进行完全匹配:不应匹配短语“深入了解使用 XML 创建应用程序,作者...”。在我的例子中,我也有一个描述,其中的区别只是这种情况,例如“深入了解使用 XML 创建应用程序”。不应该也匹配。因为在我的代码中我使用小写,这也可能是问题,但不确定......每当有匹配项时,必须将沿着搜索词指定的位置添加到 location 元素中,该元素目前不存在于任何记录在xml中。

0 投票
2 回答
265 浏览

xml - Saxon-JS 处理包含元素的 CDATA 是否存在已知错误

我想知道 Saxon-JS 处理包含 CDATA 元素的方式是否存在已知错误。

我有一个有效的 XSLT 3.0 和 XML 流程,其中包括从包含 CDATA 的元素中获取文本并在转换中应用 HTML 标记。我会尝试在不发布脚本的情况下提出问题。

我正在使用 Saxon-HE 9.8.0.3 并尝试使用最新的 Saxon-JS。从.xsl文件转换为文件的所有内容都.sef有效,除了从包含 CDATA 的元素中获取的文本的预期格式。

我有一个<docText>只包含<![CDATA[ ... ]]>封闭的多行文本的元素。

我用类似这样的方式调用模板: <xsl:apply-templates select="ancestor::document/docText"/>

我匹配<xsl:template match="docText/text()">

包含在变量中的文本的最终操作<docText>输出如下: <xsl:value-of select="$step9-2" disable-output-escaping="yes" />

同样,当我从 Java 的命令行使用 Saxon-HE、XML 和 XSLT 3.0 的原始转换时,输出对于工作 HTML 标记是正确的。与 Saxon-JS 一起使用的转换脚本几乎相同,除了最初在 CDATA 部分中的文本格式外,所有逻辑都有效。文本已输出,但未格式化。

错误是否有任何原因可能是由于 Saxon-JS 处理或不处理 Saxon-HE 处理 CDATA 部分的方式?

迈克尔

0 投票
1 回答
7684 浏览

json - xslt 3.0 json-to-xml 和 xml-to-json 转换

目前我需要使用 XSLT 3.0 和 Saxon-HE 将 json 转换为 xml 和 xml 到 json,反之亦然。

下面是我的 json abc.xml 文件

下面是 xsl 文件 xyz.xsl

下面是输出xml

现在我的问题是如何从 output.xml 中取回相同的 json?我正在使用 xslt 函数 xml-to-json() 尝试此操作,但输出格式看起来不正确。下面是得到的 xsl 和输出 m。

123.xsl

输出 JSON

在此处输入图像描述

在这里试试这个例子https://xsltfiddle.liberty-development.net/3NzcBsQ

在 xsl 中,我选择了错误的名为 data 的模板。因为数据模板不在 output.xml 中。我不确定我应该在这里写什么。

0 投票
1 回答
1129 浏览

xslt-3.0 - XSLT 3 中的条件流式累加器

使用这样的输入 XML:

我想使用单独的借方和贷方累加器创建一个可流式转换,但是当我尝试为一种类型或另一种类型创建一个累加器时,类似于此

我发现显然匹配、选择或序列构造函数中的任何模式的扫描都必须是静止的。我可以访问当前元素的属性值,但不能访问子元素或当前元素之前的任何内容。

我想知道我正在尝试做的事情是否甚至可以在流模式下使用累加器 - 我很确定我可以使用迭代器参数完成我的目标,但如果我这样做似乎是一个很大的限制我正确理解文档。

0 投票
1 回答
98 浏览

xml - 使用 xslt-3 将元素从 xml 文件移动到另一个 xml 元素

给定以下示例 xml 文件:

我需要按照规则将所有标题元素合并到作者元素中:如果作者元素已经存在,那么标题元素的值将插入作者记录中,使用分隔符,即 a | 特点。如果记录中没有作者元素,则标题元素将成为作者元素。期望的输出:

如何使用 xslt-3 实现上述结果?

0 投票
1 回答
41 浏览

xslt-3.0 - 使用 xslt-3 向元素添加数值

如果我有一个如下的 xml 文件:

如何使用 xslt-3 将 1000 的值添加到每个价格元素,所以有一个类似于当前值 + 1000 的总和?输出:

0 投票
3 回答
680 浏览

xslt - 获取节点的祖父母的名称

我正在尝试转换 XML 文件并尝试测试节点的祖父母是否具有特定名称,但我不知道如何获取祖父母名称。这是我正在研究的例子。我试图做的是得到父母,然后找到父母的父母,但它没有用。
谢谢。

这是 xsl 代码:

0 投票
1 回答
205 浏览

xslt - XLST 按孙子计数排序

我有一个包含关系列表的 xml 文件。样本:

item1 表示项目的 id。

我想打印出第 n 个 id 的列表,按它们在 item1 中的出现次数降序排列。所以我需要计算每个 id 在 item1 中出现的次数,然后按降序对它们进行排序。最后,我需要打印第 n 个 id。

预期答案:

我正在使用的 xlst 代码是:

代码返回什么:

它所做的只是打印第 n 个第一个 item1 而不进行任何排序,因此它不能按预期工作。我的代码如果主要基于:xslt 按子元素计数排序 ,但是那个使用直接子节点,我需要孙节点。我找到了另一个链接:XSLT 对孙子节点进行排序并选择另一个 谈论孙子的孙子的值,但我不完全理解这种排序是如何工作的。有人可以帮我理解第二个链接中使用的排序以及如何实现它吗?

我正在使用 xslt 3.0,但 2.0 或 1.0 中的任何解决方案都非常受欢迎。

谢谢你。