Можете ли вы выполнить «объединение» в XML-схеме

#join #xsd

#Присоединиться #xsd

Вопрос:

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

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

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

Ответ №1:

ОБЪЕДИНЕНИЕ — это реляционная концепция. Вам пришлось бы закодировать эквивалент в XPATH. Я не верю, что есть какой-либо механизм, который поможет вам с этим. Вам нужно будет получить экземпляры office и перебирать их для office данного пользователя, все в вашем коде или XSLT.

Комментарии:

1. Да, это у нас получилось. Мне было интересно, есть ли в спецификации схемы параметр для указания взаимосвязи, чтобы мы могли создать эту часть xpath для людей.

2. Это то, что я понял, но хотел убедиться. Спасибо

Ответ №2:

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

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

 <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"/>
  

Комментарии:

1. Это у нас уже есть. Это возможность создать часть xpath для пользователей, если мы знаем соединение. Например, как вы можете автоматически создавать объединения в SQL select из метаданных.

2. Итак, вы действительно ищете выражение XPath? Какое отношение к этому имеет схема?

3. Нет, я спрашиваю, есть ли в схеме эквивалент информации о соединении, который позволил бы нам заставить программу автоматически создавать эту часть xpath. Это то, что мы делаем в случае SQL, считываем метаданные и автоматически создаем объединяющую часть select.

4. О, итак, вы хотели знать, существует ли эквивалент внешнего ключа в xml-схеме.

5. Да — точно. Если в схеме есть эквивалентный внешний ключ, мы можем автоматически создать эту часть xpath.

Ответ №3:

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