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

xml - Xpointer:是否可以选择一个空的节点集?

问题

我有一个XInclude包含由指定xpointer属性的表达式产生的节点集。

是否可以使用 选择xpointer一个空节点集,以便不包含任何内容?


问题

原因是我的xincluded & xpointed节点可能存在也可能不存在;所以我得到一个:

XInclude 错误:XPointer 评估失败

在指向节点不存在的情况下。


例子

表达式类似于:

我想更改 XPointer 以便在找不到节点的情况下XInclude 不包含任何内容(不引发错误)。

就像是:

有没有办法做到这一点?

0 投票
2 回答
1220 浏览

xml - XSLT - 遍历节点集

我有一个这样的xml:

我需要从 col1 中获取转义集合并遍历其行。我正在使用 exsl:node-set 函数。这是我的简化 xsl:

我可以使用 xsl:value-of 函数从变量 $collection 中正确读取值,但我无法像没有行一样对其进行迭代。任何想法我做错了什么?

0 投票
2 回答
2700 浏览

xml - XSLT 使用新值复制节点和所有子节点和属性

美好的一天....我正在尝试使用更新/新元素文本和/或属性值复制节点。

我的输入 XML 文件:

所需的 XML 输出:

一段时间后,我目前拥有的 XSLT 如下:

但是,使用上述转换,我得到以下 XML 输出:

如您所见,在我声明了一个具有新@id 值的新产品元素时,添加了产品元素。由于我用来处理子节点,我相信这会再次处理产品元素。

此外,我需要帮助来更新子节点的值(在每个值前面加上“NEW_”)。在这个网站上搜索大量问题,我相信我需要一个这样的模板:

提前感谢您对我的问题提出任何建议/想法。

更新感谢@Mathias 对我最初问题的回答所提供的答案又带来了一个涉及到 XML 结构更深层次的递归的问题。

输入 XML 文件:

更新的愿望输出文件是这样的:

我只能猜测使用模板会起作用,因为每个节点都有不同级别的子节点。提前感谢您对此的想法/建议。

0 投票
1 回答
1526 浏览

templates - 如何使用模板返回节点集

我正在尝试将日期时间字符串转换为 XSLT 1.0 中基于节点的日期时间。基本上我想从

至:

为了实现这一点,我创建了这个模板:

我尝试让模板返回一个节点/集而不是一个片段。请注意,我也试过这个没有/DtNode最后。这将使我能够在不使用每个调用的节点集函数的情况下调用此模板。

可悲的是,我在尝试访问孩子时遇到了异常:

当我尝试这样做时:

有没有办法让模板返回节点集而不是字符串或结果树片段?

0 投票
2 回答
575 浏览

xml - 无法使用名称选择节点集()结果中的元素,但 * 找到它

我有一个 XSLT 1.0* 样式表,它进行一些预处理并创建一个由元素列表组成的结果片段<x>,每个元素都有两个子元素 - 让我们调用 then<a><b>

所以生成的列表看起来像:

然后,我使用 node-set() 将其转换为节点集,并使用 apply-templates 将所有<x>元素转换为输出表示。

到目前为止,一切都很好。

match="*"但是我必须在输出模板上使用规则,虽然我可以使用"*[1]"and获取子元素,但我无法使用and"*[2]"找到它们- 我只是得到一个空结果。"a""b"

位置语法可以作为一种解决方法,但它相当脆弱,我想将它改回处理元素名称。此外,它的可读性不是很高。

我确实怀疑这可能是一个命名空间问题(<x><a>并且<b>没有在输入或输出文档的原始模式中定义),但据我所知,当使用“*”选择元素时没有命名空间装饰。

以防万一它很重要,我在 cygwin 下使用 xsltproc(libxml 20902、libxslt 10128 和 libexslt 817)。

关于我可能做错的任何想法或调试提示?

(*-我必须使用 XSLT 1.0,因为它设计为在 Web 浏览器中运行。)


编辑:根据要求添加示例

输入 test.xml:

转换 test.xslt:

输出(来自 msxslt 和 xsltproc 的相同输出):

0 投票
1 回答
31 浏览

xslt - 通过约束仅返回节点

我有一个旧的 wddx 文件(并且可能必须经常这样做),我想为此编写一些 XSL,这将使我计算出具有具有特定属性的子节点的“顶级”节点的数量turn 有一个子节点,其文本值以某个子字符串开头。例如,这种语法让我获得了 82 个节点的计数(从技术上讲不是父节点,但每个父节点只有一个名称属性为“任务”的“var”节点)......

...但是,我正在寻找的实际节点数是所有返回 true 到上述条件的节点......所以上面该语法的 count() 结果为 82......它应该是 6,因为只有其中六个结果是正确的。

我认为这与节点集有关,并创建一个仅围绕我正在寻找的条件的节点集。我不认为自己完全是 XSL 的菜鸟……呵呵……但你们中的一些人可能会。无论如何..我一直在寻找,我只是不确定我正在寻找正确的东西并且可以使用一些指导。

这是XML(wddx)的摘录......

0 投票
1 回答
618 浏览

xml - XSLT 1.0 - 如何比较两个节点集值

比较两个节点集并获得一个具有唯一值的新结果

具体来说,创建 nodeset3 ,其中值在 nodeset1 但不在 nodeset2 中(所以在集合论中基本上是 nodeset3=nodeset1-nodeset2 )。

这是具有一些值的节点集 1

这是节点集2

一个

结果应该是

我试过这个没有成功

0 投票
1 回答
188 浏览

c# - 从坐标索引节点

我正在使用 C# 在 Rhino/Grasshopper 中进行 FEA(有限元分析)程序。我有线(FD)和网格三角形面(NFD)作为输入,每个都有它们的节点坐标。我正在尝试获取这些坐标并将它们恢复到列表中以索引每个节点。

由于线和网格面可以共享相同的节点,我做了以下尝试避免重复信息:

但是,当我构建项目时,我仍然会收到重复的信息。网格面重复消失了,但代码复制了线条的索引。(例如,一个 9 个节点的问题给了我 13 个节点,有时是 14 或 15 个。查看网格索引,所有内容都低于 9,但在行中不是 [介于 9 和 13 之间])。

我该如何解决?

谢谢,

马尔西奥

0 投票
0 回答
48 浏览

xslt - 前同级中的调用模板

我是 XSLT 的新手(使用 XSLT 1.0)。几个问题:

  1. 我目前正在处理一个需要我从先前的兄弟迭代中调用调用模板的场景有没有办法实现这一点?
  2. 如何将结果树片段转换为节点集?

例子: <xsl:variable name="node-set" select="msxml:node-set($result-tree-fragment-variable)">

调试 $node-set 后,我​​仍然看到树片段而不是节点集

请指导我。

0 投票
1 回答
146 浏览

c# - XSLT + C#:返回没有环绕助手的扁平节点集元素是因为 XmlDocument 的格式良好限制吗?

我的 XSLT 样式表中有这样的 C# 函数:

它将“1960”变成<year>1960</year>“4.7.2016”<year>2016</year><month>07</month><day>04</day>等等。

为了将元素添加year的输出 XML 中...monthday

...我必须使用这样的功能:

我无法避免函数<root>中的辅助元素dateSplit(),因为XmlDocument必须是格式良好的(只有顶层的单个元素)。不可能将多个元素附加到根。

是否有替代方法,例如ResultTreeFragment,它不能确保格式正确以避免人为和临时<root>元素?