我可以将架构中的maxOccurs链接到目标xml文件中的另一个属性的值吗?

时间:2009-11-26 11:19:08

标签: xml xpath xsd

我正在为一个看起来像这样的文件定义一个xml架构:

<data>
    <config><segmentcount value="10"/></config>
    <foos>
        <foo>
            <segments>
                <segment data="X"/>
                <segment data="X"/>
                <segment data="X"/>
                <segment data="X"/>
                <segment data="X"/>
            </segments>
        </foo>
        <foo>
            <segments>
                ...

我已经为一般结构制定了一个模式。但是,我想强制分段中的段元素数始终与segmentcount的value属性相同。在段的maxOccurs属性中,我尝试了xpath /aitt:data/aitt:config/aitt:segmentcount[1]@value,但解析器告诉我,maxOccurs必须是非负int或unbounded

这样做有诀窍吗?

提前干杯。

2 个答案:

答案 0 :(得分:1)

我认为没有办法以你想要的方式链接架构和数据。

答案 1 :(得分:1)

目前还没有(据我所知)使用XSD执行此操作的方法。您可能需要考虑使用Schematron规则来实现此类验证。我已经成功地将Schematron规则存储在我的模式的注释元素中。