Ограничение элементов XML на основе другого элемента через XSD

StackOverflow https://stackoverflow.com/questions/4126988

  •  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 для каждого случая, определенного ниже:

Случаи, как:

  1. Подтверждение элемента в зависимости от значения или присутствия любого другого элемента/атрибута.
  2. Подтверждающее значение элемента в зависимости от значения или присутствия любого другого элемента/атрибута.
  3. Проверка атрибута в зависимости от значения или присутствия любого другого элемента/атрибута.
  4. Игнорирование (случайные) элементы/атрибуты из валидации не допускается. (Я хочу сказать, что использование имеет ограничения.)
  5. Элементы/атрибуты того же имени, имеющие разные данные дата.
  6. Проверка детских элементов на основе стоимости или наличия любых других элементов/атрибутов.

И создайте там собственный XML для этого.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top