XSD Identity Constraint与节点集

时间:2010-09-14 04:23:47

标签: xsd constraints

由于字段评估到我的实例中的节点集,我无法生成标识约束。

给出一组XML样本:

<data>
    <Clusters>
        <Cluster FileID="0" Function="1">
            <Isotopes>
                <Isotope StickID="0"/>
                <Isotope StickID="1"/>
            </Isotopes>
        </Cluster>
        <Cluster FileID="0" Function="2">
            <Isotopes>
                <Isotope StickID="2"/>
            </Isotopes>
        </Cluster>
    </Clusters>
</data>

我正在尝试创建一个约束,以便对于给定的Isotope元素,@ StickID与祖父父集群的@FileID和@Function的每个组合必须形成一个唯一的密钥。

如果从数据上下文中,我在Cluster上定义了选择器:

<xs:key name="ClusterStickRefIdentity">
    <xs:selector xpath="Clusters"/>
    <xs:field xpath="Cluster/Isotopes/Isotope/@StickID"/>
    <xs:field xpath="@Function"/>
    <xs:field xpath="@FileID"/>
</xs:key>

正如预期的那样,在验证实例时会产生错误,该实例称第一个字段的计算结果为具有多个成员的节点集,因为Isotopes元素可以包含无限数量的Isotope元素。

我的印象是字段只能应用于子上下文,这意味着我无法将我的选择器定义到比Cluster更深的任何节点,或者我可以吗?是否有可能建立我正在寻找的约束?

0 个答案:

没有答案