XML Schema如何使每个元素的子元素都是唯一的?

时间:2011-05-28 11:17:28

标签: xml xsd

我想用xml架构完成的工作是每个questionPool使问题独一无二 - 而不是所有的QuestionPools。在我的xml文件中,我有这段代码,评论说我想做什么:

<questionPools>
    <questionPool>
        <question idref="question1"/>
        <question idref="question2"/>
    </questionPool>
    <questionPool>
        <question idref="question3"/>
        <question idref="question1"/>    <!-- Duplicate but not in question pool so allowed -->
        <question idref="question3"/>    <!-- Not allowed because duplicate in question pool -->
    </questionPool>
</questionPools>

我试过这个但它会检查所有问题而不是特定于一个池的问题:

<xsd:key name="keyQuestionPool">
    <xsd:selector xpath="questionPools/questionPool/question"/>
    <xsd:field    xpath="@idref"/>
</xsd:key>

1 个答案:

答案 0 :(得分:0)

键的范围是包含元素。将<xs:key>定义作为<xs:element name="questionPool">元素定义的子项,并从选择器的XPath中删除第一步以匹配新上下文。