Недавно я получил вопрос от моего коллеги, можно ли провести расширенную проверку документов XML. Я предложил использовать XML схемы только для этого, так как это просто работает. Он ушел с этим, но через несколько недель вернулся ко мне, так как был вполне доволен вариантами express квалификаций данных с простыми и сложными атрибутами, но он все еще сталкивался с связью. Я сказал, что распространенный способ express требований к ссылкам в XSD - применение Xlink. Для него это было как-то удовлетворительно, но когда он вернулся, ему потребовалось немного времени, чтобы решить некоторые из его проблем, но не совсем.
С точки зрения качества данных он столкнулся с тем, что не было способа проверить фактическое существование введенного идентификатора. Давайте предложим следующее XML:
<S123:RadioStation xml:id="JS.RDOSTA.01">
<featureName><name>JUSSLAND MRCC</name></featureName>
</S123:RadioStation>
Теперь есть еще один элемент XML, ссылающийся на этот элемент XML, скажем следующее:
<S123:RadioServiceArea xml:id="JS.RDOSVC.01">
<featureName><name>JUSSLAND MRCC service area></name></featureName>
<serviceProvider xlink:href="#JS.RDOSTA.01" xlink:role="http://www.iho.int/S-123/gml/1.0/roles/serviceProvider" xlink:title="serviceProviderArea"/>
</S123:RadioServiceArea>
Теперь я могу прийти с XSD, который отлично проверяет оба объекта и существование элемента serviceProvider XML, но для жизни я не могу придумать что-то, что инструктирует валидатору схемы проверить фактическое существование указанной ссылки (# JS .RDOSTA.01). Я не смог найти ничего ни в спецификациях схемы XML, ни в спецификациях Xlink. Есть что-то, что я пропускаю или упускаю из виду, или я просто хочу слишком многого, и просто невозможно дать указание любому валидатору схемы сделать это?