Установите тип атрибута использования в xs: IDREF
и атрибут name к xs: ID.
Существует также тип xs: IDREFS.
Пример
<xsd:element name="quote">
<xsd:complexType>
<!--content model-->
<xsd:attribute name="ref" type="xsd:IDREF"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="footnote">
<xsd:complexType>
<!--content model-->
<xsd:attribute name="id" type="xsd:ID" use="required"/>
</xsd:complexType>
...
Придает
<quote ref="fn1">...</quote>
<footnote id="fn1">...</footnote>
Таким образом, в кавычке должен быть параметр ref, который в этом случае указывает на сноску
Хм, может показаться, что выше было для DTD и не работает, однако я нашел это
Истинное представление ключа
Если вы когда-либо пытались описать реляционную базу данных со сложной картой отношений, используя DTD, вам, вероятно, пришлось использовать механизм указания ID-IDREF. Например, в структуре, в которой две сущности связаны многими во многих отношениях посредством связанной таблицы (например, заемщики и активы в приложении ссуды), простого отношения XML родитель-потомок недостаточно. Однако идентификаторы и идентификаторы IDREF имеют свои недостатки: идентификаторы должны быть уникальными для всего документа, а объявления IDREF не указывают тип элемента, на который должен ссылаться экземпляр атрибута IDREF. Схема XML обеспечивает способ задания этих указательных отношений во многом так же, как отношения внешних ключей объявляются в реляционной базе данных. Например, скажем, у вас есть отношение внешнего ключа, которое вы не можете выразить с помощью простых отношений родитель-потомок в нашем XML. Вы можете объявить два связанных элемента, как показано в листинге 3:
<xsd:element name="rootElement">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="elementOne" maxOccurs="unbounded">
<xsd:complexType>
<xsd:attribute name="elementOneKey" type="integer" />
<xsd:attribute name="elementOneDesc" type="text" />
</xsd:complexType>
<xsd:key name="elementOnePK">
<xsd:selector xpath=".//elementOne"/>
<xsd:field xpath="@elementOneKey"/>
</xsd:key>
</xsd:element>
<xsd:element name="elementTwo" maxOccurs="unbounded">
<xsd:complexType>
<xsd:attribute name="elementTwoKey" type="integer" />
<xsd:attribute name="elementOneKey" type="integer" />
<xsd:attribute name="elementTwoDesc" type="text" />
</xsd:complexType>
<xsd:keyref name="elementOneFK" refer="elementOnePK">
<xsd:selector xpath=".//elementTwo"/>
<xsd:field xpath="@elementOneKey"/>
</xsd:keyref>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
Что еще лучше, поскольку вы можете правильно связать идентификатор и ссылку.
Плюс, я учусь.