问题标签 [nodesets]

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 回答
13906 浏览

xml - 节点集长度

在 XLST 中,如何找出节点集的长度?

0 投票
6 回答
9242 浏览

xml - 使用 xpath 在节点集中查找节点的位置

在徒劳地玩耍之后position(),我在谷歌上四处寻找解决方案,并遇到了这个几乎描述了我的问题的较旧的 stackoverflow问题。

不同之处在于我想要位置的节点集是动态的,而不是文档的连续部分。

为了说明,我将修改链接问题中的示例以符合我的要求。请注意,每个<b>元素都在不同的<a>元素中。这是关键。

现在,如果我查询,使用 XPatha/b将得到四个<b>节点的节点集。然后我想找到包含字符串的节点在该节点集中'tsr'的位置。另一篇文章中的解决方案在这里分解:count(a/b[.='tsr']/preceding-sibling::*)+1返回1是因为preceding-sibling导航文档而不是上下文节点集。

是否可以在上下文节点集中工作?

0 投票
1 回答
14139 浏览

java - Java 中的 XPath 节点集

我在eclipse中有这段代码

它给了我在 NodeSet 上的编译时错误。

这些是我进口的东西。你能告诉我为什么会这样吗?

0 投票
3 回答
415 浏览

performance - XSLT 1.0:限制节点集中的条目

作为 XSLT 的新手,我希望这是一个简单的问题。我有一些平面 XML 文件,它们可能非常大(例如 7MB),我需要使它们“更具层次性”。例如,平面 XML 可能如下所示:

它最终应该看起来像这样:

我有一个可以工作的 XSLT,它基本上获取所有 b 元素的节点集,然后使用“following-sibling”轴获取当前 b 节点之后的节点的节点集(即,following-sibling::* [位置()=$nodePos])。然后使用递归将兄弟姐妹添加到结果树中,直到找到另一个 b 元素(我当然已经对其进行了参数化,以使其更通用)。

我还有一个解决方案,它只发送下一个 b 节点的 XML 中的位置,并通过 *[position() = $nodePos] 选择一个接一个地选择该节点之后的节点(使用递归)。

问题是执行转换的时间随着 XML 文件的大小增加而无法接受。使用 XML Spy 对其进行调查,似乎是 'following-sibling' 和 'position()=' 在这两种方法中花费了时间。

我真正需要的是一种在上述选择中限制节点数量的方法,因此执行的比较更少:每次测试位置时,都会测试节点集中的每个节点,看它的位置是否正确。有没有办法做到这一点 ?还有其他建议吗?

谢谢,

麦克风

0 投票
3 回答
241 浏览

xpath - 这种 XPath 技术在所有情况下都可靠吗?

我正在开发一个应用程序,它接受用户定义的 XPath 表达式并将它们用作其运行时操作的一部分。

但是,我希望能够通过以编程方式操作表达式来推断一些额外的数据,并且我很想知道是否存在这种方法可能会失败的任何情况。

给定任何返回节点集的用户定义 XPath 表达式,将其包装在 XPathcount()函数中以确定集合中的节点数是否安全:

同样,将数组索引附加到表达式以提取集合中的一个节点是否安全:

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 回答
5110 浏览

date - XSL 转换提取最小和最大日期

我正在尝试从 XML 源中提取最小和最大日期。我将一个节点集放入我的变量中,我需要节点中的实际日期值,但找不到如何获取它。

源 XML:

XSL 代码:

日期格式正确以支持排序和检索,问题是一旦填充变量我找不到如何访问它们的值:

0 投票
1 回答
1070 浏览

xslt-2.0 - XSLT 2 - 来自全局参数的节点集

我花了很多时间在谷歌上搜索,但没有找到答案或解决方案。在 XSLT 2 中,可以将变量强制转换为节点集。所以像这样的工作。

输出是

但是当我尝试这个

并将值<element><subelement>A</subelement><subelement>B</subelement></element>作为参数“par”传递给 XSLT 处理器(Saxon,Altova),然后出现错误:

好的,我可以没有它,但我只是想知道为什么 xsl:variable 和 xsl:param 在这方面表现不同。

0 投票
1 回答
70 浏览

xml - xPath selective nodesets

I have a document that looks something like this:

Now in xsl it's easy to get this nodeset by doing:

However the issue I have is that there are conditions I have to meet to form the nodeset, such as

So for example according to those rules above we should get this result from any specific xpath:

Is there any way of writing an xpath with an if statement in that can achieve this or some xsl code that can check the nodesets contents and remove one node if it finds another?

0 投票
0 回答
33 浏览

r - 无法使用 rvest 抓取简单文本 - 是因为嵌套的 html 代码还是 Javascript?

我一直在尝试从以下网站上抓取 InChI-Key 文本,但没有成功:

https://pubchem.ncbi.nlm.nih.gov/compound/32921#section=InChI-Key&fullscreen=true

“BBJPZPLAZVZTGR-UHFFFAOYSA-N”是我想要得到的文本。

这是我尝试过的几行:

版本 #1:

这两行都给了我相同的答案:

由于某些原因,它似乎无法检测到元素并且看不到节点:

版本 #2:

同样,我无法找到带有代码的相关文本。

我已经坚持了几天,非常感谢任何帮助或建议!