Xsd minoccurs 0 что это
XML Schema обеспечивает возможность определять группы элементов и задавать им имена. Поэтому эти элементы могут использоваться при построении моделей содержания сложных типов (как бы копируя принятое в XML 1.0. использование объектных параметров). Могут быть определены и неименованные группы элементов. В именованных и неименованных группах обеспечивается появление элементов в том же самом порядке (последовательности), как они объявлены. Альтернативно, в них можно сделать и так, что только один из элементов сможет появиться в примере.
Для иллюстрации сказанного, мы введем две группы в определение PurchaseOrderType . Заказы на покупку могут содержать либо отдельные адреса поставки и платежа, либо один адрес в случае их совпадения:
Вложенный выбор и последовательность групп
Элемент группы choice позволяет только одному из своих дочерних элементов появляться в примере. Первый дочерний является внутренним элементом group , который ссылается на именованную группу shipAndBill , состоящую из последовательности элементов shipTo , billTo , а второй дочерний является singleUSAddress . Следовательно, в экземпляре документа элемент purchaseOrder должен содержать либо элемент shipTo за которым следует элемент billTo , либо элемент singleUSAddress . Группа choice и следующие за ней объявления элементов comment и items являются дочерними группы sequence . Эффект этой группы заключается в том, что в указанном порядке за элементами адреса должны следовать элементы comment и items .
Группа ‘All’
Исходя из этого определения, элемент comment может произвольно появляться в пределах purchaseOrder . Он может появиться до или после любого из элементов shipTo , billTo и items , но только однажды. Кроме того, соглашения группы all не позволяют нам объявлять такой элемент как comment вне группы, поскольку это подразумевает возможность его появления более чем один раз. Согласно требований XML Schema группа all должна появляться как единственный дочерний на верхнем уровне модели содержания. Другими словами, следующее неверно:
Ошибочный пример с группой ‘ All ‘
Наконец, именованные и неименованные группы в моделях содержания ( group , choice , sequence , all ) могут включать атрибуты minOccurs и maxOccurs . Комбинируя и вкладывая различные группы, поддерживаемые XML Schema , и устанавливая значения minOccurs и maxOccurs , возможно представить любую модель содержания, которую можно выразить с помощью XML 1.0 DTD. Кроме того, группа all обеспечивает дополнительную выразительную мощность.
Xsd minoccurs 0 что это
Элемент comment в PurchaseOrderType является необязательным, поскольку в нем значение атрибута minOccurs равно 0. Элемент всегда обязан присутствовать, когда значение minOccurs равно 1 или более. Максимальное число раз, которое элемент может появляться задается при эго объявлении значением атрибута maxOccurs . Это значение может быть положительным целым числом, например, 41, или термином unbounded , который указывает, что количество вхождений не задано. По умолчанию значение для атрибутов minOccurs и maxOccurs принимается равным 1. Таким образом, когда элемент comment объявлен без атрибута maxOccurs , элемент не может присутствовать более одного раза. Необходимо помнить, что если вы задаете только значение атрибута minOccurs , то оно должно быть меньше или равно значению по умолчанию maxOccurs , т.е. 0 или 1. Точно так же, если вы задаете только значение атрибута maxOccurs , то оно должно быть больше или равно значению по умолчанию minOccurs , т.е. больше или равно 1. Если опущены оба атрибута, то элемент должен появляться обязательно точно один раз.
Элементы, заданные по умолчанию, обработчик схемы обрабатываем несколько иначе. Когда элемент объявлен со значением по умолчанию, но значение элемента явно представлено в документе примера, то принимается это явно заданное значение. Если элемент появляется без какого либо содержания, обработчик схемы снабжает элемент значением, которое эквивалентно значению, определенному атрибутом default . Однако, если элемент вообще не представлен в документе, процессор схемы не подставляет его. Таким образом, отличия между элементами и атрибутами, заданными по умолчанию, могут быть определены как «значения атрибутов по умолчанию применяются, когда атрибуты отсутствуют, а значения элементов по умолчанию применяются, когда элементы пустые».
Атрибут fixed используется как в объявлениях атрибутов, так и элементов, чтобы гарантировать для них задание строго определенных значений. Например, po . xsd содержит объявление для атрибута country , который объявлен как fixed со значением US . Это объявление означает, что появление атрибута country в документе необязательно (значение по умолчанию use является optional ), однако, если атрибут появляется, его значение должно быть US , а если атрибут не представлен, то процессор схемы обеспечит атрибут country значением US . Отметим, что понятия фиксированных значений и значений по умолчанию являются взаимоисключающими. Поэтому неправильно объявлять атрибуты одновременно и как fixed , и как default .
Таблица 1. Возможные ограничения для элементов и атрибутов
Элементы
( minOccurs , maxOccurs ) fixed , default
Xsd minoccurs 0 что это
Элемент comment в PurchaseOrderType является необязательным, поскольку значение его атрибута minOccurs равно 0. Элемент всегда обязан присутствовать, когда значение minOccurs равно 1 или более. Максимальное число появлений элемента задается при его объявлении значением атрибута maxOccurs . Данное значение должно быть положительным целым числом, например, 41, или принимать значение unbounded , который указывает, что количество вхождений может быть любым. По умолчанию значение атрибутов minOccurs и maxOccurs принимается равным 1. Таким образом, когда элемент comment объявлен без атрибута maxOccurs , элемент может присутствовать максимум один раз. Необходимо помнить, если вы задаете только значение атрибута minOccurs , то оно должно быть меньше или равно значению по умолчанию maxOccurs , т.е. 0 или 1. Точно так же, если вы задаете только значение атрибута maxOccurs , то оно должно быть больше или равно значению по умолчанию minOccurs , т.е. больше или равно 1. Если опущены оба атрибута, то элемент должен появляться обязательно точно один раз.
Элементы, заданные по умолчанию, обработчик схемы обрабатывает несколько иначе. Когда элемент объявлен со значениемпо умолчанию, но значение элемента явно представлено в экземпляре документа, то принимается это явно заданное значение. Если элемент появляется без какого либо содержания, обработчик схемы снабжает элемент значением, которое эквивалентно значению, определенному атрибутом default . Однако, если элемент вообще не представлен в экземпляре документа, обработчик схемы ничего не предпринимает. Таким образом, отличия между элементами и атрибутами, заданными по умолчанию, могут быть определены следующим образом: «значения атрибутов по умолчанию применяются, когда атрибуты отсутствуют, а значения элементов по умолчанию применяются, когда элементы пустые».
Атрибут fixed используется как в объявлениях атрибутов, так и элементов. Он гарантирует для них задание строго определенных значений. Например, po . xsd содержит объявление для атрибута country , объявленного как fixed со значением US . Сделанное объявление означает, что появление атрибута country в экземпляре документа не не обязательно (значение по умолчанию use является optional ). Однако, если атрибут появляется, его значение должно быть US , а если атрибут не представлен, то обработчик схемы обеспечит атрибут country значением US . Отметим, что фиксированные значения и значения по умолчанию являются взаимоисключающими. Поэтому одновременно объявлять атрибуты fixed и default является ошибкой.
Таблица 1. Возможные ограничения для элементов и атрибутов
Элементы
( minOccurs , maxOccurs ) fixed , default
Индикаторы использования XML элементов
Мы можем контролировать, каким образом элементы должны использоваться в XML документах. Это позволяют сделать индикаторы.
Всего существует семь индикаторов:
- group name
- attributeGroup name
Индикаторы очередности
Индикаторы очередности, как ясно из названия, используются для определения очередности появления элементов в XML документе.
Индикатор all
Индикатор устанавливает, что дочерние элементы могут появляться в документах в любом порядке, и что каждый из этих дочерних элементов должен появляться всего один раз:
Примечание: При использовании индикатора вы можете установить индикатор в значение 0 или 1, а индикатор только в значение 1 (индикаторы и описываются ниже).
Индикатор choice
Индикатор устанавливает, что появляться в документах может либо один дочерний элемент, либо другой:
Индикатор sequence
Индикатор устанавливает, что дочерние элементы должны появляться в документах в заданном порядке:
Индикаторы частотности
Индикаторы частотности используются для того, чтобы определить то, как часто элементы могут появляться в XML документах.
Примечание: Для всех «порядковых» и «групповых» индикаторов (any, all, choice, sequence, group name и group reference) значением по умолчанию для maxOccurs и minOccurs является 1.
Индикатор maxOccurs
Индикатор устанавливает максимальное количество появлений элемента:
В приведенном выше примере указывается, что элемент «child_name» в элементе «person» может использоваться минимум один раз (значение по умолчанию для индикатора minOccurs — 1) и максимум 10 раз.
Индикатор minOccurs
Индикатор устанавливает минимальное количество появлений элемента:
В приведенном выше примере указывается, что элемент «child_name» в элементе «person» может использоваться минимум 0 раз и максимум 10 раз.
Совет: Чтобы разрешить использовать какой-то элемент неограниченное число раз, используется выражение maxOccurs=»unbounded».
XML файл «Myfamily.xml»:
Hege Refsnes Cecilie Tove Refsnes Hege Stale Jim Borge Stale Refsnes
Приведенный XML файл содержит корневой элемент «persons». Внутри этого корневого элемента у нас есть три элемента «person». Каждый элемент «person» должен содержать элемент «full_name» и может содержать до 5 элементов «child_name».
А вот его файл схемы «family.xsd»:
Индикаторы группирования
Индикаторы группирования используются для определения связанных наборов элементов.
Группирование элементов
Группы элементов определяются при помощи декларации group следующим образом:
Внутри такой декларации необходимо определять элемент all, choice или sequence. В следующем примере определяется группа с именем «persongroup», которая определяет группу элементов, которые должны появляться точно в указанном порядке:
После того как группа элементов была определена, вы можете использовать ее в других определениях:
Группирование атрибутов
Группы атрибутов определяются при помощи декларации attributeGroup:
В следующем примере определяется группа атрибутов с именем «personattrgroup»:
После того как группа атрибутов была определена, вы можете использовать ее в других определениях: