【发布时间】:2015-02-15 11:30:49
【问题描述】:
我正在尝试为我遇到的以下问题找到一个 xslt 解决方案。
我想找到一组共享节点名称和属性但具有不同值的 3 个后续行。输入中的第一行包含一个标识符,第二行和第三行包含来自源系统的值。我想找到第二行和第三行具有不同值的集合。
例如
<eba7:mi235 contextRef="I-2014-E-dim-x43-x9-x156-x51-x14">78923</eba7:mi235>
<eba7:mi235 contextRef="I-2014-E-dim-x43-x9-x156-x51-x14">1111</eba7:mi235>
<eba7:mi235 contextRef="I-2014-E-dim-x43-x9-x156-x51-x14">2222</eba7:mi235>
也可能有一组行只有一个标识符,一组行有一个标识符,只有一个行有来自源系统的值,或者有一组行,其中第二行和第三行具有相同的值。
例如
<eba7:mi310 contextRef="I-2014-E-dim-x42-x9-x24-x195-x10-x4">78748</eba7:mi310>
<eba7:mi310 contextRef="I-2014-E-dim-x42-x9-x24-x195-x10-x4">0</eba7:mi310>
<eba7:mi310 contextRef="I-2014-E-dim-x42-x9-x25-x195-x10-x4">78804</eba7:mi310>
<eba7:mi310 contextRef="I-2014-E-dim-x42-x9-x25-x195-x10-x4">12345</eba7:mi310>
<eba7:mi310 contextRef="I-2014-E-dim-x42-x9-x25-x195-x10-x4">12345</eba7:mi310>
这些我不想在输出中找到。
我要创建的输出是
<eba7:mi235 id="78923" value1="1111" value2="2222" />
输入的结构使得行总是这样排列。所以我尝试使用位置来访问它们,但这没有用。
谁能指出我正确的方向?使用位置是否正确?
我已附加了一个文件,其中包含以下输入数据
谢谢。
保罗。
<?xml version="1.0" encoding="utf-8"?>
<xbrl xml:lang="en" xmlns="http://www.xbrl.org/2003/instance" xmlns:eba7="http://www.eba.europa.eu/xbrl/crr/dict/met" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:link="http://www.xbrl.org/2003/linkbase">
<link:schemaRef xlink:type="simple" xlink:href="http://www.eba.europa.eu/eu/fr/xbrl/crr/fws/corep/its-2013-02/2014-07-31/mod/corep_con.xsd" />
<context id="I-2014-E">
<entity>
<identifier scheme="http://www.dnb.nl/id">578</identifier>
</entity>
<period>
<instant>2014-12-31</instant>
</period>
</context>
<eba7:mi310 contextRef="I-2014-E-dim-x42-x9-x24-x195-x10-x4">78748</eba7:mi310>
<eba7:mi310 contextRef="I-2014-E-dim-x42-x9-x24-x195-x10-x4">0</eba7:mi310>
<eba7:mi310 contextRef="I-2014-E-dim-x42-x9-x25-x195-x10-x4">78804</eba7:mi310>
<eba7:mi310 contextRef="I-2014-E-dim-x42-x9-x25-x195-x10-x4">12345</eba7:mi310>
<eba7:mi310 contextRef="I-2014-E-dim-x42-x9-x25-x195-x10-x4">12345</eba7:mi310>
<eba7:mi235 contextRef="I-2014-E-dim-x43-x9-x156-x51-x14">78923</eba7:mi235>
<eba7:mi235 contextRef="I-2014-E-dim-x43-x9-x156-x51-x14">1111</eba7:mi235>
<eba7:mi235 contextRef="I-2014-E-dim-x43-x9-x156-x51-x14">2222</eba7:mi235>
</xbrl>
【问题讨论】:
-
这是一个分组问题。请指出您使用的是哪个版本的 XSLT - 每个版本的答案都大不相同。 -- 如果有4个序列怎么办?
-
正在使用 XSLT 1.0 可能有 4 个序列:特定标识符的 3 个值。为了使示例尽可能简单,我将其省略了。我希望我可以针对这种情况扩展 Lingamurthy CS 的解决方案。
-
正如我在回答中所说,这个问题的定义不是很好。更糟糕的是,您的输入示例格式不正确,无法用于测试。
-
我已经更新了示例文件。它的格式不正确:第二个没有正确复制。
-
出于兴趣,这是什么原因? EBA 申报规则禁止重复事实,因此不接受此类实例。