问题标签 [xslkey]
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.
xslt - 慕尼黑集团
我想知道这个谓词([1])如何在 muenchian 分组中始终硬编码为 1。经过大量搜索,我并不清楚这个概念。解释为当前节点,与key返回的第一组进行比较。为什么它总是与第一个匹配的键进行比较?另外,我们为什么要contact[count(. | key('contacts-by-surname', surname)[1]) = 1], the =1 part?
再次给出 1 是硬编码的。我参考了以下链接
xslt - xslt 1.0,选择带有键的节点组
我想根据一些变量选择节点。XML 代码:
我想要的 XML
所以,我的想法是用 xsl:key 元素对节点进行分组,然后对它们中的每一个进行一次。例如:
但输出不是我所期望的,我看不出我做错了什么。我宁愿保留 for-each 结构。就好像我没有正确使用 xsl:key 分组功能一样。
我得到的输出,不需要
以及要测试的代码 http://www.xsltcake.com/slices/sgWUFu/20
谢谢!
xslt - 返回一组元素的页码(针对 XSLT 1.0/msxsl 的优化)
这不是“我如何做 xxx”,而是“我如何以最佳方式做 xxx?” (真的希望挑战漂浮 Dimitre 的船......)
由于 XSL 处理器的限制(msxsl - 基本上是带有 node-set()、replaces() 和 matches() 扩展函数集的 XSLT 1.0),以下所有内容都变得复杂了。
我正在从书中的某些元素中生成一些元数据 - 比如说章节和 div[title] 元素(为了简化我们的数据模型)。
书中的页码由混合文本节点中的处理指令给出,可能如下所示:
我的元素需要关联的页码要么是第一个后代(如果分页符本质上是一章内的第一条内容(即章节从一个新页面开始)),或者前面的第一个::processing-instruction('Page')。
让我们组成一个示例文档:
(请注意,虽然这里的每一章都从一个新页面开始,但我们通常不能保证这一点。在第 1 章的末尾有一个空白页,这是我们常见的)。
我想得到一些这样的信息(我对 XSLT 基础知识很好,我们有兴趣选择页码):
我可以使用 xsl:when 语句和后代轴来做各种事情来决定哪个页码是合适的,但我更喜欢在处理指令上做一些巧妙的匹配,因为目前在大书上使用后代轴正在做事情太慢而无法使用。键会很好,但是由于在 @use 或 @match 属性中既不能使用变量,也不能使用其他键(同样不能使用序列构造函数),事情变得更加复杂。
目前,我有兴趣为其查找页码的元素是在一个键中定义的(现实世界的数据要复杂得多),如下所示:
任何建议或指点都感激不尽!
xslt-1.0 - 在 xslt 1.0 中对嵌套元素进行分组
我一直在查看 XSLT 1.0 中的 Muenchian 分组示例,特别是这里的示例。但是我无法让它在更复杂的 XML 结构上工作。
我的 XML 目前看起来像这样:
但是,当它们具有相同的 Sport 和 Event 时,我想将 Rank 节点分组到相同的 Ranks 父级下。所以我希望结果看起来像这样:
我只是有点迷失如何做到这一点,因为唯一的其他例子是处理一个更简单的结构,我不确定它是否可能或者我的密钥和模板需要如何构建才能做到这一点。谁能提供一些示例如何实现?
任何意见,将不胜感激。
xml - 如何从键中选择哪个字段不为空
我在下面有 xml 文件和 xslt 转换:
如何使用按键功能选择所有类型不为空的宠物?
xpath - 使用 xsl:key 存储布尔表达式的结果
在我的转换中有一个表达式,一些元素被反复测试。为了减少冗余,我想把它封装成xsl:key
这样(不工作):
预期的行为是产生布尔值的关键true
,以防表达式被成功计算,否则false
。然后我想按如下方式使用它:
这是可能的,如果是的话,怎么做?
document - XSLT 1.0 如何使用 xsl:key 和 document() 函数
我正在尝试使用 xsl:key 使用 XSL document() 函数在外部 XML 文档中查找项目。如果我不使用 document(),而是合并两个 XML 文件(在 C# 中使用 XmlDocument),我就可以让 xsl:key 部分工作。但是,这两个 XML 文件都非常大,在某些情况下我开始出现“内存不足”错误。我还需要能够使用 xls:key,否则这个过程需要几个小时。
在 XSLT 2.0 中,我相信你可以这样做:
但是,您如何在 XSLT 1.0 中实现这一点?
xslt - 使用 XSLT key() 函数根据不同元素中的两个属性查找节点
我正在尝试使用 XSLT key() 函数返回<Code>
XML 文件中符合以下两个条件的所有元素:
以下是输入 XML 的简化示例:
请注意,注释实际上并不存在于实际的 XML 中,我只是在此处添加它们以阐明 XML 结构。
这是我尝试使用的 XSLT 转换,尽管它似乎不起作用:
这就是我希望 key() 函数返回不同输入的内容:
这可以通过 key() 函数实现吗?由于有成千上万的元素<Item>
和<Code>
元素,因此能够使用<xsl:key>
非常重要。
xslt - xsl:key not working when looping through nodeset obtained with xalan:nodeset
I have found a case where xsl:key seems not to be working.
I am using XSLT 1 with Xalan (compiled) and this is what is happening:
1.- This works: key named test1 works fine:
2.- This doesn't work: key test1 is now defined and used (which is the important point, I guess) inside a loop that iterates through elements obtained with xalan:nodeset
Does anybody know what is happening? Notice that variable $promos is not empty, so the loop really iterates, it is the key used inside it which does nothing.
Thank you very much in advance.
PS: after Martin's answer I post this alternative code, which doesn't work either:
Solution: In Martin's comments was the key to the problem: nodes in a result tree fragment are treated as nodes in a different document.
Martin pointed the workaround too: In XSLT 1.0 you need to change the context node using a for-each and then call key inside the for-each. This code will work then:
xslt - xsl:key 从上下文中匹配当前节点
我有一些这样的xml结构:
我想要这样的输出:对于每个商品,对于每个 listOutput 中的每个列表,对于这个商品,我想查看列表位置的树。对于上面的例子,我想看看:
好 (1) 列表 1. 类别 1. 位置 1.1 位置 1.1.1
Good (2) List 1. Category 1. Position 1.1 Position 1.1.1
清单 2. 类别 3. 位置 3.1 位置 3.1.1
我使用 xsl:key 通过 parentId 获取子元素:
这个关键函数在递归中用于创建列表类别和位置的树:
问题是键匹配模式似乎在所有 outputRows 中搜索 @pid,但我需要让它只在 outputRows 中搜索上下文中的当前好。无论如何有可能实现这一目标吗?