Contrainte unique XSD sur l'attribut des éléments frères d'un type spécifique

J'ai un document XML structuré comme Q&A, qui suit le format suivant (édité pour plus de clarté):

<question>
    <answer id="1">
        <question>
            <answer id="1"/>
            <answer id="2"/>
            <answer id="3"/>
        </question>
    </answer>
    <answer id="2">
        <question>
            <answer id="1"/>
            <answer id="2"/>
        </question>
    </answer>
</question>

Mon XSD ressemble à ceci:

<xs:element name="question">
     <xs:complexType>
        <xs:sequence>
            <xs:element name="answer" type="answerType" minOccurs="2" maxOccurs="unbounded">
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:unique name="AnswerIdUnique">
        <xs:selector xpath="./*" />
        <xs:field xpath="@id" />
    </xs:unique>
</xs:element>

<xs:complexType name="answerType">
    <xs:sequence>
        <xs:element ref="question" minOccurs="0" maxOccurs="1" />
    </xs:sequence>
    <xs:attribute name="id" type="xs:token" use="required" />
</xs:complexType>

Il y a, bien sûr, plus que ce que vous voyez ci-dessus, mais cela illustre mon problème.
J'ai besoin pour le id attribut sur answer éléments comme unique parmi les frères et sœurs. Le XSD défini ci-dessus applique l'unicité de id attributs parmi les éléments frères, mais il ne fait pas de distinction sur le type d'élément. J'ai essayé une variété de sélecteurs et des champs dans la contrainte d'unicité, mais n'ont pas trouvé une combinaison qui fonctionne.
Des suggestions?

source d'informationauteur joelmdev | 2012-04-27