问题标签 [xslt-grouping]

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 投票
3 回答
900 浏览

xml - XSLT 找到最低价格

我是 XSLT 的初学者并使用将 XML 转换为 XML。

我需要得到Prices总和最低的标签。

源 XML:

XSLT:

输出:

预期输出:

如上所示,输出也应该具有Prices最低值的标签作为属性。

请帮忙。

0 投票
1 回答
889 浏览

xml - 带分组的 XSLT 1.0 计算

我是 XSLT 的初学者,并使用它通过 Java 将 XML 转换为 XML。

源 XML:

XSLT:

输出 XML:

预期输出 XML:

在源 XML 中,我没有收到任何书籍及其价格,但它们不相关。

<Price>标签表示一本书的价格。我需要计算所有书籍的总价格如下

请帮忙。

0 投票
1 回答
508 浏览

xml - XSLT 1.0 获取节点集

我是 XSLT 的初学者。我正在使用 XSLT 通过 JDK 6 将 XML 转换为 XML。

下面是我从 Web 服务收到的源 XML。

源 XML:

XSLT:

当我在源 XML 上应用上述 XSLT 时,我得到以下输出 XML。

输出XML:

预期输出:

问题在于创建变量的逻辑PrefAirlines

我也尝试过以下方法,但没有得到预期的输出。

是否有任何可用的函数可以让我获取节点集而不是单个值?请帮忙。

0 投票
1 回答
328 浏览

xml - XSLT 分组/合并子项(使用密钥)

我试图了解如何使用我已经编写的代码来推断解决方案。

为了简化,我将首先解释我想要做什么以及到目前为止我得到了什么。

假设我在 XSLT 中有一个 XML 变量,其中包含几个具有相同标题属性的节点。

使用@Dimitre Novatchev 解决方案,我设法将它们组合到一个节点中。

所以如果我有:

使用以下密钥后

我会得到:

现在我想稍微修改一下,我希望能够根据我的决定合并/组合标题。考虑到这一点,在上面的示例中,我想将 xxx 和 zzz 定义为同一个组,尽管它们使用不同的标题(极端情况 - 在我的工作区中,我将它们定义为相同 - 我可能有更多情况,例如这)。

如果您能告诉我一般应该采取什么方向,我将不胜感激(我想我需要修改我的密钥或使用替代方法 - generate-id 或其他方法)。

我发现自己只实施了需要大量不必要努力的糟糕解决方案。

0 投票
1 回答
357 浏览

xml - 如何按可数字段对 xslt 1.0 中的节点进行分组?

我有一个大约这种xml:

如何按具有固定语言的名称字段对费用进行分组?例如,使用 xlt 1.0 按英文版名称分组收费?我想存在 for-each-group 的 xslt 2.0 不会有问题。但在 1.0 中,我什至无法创建带有复杂指令的 xsl:key。

恩-我们

非常近似:我希望我的 xslt 渲染像这样转换它:

它按名称对费用进行分组并汇总价格。我们有一个获取翻译的复杂规则: 1. 我们定义一种默认语言 - 如果我们没有在 XML 中指定这种语言,我们为 xslt 采用默认语言(由开发人员手动设置)。2. 如果节点没有默认语言的翻译,我们在 FallbackLanguage(always en-us) 上检查翻译。3.如果我们之前没有指定翻译,我们设置一个翻译值为[NO NAME]

我的想法是将翻译逻辑封装到单独的模板中:

所以在那之后我想让变量 ChargesToDisplay 由许多对组成,看起来像

并在 ChargesToDisplay 上进行所有分组。GetLocalizedEntity 实现:

0 投票
2 回答
105 浏览

xml - 如何使用 xslt 根据每条记录中的另一个元素值获取唯一(不同)元素值

我需要根据每条记录中的另一个元素值获取一个元素值。

如果 RECORD_TYPE='ERROR' 那么我必须为 ERRORS:ERROR_DESC 下的所有记录打印所有不同(唯一)的 ERROR_DESC 值

每个错误描述都应打印在新行中。

预期输出为:

提前致谢。

0 投票
2 回答
1180 浏览

xslt - xslt:通过中间参考节点选择唯一节点?

XSLT 2。

嗨,我有一个 xml,它有 3 个节点,从名为“孩子”的角度命名:孩子、父亲和母亲父亲。从父亲节点开始,我需要根据子节点中的 ID 找到一个子母亲 MothersFather 节点(子节点是连接其他两个节点的中间参考。)

因此,对于每个父亲来说,他的孩子都有不同的MothersFather - 这些不是人类,一个父亲可能有数百个孩子,但只有大约 20 个相关的 MothersFathers :)

XML 的简化版本(在现实生活中大约有 80 个父亲节点、3000 个子节点和 400 个母亲父亲节点):

我的 xslt 看起来像:

在 Try 1 中,我可以获得所有节点和 MothersFatherID。Try1 的输出是:

在我选择“不同值”的 Try2 中,我希望输出如下:

(不是真正的输出 - 只是调试显示我可以引用正确节点的东西)。

但我不知道我打算用什么来引用唯一的 MothersFatherID 以传递给“应用模板”调用。

无论我尝试过什么,我都会得到以下错误的变化: Required item type of first operand of '/' is node(); supplied value has item type xs:anyAtomicTypeAxis step child::element('':MothersFatherID) cannot be used here: the context item is an atomic value. 我认为他们的意思是我正在尝试选择使用字符串值的节点,反之亦然....也许我对 distinct-value() 函数的使用完全错误?

任何人都可以阐明如何做到这一点吗?(我一直希望这个 xslt 在我不会被这种事情困住时会有一些禅意的时刻)。

此外,一旦我这样做了,我将希望 MothersFather 对每个父亲进行排序 - 在真正的 xml 中,每个“ID”都有一个“名称” - 希望每个“排序”语句将是类似参考什么解决了上述问题?

谢谢你的时间。布莱斯。

编辑:

哇!!谢谢你的回答迪米特。我已经检查过了,希望你能帮我把它分解一下,因为我没有完全理解它?答案是:

我可以使用所涉及的密钥。

这条线<xsl:template match="Children|MothersFathers|text()"/>——这条线是怎么做的?如果我通过调试器单步执行它,它就会直接跳过这条线。如果我将其注释掉,就会有很多我看不到来源的多余输出。

以及给出 MothersFather 节点的 apply-templates 行 ——我一直试图在纸上分解它以查看其神奇之处,但并没有完全理解它。这有点类似于 通过当前的父亲 ID 获取匹配的 MothersFather 节点,其中生成的 id 为“(dot dot)” - 与父节点有关吗?哪一个?等于基于 ChildByFIdAndMFId 键生成的 id - 这 1 是否只获得匹配生成的 id 的第一次出现,从而给出我的不同值?<xsl:apply-templates select= "key('kMFById', key('kMFByFId', ID)[generate-id(..) =
generate-id(key('ChildByFIdAndMFId', concat(../FathersID,'+',.))[1] ) ] )">
key('kMFById', key('kMFByFId', ID)[generate-id(..)[1]

(Dimitre 的这个答案也与 JLRishie 的答案非常相似。他的那种似乎很有效,我在 Dimitre 那里遗漏了什么吗?)

问候,布莱斯。

0 投票
1 回答
637 浏览

xml - 使用 XSL 转换 XML,然后将输出格式化为 HTML

我需要使用 XSL 格式化 XML 输入以获得更方便的结构。作为处理的下一步,我想将其转换为 HTML。假设我有以下输入:(0)

和以下 XSL 模板:(1)

它给了我很好的 XML:(2)

我有另一个将 XML # 2转换为 html 的 XSL:

所以这是一个问题:我想一步处理带有两个模板(或合并的模板)的输入 xml。我该怎么做?

提前致谢。

0 投票
2 回答
634 浏览

sorting - XSLT 仅显示词汇表索引的唯一值?

本词汇表从每个条目的第一个字母中得出索引。我正在尝试解决如何仅显示唯一值。已经研究了前面的兄弟和 position() 但似乎找不到正确的方法。我受限于使用 XSLT 1.0 和属性。

词汇表.xml

数据.xml

词汇表.xsl

到目前为止的输出

一个 | 一个 | 乙 | c | C | c | ○ |


苹果
   带种子的红色水果鳄梨 鳄梨酱中

的    醇厚水果 b 香蕉    热带黄色水果 c 哈密瓜    一种甜瓜 C 樱桃    成簇生长的红色水果 c 蔓越莓    感恩节享用的酸浆果 o 橙子    橙子柑橘类水果

























期望的输出

一个 | 乙 | c | ○

一个
苹果
   带种子的红色水果

鳄梨 鳄梨
   酱中的一种醇厚水果

b
香蕉
   A 热带黄色水果

c
哈密瓜
   一种甜瓜

樱桃
   一种成簇生长的红色果实

蔓越莓
   感恩节享用的酸浆果

o
orange
   橙色柑橘类水果

0 投票
1 回答
1397 浏览

javascript - XSLT 中的 JavaScript

在 XSLT 中,我必须为特定元素分配一些值,并且它应该使用 Javascript 进行打印。例如,123 是我的输入元素数据,我希望使用 XSLT 中的 Javascript 代码以使元素显示“123 3456”的方式输出。(我使用的是 XSLT 1.0)。

如果有人能解决这个问题,那将是一个很大的帮助。