Проверка различных наборов обязательных атрибутов в схеме XML - PullRequest
0 голосов
/ 29 октября 2010

Мое требование - проверить xml с двумя различными стратегиями проверки. В стратегии 1 xml должен иметь экземпляры элемента с определенными обязательными атрибутами. В стратегии 2 xml должен иметь экземпляры одного и того же элемента с разными обязательными атрибутами. Итак, идея заключается в том, что для каждого набора есть два разных набора одного и того же элемента с различным набором обязательных атрибутов. Есть ли способ проверить это с помощью только одного xsd. Пока что мое единственное решение - использовать два разных xsd-файла для проверки.

Пример 1:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <element firstName="something"/> <!--required -->
    <element lastName="something"/> <!-- required -->
 <element phoneNumber="something"/> <!-- not required -->
<root>

Пример 2:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <element firstName="something"/> <!-- not required -->
    <element lastName="something"/> <!-- required -->
 <element phoneNumber="something"/> <!-- required -->
<root>

Можно ли выполнить проверку с помощью xsd?

1 Ответ

0 голосов
/ 30 октября 2010

Рик,

Мне приходилось решать подобные проблемы в наших приложениях, и нашим лучшим решением было использование модульных схем.

Таким образом, вместо того, чтобы иметь Schema1 и Schema2, которые являются дубликатами друг друга, за исключением части, которая отличается, у вас есть Schema1 и Schema2, которые включают только разные ограничения, и оба импортируют общую Schema3, которая определяет общие ограничения .

Пример того, как это сделать, здесь .

Он не дает вам ни единого XSD, но сокращает дублирование, поэтому он помогает с удобством сопровождения и помогает избежать вероятности появления ошибок при большом дублировании между Schema1 и Schema2.

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

...