Схема XML, как сделать субэлементы уникальными для каждого элемента? - PullRequest
1 голос
/ 28 мая 2011

То, что я хочу сделать с помощью своей 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 голосов
/ 28 мая 2011

Область действия ключа - содержащий элемент.Поместите определение <xs:key> в качестве дочернего элемента определения элемента <xs:element name="questionPool"> и удалите первые шаги из XPath селектора, чтобы соответствовать новому контексту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...