Это на самом деле было невероятно полезно. Звучит безумно, но цветной текст был лучшей частью этого. Однако мне бы хотелось, чтобы он использовал что-то иное, чем AAA BBB и т. Д. ... некоторые примеры из реальной жизни.
е говоря: я хотел бы знать, как использовать ключ / keyref из XSD, чтобы элементы имели ссылки друг на друга. он должен иметь форму примера с использованием простого xsd и XML.
Длинная история: я знаком с использованием ID / IDREF. Я использую их для подключения элементов для JAXB. Мне неоднократно говорили, что конструкция key / keyref в XSD предлагает повышенную гибкость для межэлементных ссылок. Я проконсультировался сOReilly XML Schema bookЭто, кажется, учит всему правильному определению key / keyref и тому, как он похож на ID / IDREF (но лучше) и не дает простого примера его использования. Похоже, что это не похоже, потому что вы определяете ID как атрибут в одном элементе и IDREF в другом элементе и вуаля. Но ключ / keyref должны быть определены в общем предке ссылки и ссылочного элемента (AFAIK) ...
Я использую файлы XSD для генерации связанных с JAXB классов Java с помощью XJC
Я искал инструкции, учебники и примеры, но Google дает мне записки. То же самое для поисков на SO (также с Google и инклюзивным поиском с '+').
Чтобы облегчить жизнь всем, я подготовил XSD с уже определенной парой ключ / ключ, как я ее понял.
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="referenced">
<xs:complexType>
<xs:attribute name="id" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="owner">
<xs:complexType>
<xs:attribute name="id" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:key name="aKey">
<xs:selector xpath="owner" />
<xs:field xpath="@id" />
</xs:key>
<xs:keyref name="aKeyRef" refer="aKey">
<xs:selector xpath="referenced" />
<xs:field xpath="@id" />
</xs:keyref>
</xs:element>
Как будет выглядеть фрагмент XML с элементом «owner», ссылающимся на элемент «referenced»?
РЕДАКТИРОВАТЬ :применил изменение, предложенное Томом В., изменив атрибут xpath ключевого элемента на «владелец». JAXB (XJC) все еще все равно.
Спасибо