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?