XML Проверка схемы, Xlink и встроенной ссылки - PullRequest
0 голосов
/ 08 января 2020

Недавно я получил вопрос от моего коллеги, можно ли провести расширенную проверку документов 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. Есть что-то, что я пропускаю или упускаю из виду, или я просто хочу слишком многого, и просто невозможно дать указание любому валидатору схемы сделать это?

1 Ответ

0 голосов
/ 10 января 2020

Я думаю, что утверждения XSD 1.1 являются решением этой проблемы. Я обнаружил, что возможно создать Утверждение, что, если ссылка является внутренней, она проверяет существование ссылки. Недостатком Assertions является то, что это XSD 1.1, а Microsoft, насколько я знаю, до сих пор не поддерживает 1.1.

...