#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.