Xml Xpath 2.0:检查选项组中记录的顺序
我有这个问题,很难解决。你能帮我吗?谢谢你们所有的先进。 我有这个模式:Xml Xpath 2.0:检查选项组中记录的顺序,xml,xpath,Xml,Xpath,我有这个问题,很难解决。你能帮我吗?谢谢你们所有的先进。 我有这个模式: <submission> <sequence> <Header></Header> <Data> <Choice> <Record1 maxOccurs="*">
<submission>
<sequence>
<Header></Header>
<Data>
<Choice>
<Record1 maxOccurs="*">
<RecordType></RecordType>
<Content></Content>
</Record1>
<Record2 maxOccurs="*">
<RecordType></RecordType>
<Content></Content>
</Record2>
...
<Record9 maxOccurs="*">
<RecordType></RecordType>
<Content></Content>
</Record9>
</Choice>
</Data>
<Trailer></Trailer>
</sequence>
</submission>
...
这是XML文件:
<Submission>
<Header>
<Section>1</Section>
<Rest>016CLAIMS042013080120130831</Rest>
</Header>
<Data>
<Record1>
<RecordType>1</RecordType>
<Content>Record1</Content>
</Record1>
<Record1>
<RecordType>1</RecordType>
<Content>Record1</Content>
</Record1>
<Record2>
<RecordType>2</RecordType>
<Content>Record1</Content>
</Record2>
<Record3>
<RecordType>3</RecordType>
<Content>Record3</Content>
</Record2>
<Record5>
<RecordType>5</RecordType>
<Content>Record5</Content>
</Record5>
<Record4>
<RecordType>4</RecordType>
<Content>Record4</Content>
</Record4>
<Record4>
<RecordType>6</RecordType>
<Content>Record6</Content>
</Record4>
</Data>
<Trailer>
<Section>9</Section>
<Rest>016CLAIMS042013080120130831</Rest>
</Trailer>
</Submission>
1.
016索赔42013080120130831
1.
记录1
1.
记录1
2.
记录1
3.
记录3
5.
记录5
4.
记录4
6.
记录6
9
016索赔42013080120130831
您可以看到该文件中的数据记录顺序为1,2,3,5,4,6。
我的问题是编写一个XPath2.0查询来验证该文档的顺序是否正确。顺序应为1,2,3,4,5,6,因此此文件不正确。
请帮助我编写一个XPath2.0查询来检查这一点。
再次非常感谢。我不确定是否理解您的模式语言。直观的阅读表明,数据元素可以由很多Record1元素、很多Record2元素或很多Record3元素组成,…,但不能是这些元素的混合体 如果您只想在XPath中检查RecordType值的序列是自然数的序列,那么您可以编写
not((//RecordType)[number(.) != position()])
那么您想要一个独立的XPath表达式来进行模式验证吗?哇!嗨,马库斯,是的。用户可以向服务器传递错误格式的文件。我正在使用BizTalk验证此文件。这是一个案例。嗨,迈克尔,谢谢你的回答。但是,记录1、记录2等可以多次出现。但是我需要检查Record2是否只出现在所有record1之后,Record3是否只出现在所有Record3之后,等等。然后我认为最好给出XPath表达式应该做什么的更精确公式。更多地说明约束条件也可能会有所帮助。我不知道Biztalk,但上次我听说它只支持XPath 1.0?