上記を参照整合性と見なす場合は、それを行うことができます。冗長な情報があると簡単に言えますが、モデルの再利用によるものも見られました。
XML は次のようになります。

XSD は次のようになります。

そしてソース:
<?xml version="1.0" encoding="utf-8"?>
<!--XML Schema generated by QTAssistant/XML Schema Refactoring (XSR) Module (http://www.paschidev.com)-->
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="pupil">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="pupilid" type="xsd:unsignedInt"/>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="assessment">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="assessmentid" type="xsd:unsignedByte"/>
<xsd:element name="pupilid" type="xsd:unsignedInt"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:key name="PK">
<xsd:selector xpath="pupilid"/>
<xsd:field xpath="."/>
</xsd:key>
<xsd:keyref name="FK" refer="PK">
<xsd:selector xpath="assessment/pupilid"/>
<xsd:field xpath="."/>
</xsd:keyref>
</xsd:element>
</xsd:schema>
最初の XML は検証に合格しますが、2 番目の XML は次の結果をもたらす可能性があります。
Error occurred while loading [], line 8 position 3
The key sequence '666' in Keyref fails to refer to some key.
xsd-restrict-content-to-be-equal-to-grandparent-if-it-is-present.xml is XSD 1.0 invalid.
これらの種類の制約が、データベース関係者にとって参照整合性が意味するものと同様にモデル化できる限り、キー/一意とキー参照が役立ちます。
より一般的な相互制約については、XSD 1.1 に移行するか、XSD 1.0 に加えて Schematron を使用する必要があります。