【发布时间】:2019-05-16 12:57:44
【问题描述】:
我需要您的帮助来解决 XSLT 1.0 问题。
原始 XML:
<businessevent>
<catalog>
<de name="16R">FIN</de>
<ds name="35B">
<de name="instrument_identification">ISIN AT0000A0U3T4</de>
<de name="instrument_type">ISIN</de>
<de name="instrument_code">AT0000A0U3T4</de>
<de name="instrument_code_code">AT0000A0U3T4</de>
<de name="instrument_code_umi_id">ATG2022113.4</de>
<de name="instrument_code_code">AT0000A0U3T4</de>
<de name="instrument_code_umi_id">ATG2022113.4_SG</de>
</ds>
<de name="16R">FIA</de>
<de name="12A">:CLAS/ISIT/GOVT</de>
<ds name="98A">
<de name="date_type">MATU</de>
<de name="date">20051122</de>
</ds>
<ds name="98A">
<de name="date_type">ISSU</de>
<de name="date">20060126</de>
</ds>
<de name="92A">:INTR//3,4</de>
<de name="16S">FIA</de>
<de name="90A">:MRKT//PRCT/114,16</de>
<ds name="93B">
<de name="amount_type">AGGR</de>
<de name="unit_type">FAMT</de>
<de name="amount">100</de>
</ds>
<ds name="93B">
<de name="amount_type">AVAI</de>
<de name="unit_type">FAMT</de>
<de name="amount">100</de>
</ds>
<ds name="93B">
<de name="amount_type">NAVL</de>
<de name="unit_type">FAMT</de>
<de name="amount">0</de>
</ds>
<de name="16R">SUBBAL</de>
<ds name="93B">
<de name="amount_type">AGGR</de>
<de name="unit_type">FAMT</de>
<de name="amount">100</de>
</ds>
<de name="16S">SUBBAL</de>
<de name="19A">:HOLD//EUR6000,</de>
<de name="16S">FIN</de>
<de name="16R">FIN</de>
<ds name="35B">
<de name="instrument_identification">ISIN AT0000A0VRF9</de>
<de name="instrument_type">ISIN</de>
<de name="instrument_code">AT0000A0VRF9</de>
<de name="instrument_code_code">AT0000A0VRF9</de>
<de name="instrument_code_umi_id">ATG2019061.95</de>
</ds>
<de name="16R">FIA</de>
<de name="12A">:CLAS/ISIT/GOVT</de>
<ds name="98A">
<de name="date_type">MATU</de>
<de name="date">20120618</de>
</ds>
<ds name="98A">
<de name="date_type">ISSU</de>
<de name="date">20110703</de>
</ds>
<de name="92A">:INTR//1,95</de>
<de name="16S">FIA</de>
<de name="90A">:MRKT//PRCT/100,47</de>
<ds name="93B">
<de name="amount_type">AGGR</de>
<de name="unit_type">FAMT</de>
<de name="amount">200</de>
</ds>
<ds name="93B">
<de name="amount_type">AVAI</de>
<de name="unit_type">FAMT</de>
<de name="amount">200</de>
</ds>
<ds name="93B">
<de name="amount_type">NAVL</de>
<de name="unit_type">FAMT</de>
<de name="amount">0</de>
</ds>
<de name="16R">SUBBAL</de>
<ds name="93B">
<de name="amount_type">AGGR</de>
<de name="unit_type">FAMT</de>
<de name="amount">200</de>
</ds>
<de name="16S">SUBBAL</de>
<de name="19A">:HOLD//EUR1000,</de>
<de name="16S">FIN</de>
</catalog>
</businessevent>
正如您所见,它是一个结构怪异的平面 XML,我只能使用 XSLT 1.0 来操作它。子结构重复以
开头 <de name="16R">FIN</de>
以
结尾 <de name="16S">FIN</de>
对于每个重复结构,我需要获取一些信息,并且只有第一次出现的 93B 与 amount_type = AGGR。在第一个“组”中它会重复并给我带来问题。
预期结果:
<businessevent>
<catalog>
<ds>
<de name="instrument_identification">ISIN AT0000A0U3T4</de>
<de name="instrument_type">ISIN</de>
<de name="instrument_code">AT0000A0U3T4</de>
<de name="amount">100</de>
</ds>
</catalog>
</businessevent>
非常感谢!
【问题讨论】:
-
您能否编辑您的问题以显示您期望的实际输出,因为获取信息是一回事,但实际使用它是另一回事。谢谢!
-
@TimC,请查看更新后的问题
-
您是否也想更改输入 XML,因为提供的 XSLT 将不再适用于该结构? (您需要修改以使用“group-ending-with”方法)。谢谢
-
是的,因为经过一些测试,我发现原始 XML 并不能解决我的真正问题。对不起,蒂姆:(
-
蒂姆,请不要花时间尝试解决这个例子。我将用真正的问题编辑我的问题,以便您可以更好地帮助我。给我几分钟...
标签: xml xslt xslt-1.0 xslt-grouping