问题标签 [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 投票
6 回答
345848 浏览

xslt - XSLT 字符串替换

我不太了解 XSL,但我需要修复此代码,我已对其进行了简化以使其更简单。
我收到此错误

无效的 XSLT/XPath 函数

在这条线上

这是 XSL

谁能告诉我它有什么问题?

0 投票
3 回答
109228 浏览

xml - XSL xsl:模板匹配="/"

我只是在学习 XML 以及如何使用 XSL 文件。在一个 XSL 文件中,我发现了以下术语:

这代表什么?我可以用什么代替/?我可以写table或任何其他 HTML 标记来代替/吗?

0 投票
2 回答
504 浏览

xslt - 在 XPath 1.0 中,如何测试长度为 1 的字符串是否在其他两个代码点之间?

给定包含这些标签的文档,我如何判断文档编码中是否“”<“H”<“z”?我试图在 XPath 1.0 中做到这一点。

我什至可以不使用 contains(),但是我将如何创建一个包含从“”到“z”的字符的字符串来进行测试?

0 投票
2 回答
43364 浏览

xslt - 为什么 XSLT 默认输出所有文本?

嗨,我已经执行了一个转换,如果它是空的,它会丢弃一个标签。

我想检查我的转换是否工作正常,所以我没有手动检查,而是编写了另一个 XSLT 代码,它只检查 OUTPUT XML 中该特定标记的存在,如果它为空,那么第二个 XSLT 应该输出一个文本“找到”。(我实际上并不需要某种 XML 类型的输出,但我只是使用 XSLT 进行搜索。)

当我尝试使用此 XSL 代码时::

它输出 XML 文件中存在的所有 TEXT DATA,

为避免这种情况,我不得不编写以下代码::

为什么以前的代码输出 TEXT,我为什么要坚持 XSL 忽略所有其他文本?是所有 XML 解析器的行为还是我自己的行为(我正在使用 msxml 解析器)。

0 投票
2 回答
510 浏览

xslt - 使用 XSLT 处理循环依赖项

我正在处理一个简化的 XML 文件,看起来像这样:

XSLT 样式表必须处理我们感兴趣的特定资源,我将其称为资源,以及所有递归依赖项。id依赖项是其他资源,由它们的属性唯一标识。

一个资源是否被处理两次并不重要,尽管最好只处理每个所需资源一次。处理资源的顺序也无关紧要。

重要的是处理资源及其递归依赖项。我们不能只处理所有资源并完成它。

一个简单的实现如下:

此实现适用于上述示例以及许多实际案例。它确实有一个缺点,即它经常多次处理相同的资源,但如上所述,这并不是非常重要。

问题是有时资源具有循环依赖关系:

如果您使用朴素的实现来处理此示例,并且从处理abc开始,您将获得无限递归。

不幸的是,我无法控制输入数据,并且在任何情况下循环依赖都是完全有效的,并且相关规范允许。

我提出了各种部分解决方案,但没有任何一种方法适用于所有情况。

理想的解决方案是防止节点被多次处理的通用方法,但我认为这是不可能的。事实上,我怀疑这整个问题是不可能解决的。

如果有帮助,我可以使用大部分 EXSLT(包括功能)。如有必要,我还可以使用任意数量的其他 XSLT 脚本对输入进行预处理,但最好不要对不会出现在输出中的资源进行过多的预处理。

我不能做的是切换到用另一种语言处理这个(至少不是没有大量的重新设计)。我也不能使用 XSLT 2.0。

有任何想法吗?

0 投票
2 回答
1375 浏览

xslt - XSL 处理器堆栈溢出 - 不明白为什么

我正在尝试有条件地显示 HTML 页面的内容,具体取决于是否为公认的公司生成了文档。

但是,转换不起作用,我不明白为什么:(我使用 MSXML3.0 作为转换器,使用 oXygen 作为 IDE,这给出了我在下面提出的错误。

我所做的是构建一长串所有公认的公司(默认和额外的,如果有的话)。然后我将它们拆分为存储在变量<token>中的元素。$companiesKnownList为了确定一家公司是否在该列表中,我计算了它出现的次数:

如果小于 1,则公司不出现在$companiesKnownList变量中,因此无法识别。否则,如果它在$companiesKnownList变量中出现一次或多次,则它是公认的公司。然而,这是它中断并显示以下错误的地方:

我注意到,如果我的 XML 有一家公认的公司,@ProductName="ski"那么转换会因堆栈溢出而失败。如果我有一家未被认可的公司,@ProductName="bla"则显示转换作品并显示它不是认可公司的文本。

我不明白合法公司出了什么问题。如果您能帮助我,我将不胜感激。我已经盯着它看了一天......没有任何进展:S

谢谢!

这是我的样式表:

XML很简单,例如:

在此示例中,ski是公认的公司,但转换失败。 <?xml version="1.0" encoding="UTF-8"?> <Doc ProductName="ski" />

在此示例中,blais not a known company 并且转换成功并显示文本:“此文档无法识别此类公司。” <?xml version="1.0" encoding="UTF-8"?> <Doc ProductName="bla" />

0 投票
1 回答
626 浏览

xslt-1.0 - 获取相对于节点集的前兄弟

我查询并按字母顺序排序一堆 XML 元素,我将模板应用到这些元素上,以生成按字母顺序排列的列表。我想用这个初始值给节点加上相同的初始值:

前兄弟轴相对于文档,而不是节点集。我能做些什么?

0 投票
1 回答
233 浏览

xslt - 需要一个 XSLT 1.0 解决方案来处理相对简单的正则表达式

我的 xml 中有一个如下所示的字段(一些示例):

我需要把它变成这样的东西:

基本上,我需要从该块中取出第一个字段并从数字块中删除前导零(如果它们存在),然后将第一个字段与带有句点的第二个字段结合起来。我有点像 XSLT 菜鸟,但在 2.0 中,我相信我可以用analyze-string一个并不特别复杂的正则表达式来做到这一点,但是,我无法围绕 1.0 中任何可以工作的东西,我是排序被迫使用这里已经存在的东西。

任何帮助当然都非常感谢。

0 投票
2 回答
1857 浏览

xml - 如何不在 xslt 中为具有属性的元素输出空格

我有一个 xslt 文档,我想输出一个带有一些属性的锚 (a) 标记,这些属性的值取决于其他事物。因此,我使用 xsl:attribute 标记,其下方有一个选择/如果(反之亦然)。所以我的代码如下所示:

然而,问题是,在输出 html 中,所有的换行符/空格都在那里,这最终使我的链接在它的左侧有一个额外的空间(并且它带有下划线,使其很明显)。所以显而易见的解决方案是这样做:

摆脱空间。上面的代码没什么大不了的,但是我的实际页面有更多的逻辑,这真的很难看。我能想到的唯一另一件事就是把逻辑放在链接生成之外,但是我会重复更多的事情并且必须创建更多的变量。这是合理的,但仍不完全理想。这只是我想做的一个例子,它发生了好几次,所以我只是想知道是否还有其他方法可以解决这个问题。

0 投票
1 回答
3399 浏览

xml - XSLT 嵌套排序/for-each

我正在尝试找出执行嵌套 for-each 和排序的最佳方法。例如,我的 XSLT 下面执行以下操作:

  1. 选择一个节点集。

  2. 按日期属性排序。

  3. 执行 position() 以拉出 4 个节点。

现在,下一部分是我想要弄清楚的。在第 3 步之后,我需要再次按 Date 属性排序,但这次按升序排列……现在数据集已缩小到 4 个节点。建议?谢谢您的帮助!!


XSLT:


注意:这必须在 XSLT 1.0 中并且使用 MSXML 4.0 Parser。提前致谢!