Это на самом деле было невероятно полезно. Звучит безумно, но цветной текст был лучшей частью этого. Однако мне бы хотелось, чтобы он использовал что-то иное, чем 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) все еще все равно.

Спасибо

Ответы на вопрос(1)

Ваш ответ на вопрос