问题标签 [xslt-1.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 投票
2 回答
2012 浏览

xslt - XSLT 1.0 递归

我被递归困住了,想知道是否有人可以帮助我。

我有<Receipts><Deposits>元素,它们并不冗长,即<Receipts>元素没有属性来显示<Deposit>它的目标。我需要弄清楚<Deposits>“仍需支付的金额”以及最后一张收据何时支付(如果有的话)。

我正在尝试使用以下代码来做到这一点:

想法是收取第一笔存款,看看是否有收据。如果押金未全额支付并且有更多收据 - 使用所有相同的参数调用该 recorsive 函数,除了现在计入后续收据。

如果没有更多收据或已支付押金 - 正确处理(添加所需属性)。否则继续进行第二次存款。等等。

但是,XSLT 崩溃并显示错误消息“处理器堆栈已溢出 - 可能的原因是无限模板递归”

我真的很感激任何帮助/提示......我对递归不是很好,也无法理解为什么我的这里不起作用。

谢谢!:)

0 投票
2 回答
1014 浏览

xslt - XSLT 1.0 对递归逻辑的帮助

我在逻辑上遇到问题,并会感谢任何帮助/提示。

我有<Deposits>元素和<Receipts>元素。但是,没有任何标识向什么存款支付了什么收据。

我正在尝试<Deposits>使用以下属性更新元素:

  • @DueAmont - 仍需支付的金额
  • @Status - 无论是已付、未付(部分付清)还是到期
  • @ReceiptDate - 支付这笔押金的最新收据日期

每笔押金都可以用一张或多张收据支付。也有可能发生,一张收据可以涵盖一笔或多笔存款。例如。如果有 3 个存款:

  1. 500
  2. 100
  3. 450

使用以下收据支付:

  1. 200
  2. 100
  3. 250

我想获得以下信息:
押金 1已全额支付(状态=已付,dueAmount=0,receiptNum=3。
押金 2已部分支付(状态=未结,dueAmount=50,receiptNum=3。
押金 3未支付(状态=到期,到期金额=450,收据编号=NAN。



实际 XML:



我在代码中添加了注释,解释了我正在尝试做什么。我现在连续第三天盯着这段代码 - 看不出我做错了什么。请问有人可以帮我吗?:)

谢谢!

设置:
$deposits - 所有可用存款
$receiptsAsc - 所有可用收据按其@ActionDate 排序

代码:

0 投票
2 回答
543 浏览

xml - 使用 XSLT 1.0 删除相关元素

我正在尝试从下面的 XML 中删除具有扩展名为“config”的 File 子级的 Component 元素。我已经设法完成了这部分,但我还需要删除与这些组件具有相同“Id”值的匹配 ComponentRef 元素。

基于其他 SO 答案,我提出了以下 XSLT 来删除这些 Component 元素:

不幸的是,这不会删除匹配的 ComponentRef 元素(即那些具有相同“Id”值的元素)。XSLT 将删除 ID 为“Comp1”的组件,但不会删除 ID 为“Comp1”的 ComponentRef。如何使用 XSLT 1.0 实现这一点?

0 投票
1 回答
1971 浏览

xslt - 使用 XSLT 1.0 包含纯文本文件

如何在 XSLT 1.0 样式表中的结果文档中包含纯文本文件的内容?即,就像document(),但不解析它:

几乎可以肯定,如果没有扩展,这是行不通的,因为:

  1. 在 XSLT/XPath 2.0 中为此定义了一个特殊的 XPath 函数:

    /li>
  2. XSLT FAQ 仅列出了通过 EXSLT 实现此目的的Java 扩展

但是,也许我错过了什么?

0 投票
4 回答
6473 浏览

xslt - 在 XSL 中更新变量

XSL 中有什么方法可以更新全局变量吗?

我想检查我已经转换了哪些元素并采取相应的行动。这将需要我以某种方式将元素的名称添加到某种列表中,并在每次转换新元素时更新它。

但是由于xsl:variable它不是人们期望的“变量”,所以一旦它被定义,我就无法添加任何东西。

我有多个包含的数据文件,因此使用只知道当前节点集的 xsl 函数将无济于事。

== 编辑 ==

这就是我现在的转变。但它会包含每次在不同子文件中重复引用的文件。

数据文件看起来像这样:

0 投票
2 回答
393 浏览

sorting - 使用 XSLT 排序时忽略“A”和“The”

我想要一个列表排序,忽略任何初始的定冠词/不定冠词“the”和“a”。例如:

  • 错误喜剧
  • 村庄
  • 仲夏夜之梦
  • 第十二夜
  • 冬天的故事

我认为也许在 XSLT 2.0 中,这可以通过以下方式实现:

但是,我想使用浏览器内处理,所以必须使用 XSLT 1.0。有没有办法在 XLST 1.0 中实现这一点?

0 投票
1 回答
251 浏览

perl - XSLT 1 纯文本间距

使用 Perl 的 XML::LibXSLT 需要我使用 XSLT 1.0,这意味着我无法使用 XSLT 2.0 功能。有没有办法我仍然可以在我的处理的纯文本输出中干净地填充文本?我想要的是:

成为

我意识到 XSLT 不一定非常适合这种类型的格式化,但数据也可能会以其他方式格式化。

0 投票
1 回答
800 浏览

xslt - XSLT 1.0 计算属性中具有相同值的元素,并显示它

我有一个变量包含:

我会输出一个表格,第一列是 p2 的值,第二列是它出现的次数。对于 p2 的每个值,我应该只有一行。

0 投票
3 回答
376 浏览

xslt - XSLT1.0 不同元素的渲染序列存储在一个变量中作为 M x N 表

我有以下 XML(它被简化并且大多数属性被省略):

我有一个变量,包含不同的元素:

我想在一个有 2 列的表中显示该数据。我正在使用 XSLT1.0 和 MSXSL 处理器。

我一直在尝试使用我能想到的最简单的解决方案:

非常感谢任何帮助。

0 投票
2 回答
895 浏览

xml - 使用模板而不是 for-each 对 XML 数据进行简单分组的 XSLT 到 HTML

自从我成为共享点管理员以来,我一直在断断续续地使用 xslt,它使用 xslt 来显示列表数据。我最近开始使用它来转换我使用扩展方法转换为 xml 的数据库结果。我正在尝试生成干净的 html。

我的第一次尝试,效果很好。但是,我到处都使用 for-each,从那以后我读到这是一件坏事。我读了一堆关于使用密钥的东西,但我无法理解或让它工作。所以我重写了这个样式表,下面是它下面的那个。它使用没有 for-each 的模板。

我现在将其重写为:

我没有包括示例输入和输出,因为它们都是自动生成的。如果需要,我可以花很多时间,并尝试制作一些东西。

我的问题是,这是一种更好的方法吗?此外,如果关键方法更好,有人可以解释它,或者提供一个很好的解释的链接吗?