Можете ли вы сделать «соединение» в схеме XML - PullRequest
0 голосов
/ 09 июня 2011

Я почти уверен, что ответ на этот вопрос - нет, но спрашивать никогда не больно. Есть ли способ сделать соединение в схеме XML?

Вот что я имею в виду. У вас может быть employees/employee/@office_id, а в другом месте xml есть /offices/region/office/@office_id. Есть ли способ в схеме сказать, что эти два атрибута отображаются друг на друга?

Я спрашиваю, потому что тогда мы можем для сотрудника автоматически получать информацию об офисе, не требуя от пользователя указывать эти отношения.

Ответы [ 3 ]

4 голосов
/ 09 июня 2011

JOIN - это реляционная концепция. Вы должны были бы кодировать эквивалент в XPATH. Я не верю, что есть какой-то механизм, чтобы помочь вам с этим. Вам нужно будет получить офисные экземпляры и зациклить их для офиса конкретного человека, все в вашем коде или XSLT.

0 голосов
/ 06 мая 2012

Внешние ссылки и соединения между сущностями XML можно указать с помощью XLINK.

0 голосов
/ 09 июня 2011

Вы спрашиваете, можете ли вы настроить схему так, чтобы у каждого сотрудника / @ office_id был соответствующий офис / @ office_id?

Если вы знаете возможные идентификаторы офиса, вы можете создать такой тип:

<xsd:simpleType name="OfficeIDType">
    <xsd:restriction base="xsd:integer"> <!-- or whatever type an office id is -->
        <xsd:enumeration value="1"/>
        <xsd:enumeration value="2"/>
        <xsd:enumeration value="3"/>
    </xsd:restriction>
</xsd:simpleType>

А затем, когда объявляете свои атрибуты, сделайте их такими и обязательными, например:

<xsd:attribute name="office_id" type="OfficeIDType" use="required"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...