xslt:检查XML文件中的元素,如果缺少预期的元素,请添加

时间:2015-07-30 11:26:53

标签: xml xslt osb

我将收到如下的fIXML消息。

<FIXML v="4.4" xsi:schemaLocation="../../schema/fixml-main-4-4.xsd" xmlns="http://www.fixprotocol.org/FIXML-4-4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Main attr1="19000" attr2="10">
    <Hdr hattr1="ABC" hattr2="DEF"/>
    <Insert1 I1attr1 ="2008-08" I1attr2 ="20080810"/>
    <Insert2 I2attr1="A111C" I2attr2 ="123">
    <sub ID="1AC"/>
    </Insert2>
    <Insert2 I2attr1="A222C" I2attr2 ="456">
    <sub ID="1BC"/>
    </Insert2>
</Main>
</FIXML>

由此我需要检查强制部分是否存在,如果不存在则必须通过自动关闭标记来添加它们。

<Hdr ..>元素检查<Insert1../>元素是否存在之后,如果存在,请将该部分保留原样,如果不存在,则必须在{{之后添加<Insert1/>自我关闭标记1}}元素,然后检查<Hdr ..>是否存在<Insert2.../>之后保留该元素或<Insert1 .../>如果不存在则在<Insert1/>之后添加。

形成像这样的xml。

<Insert1/>

请建议。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以根据所使用的xslt版本以不同的方式实现您的目标。 我使用过XSLT 1.0。 根据你的要求,我已经假定你已经知道了元素排列和元素的顺序。

Settings

变量&#34; checkData&#34;包含您需要检查已安排的元素列表。唯一的另一件事是你必须使用XSLT解析器的节点集函数