问题标签 [node-set]

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 投票
5 回答
8733 浏览

xslt - 结果树片段到节点集:所有 xsl 引擎的通用方法

回答另一个线程(请参阅stackoverflow:生成 css 颜色方案)我遇到了下面的问题,其中不同的 xsl 引擎似乎需要不同的方法将结果树片段转换为节点集。

简化问题(但有关此背后的完整故事,请参见上面的链接),我希望有一个包含颜色值列表的内联树。由于这必须在 Xpath 表达式中使用,我必须从中创建一个节点集,专门用于 MSXML xx xsl 引擎(内置的 XML Spy 在解释包含构造为 rtf 的变量的 Xpath 表达式时比较容易)。
另一个线程stackoverflow:automating-exsltnode-set帮助了我。生成的节点集用于从输入 XML 创建新变量 rtf。
同样,当在 Xpath 表达式中使用新变量时,MSXML 会报错,因此我使用 node-set 函数从中创建一个节点集。
到目前为止一切顺利,MSXML xx 不再出错。
但是当我在 XML Spy built-in 或 Saxon 9he 中运行相同时,我得到另一个错误:似乎节点集函数是未知的:

请注意,在此特定示例中不需要这种两步方法,但正如我所说,我简化了一些事情;我只是想知道如何编写一个适用于所有 xsl 引擎的 XSLT 1.0 转换。

我使用的 XSLT:

输入文件:

结果为 MSXML 3.0/4.0/6.0:

Saxon9he 中的结果:

生成 XML Spy 内置 xsl 引擎:

0 投票
2 回答
5290 浏览

xslt - 使用从结果树片段构建节点集变量

xsl:choose是否可以使用(用于 MSXML 引擎)从 rtf 创建节点集变量?

我有以下构造:

std:colorList当然是树片段。以上工作正常,并且可以,因为两个替代方案的代码相同,但不是那么大。
但是对于较大的代码片段我想知道是否可以通过首先根据rtf声明变量,然后执行代码来避免重复代码;就像是

但这不能正常工作:MSXML 抱怨colorList不是节点集,因此不能在xsl:for-each.

std:colorList请注意,在工作示例中,由于“复制”到colorList变量中而没有发生此错误。显然这是一个 xsl 解析错误,而不是运行时错误。
我应该使用其他东西xsl:copy-of吗?或者还有其他方法可以达到同样的效果吗?

如果您想知道,std:colorList内容如下:

0 投票
2 回答
3162 浏览

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

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

我有以下简单的脚本:

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

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

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

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

0 投票
3 回答
1597 浏览

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

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

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

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

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

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

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

0 投票
1 回答
1568 浏览

xslt - 如何从 XSLT 变量中创建的节点中求和()值

我无法对变量中的值求和。

XSLT 源代码

XML 源:

我希望这会给我结果,但我得到的只是“NaN”

0 投票
3 回答
7164 浏览

xslt - 无法从 XRTreeFrag 转换为 XNodeSet

我有以下测试代码...我正在尝试将节点集作为参数传递。几个小时后,我终于能够将它传递给我的模板。

我如何将节点集传递给模板:

我的模板如何接收它:

如果我用一个衬里设置参数,那么它不会抱怨......例如:

但是,一旦我尝试像这样设置它,它就会中断:

收到此错误消息: org.apache.xpath.objects.XRTreeFrag 无法转换为 org.apache.xpath.objects.XNodeSet

我只能找到另一个可以追溯到 2000 年的线程,谈论这个类似的问题......我需要使用类似 node-set($customData)/* 的东西重新设置它,但我试过了,它是不行。

编辑: 好的,我可以确认我已成功通过模板中的节点集。但我仍然无法将它复制到我的变量中......它一直说它仍然是一个 RTF。

上面的测试表明我可以毫无问题地访问 $customData 和原始 /data ,它们都显示了记录......但是 $data 搞砸了。所以这意味着从 $customData 到 $data 的副本不起作用......

我尝试了以下方法,它们都不起作用:

任何的想法...?

0 投票
2 回答
1094 浏览

android - Android:如何在 Android 中使用 xxx:node-set() 进行 XSLT 转换

我有一个 XSL 文件,它成功地在桌面浏览器上转换了我的 XML。在那个 XSLT 中,我使用了 EXLT node-set() 函数。
尝试在 Android 上使用相同的 XSL 文件转换相同的 XML 文件时,它会抛出一个错误,指出“XPATH 表达式中的错误”,并指向我调用 node-set() 函数的行。
关于如何在 Android 中使用 xxx:node-set() 的任何想法?

0 投票
1 回答
570 浏览

xml - XSLT 2.0,从后代递归获取名为 enum 的祖先::child 元素

更新:2012 年 9 月 18 日,下午晚些时候 101.(a) 在这里是额外的,并且是我需要的祖先::*[@belcode] 之上的。它们在下面的 XML 示例中,我无法弄清楚如何不获取它们。

错误的 XML 输出示例:

XSL 中只有带有 belcode 的 for-each 表现不佳:


更新:2012 年 9 月 18 日我测试了你给我的代码,但我的外部条件不起作用......另外,我使用的是 XSLT 2.0,所以不需要 for-each。

新的 XML 输出不能正常工作(祖先太多),但我在正确的 p 元素上获取它们:

XSLT 代码非常接近,我“认为”它需要更多的工作。我只需要从具有 belcode 属性的第一个祖先获取子枚举元素,然后返回到作为我的文本元素父元素的子元素的枚举。

我想我需要用可以让我回到我想要的顶级祖先的东西替换 value-of 中的 *,我对 XPath/XSLT 还很陌生,并且与语法作斗争。


提前感谢您提供任何可能的建议。

如何从子条款文本节点(我保证我没有命名元素文本)向上爬树,直到我到达有代码的祖先,并且没有 display-inline="yes-display -inline”,并获得所有子“枚举”的包容性?途中的所有祖先元素也没有标题或文本子元素,但有一个枚举。(是的,有一个 XML 示例)。

背景:

我已经将 XML输入嵌套在 section/subsection/paragraph/subparagraph/clause 中(每个都可以有一个 enum、header、text child),它被展平以 输出一个充满“p”的部分,其中使用了不同的样式成为子级别,其中“枚举”、“标题”、“文本”都放入“p”中。

我遇到问题的地方是,在某些情况下,就像我下面的示例一样,只有一个或多个级别的枚举。输出段落应该获得没有“标题”或“文本”的 FIRST 级别的代码属性(转换为样式),以及该级别与具有“文本”的级别之间的所有“枚举”,这就是“p”包装器获得输出,以便适当地进行展平。用英文来说,我需要一个 (p style="P20")(e)(1)(A)。

嵌套 XML 输入:

期望的输出:

我得到的输出:

不起作用的 XSL 代码段:

我意识到这只是 //subparagraph/text 片段,但它是需要显示输出枚举的部分,并且我知道如何停止它们在其他地方显示,一旦我将它们放在我想要的位置。

0 投票
1 回答
321 浏览

xquery - XQuery 节点是序列

is-node-in-sequence-deep-equal在 XQuery 中吗?我想知道,因为我在xqueryfunctions.com上看到过该功能,但我无法使用它。

0 投票
1 回答
398 浏览

xslt - exsl:node-set 上的 sum 带回了不正确的值

我编写了一些 xsl 来创建一些 xml 代码,然后对其进行求和。这是代码:

结果如下: 全部:96363464029561 年份:2005 值:73837

数字列表(来自 All: 输出)如下: 9636 3460 29561 总数应为 42657。但是,来自 sum(exsl:node-set($tmpTotal)/root/item) 的总数为 73837。如果xml中的数字是正确的,为什么我得到的总数不正确?在此先感谢您的帮助。