Ограничение элементов XML на основе другого элемента через XSD
-
29-09-2019 - |
Вопрос
Я считаю, что это связано с keyref
Но я не точно, и я действительно не уверен, что это вообще можно сделать.
Например, скажем, у меня есть myelement1 и myelement2. Если в файле XML нет myelement2, то Myelement1 должен существовать, в противном случае он необязательно.
Есть ли способ заставить этот тип проверки в моем файле XSD?
Решение
Подобные вопросы задавались несколько раз .. в Stackoverflow или в любых технических блогах ..
Но ответ всегда невозможно,
случаи, как:
(а) проверка элемента в зависимости от значения или присутствия любого другого элемента/атрибута
(b) проверка значения элемента в зависимости от значения или присутствия любого другого элемента/атрибута
(c) проверка атрибута в зависимости от значения или присутствия любого другого элемента/атрибута
(d) Определение элементов/атрибутов того же имени, имеющих разные типы/дата -дата под той же области
(e) проверка детских элементов на основе стоимости или наличия любых других элементов/атрибутов
Все вышеупомянутые случаи невозможно достичь ..
Но если вы можете реализовать какую -то преобразование ... тогда вы можете получить помощь. Что я хочу сказать, так это «сначала пройти через преобразование и изменить XML в соответствии с вашим требованием,
Пример :: Если конкретное поле ожидается с каким -то значением. Пропустите XML, как это, если условие удовлетворяется, и не пройдите, если оно не будет .. в следующем блоке XSD будет проверять и, очевидно, ошибки. :) Вы можете выяснить, что в нем отсутствует пользовательская проверка ..
В любом случае намерение состоит в блокировать или Проходят XML в соответствии с данными .. и это то, что вы делаете ..
Примечание: Схематрон недавно вступил в хорошую практику! Вот учебник: http://zvon.org/xxl/schematrontutorior/general/contents.html
Другие советы
Я бы предложил создать XSD для каждого случая, определенного ниже:
Случаи, как:
- Подтверждение элемента в зависимости от значения или присутствия любого другого элемента/атрибута.
- Подтверждающее значение элемента в зависимости от значения или присутствия любого другого элемента/атрибута.
- Проверка атрибута в зависимости от значения или присутствия любого другого элемента/атрибута.
- Игнорирование (случайные) элементы/атрибуты из валидации не допускается. (Я хочу сказать, что использование имеет ограничения.)
- Элементы/атрибуты того же имени, имеющие разные данные дата.
- Проверка детских элементов на основе стоимости или наличия любых других элементов/атрибутов.
И создайте там собственный XML для этого.