Что означает minoccurs в xsd

XML-схема minOccurs/maxOccurs значения по умолчанию

Мне интересно, как спецификация XML Schema обрабатывает эти случаи:

Нет maxOccurs given → Является ли это мощностью [1..1]?

Я полагаю, это просто неверно?

Является ли это мощностью [0..2] или [1..2]?

Есть ли «официальное» определение того, как спецификация XML Schema обрабатывает эти случаи?

ОТВЕТЫ

Ответ 1

Значения по умолчанию для minOccurs и maxOccurs равны 1. Таким образом:

: 1 Примечание: если вы укажете только атрибут minOccurs, он не может быть больше 1, потому что значение по умолчанию для maxOccurs равно 1.

мощность 1 Примечание: если вы укажете только атрибут maxOccurs, он не может быть меньше 1, поскольку значение по умолчанию для minOccurs равно 1.

— допустимая комбинация, которая запрещает элемент.

Ответ 2

Новый расширенный ответ на старый, часто задаваемый вопрос.

Значения по умолчанию

Объяснение общих случаев

означает A требуется и должен выглядеть ровно один раз.

означает A необязательный и может отображаться не чаще одного раза.

означает A требуется и может повторять неограниченное количество раз.

означает A необязательный и может повторять неограниченное количество раз.

См. также

Ответ 3

Результат:

Ответ 4

Короткий ответ:

Как написано в xsd:

Если вы предоставляете атрибут с номером, то номер является границей. В противном случае атрибут должен появиться ровно один раз.

Источник

Показатели XSD

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

индикаторы

Есть семь показателей:

Индикаторы Заказать

Индикаторы заказа используются для определения порядка элементов.

Все Индикатор

Выбор индикатора

Индикатор чередования фаз

Показатели Встречаемость

Показатели Встречаемость используются для определения, как часто может произойти элемент.

Note: Для всех «Order» и «Group» показателей (любой, все, выбор, последовательность, название группы, и группа справки) значение по умолчанию для MaxOccurs и MinOccurs 1.

MaxOccurs Индикатор

индикатор определяет максимальное количество раз может возникнуть элемент:

MinOccurs Индикатор

индикатор определяет минимальное число раз может произойти элемент:

Tip: Чтобы разрешить элемент появляться неограниченное число раз, используйте MaxOccurs = «неограниченную» заявление:

Hege Refsnes
Cecilie

Tove Refsnes
Hege
Stale
Jim
Borge

Вот файл схемы «family.xsd» :

Группа Показатели

Показатели группы используются для определения связанных наборов элементов.

Элемент группы

групп элементов определяются с декларацией группы, как это:

После того, как вы определили группу, вы можете ссылаться на нее в другом определении, как это:

Группы атрибутов

Атрибут группы определяются с декларацией attributeGroup, как это:

Следующий пример определяет атрибут группу под названием «personattrgroup» :

После того как вы определили группы атрибутов, вы можете ссылаться на нее в другом определении, как это:

Источник

XSD: частичная валидация

XSD — это язык описания структуры XML документа. Его также называют XML Schema. При использовании XML Schema XML-парсер может проверить не только правильность синтаксиса XML документа, но также его структуру, модель содержания и типы данных. Многие так или иначе сталкивались с процедурой полной валидации, обеспечивающей соответствие документа заданной схеме или сообщающей о возможных ошибках. В данной статье речь пойдет о частичной валидации, кроме вышеописанного, позволяющей конструировать валидные документы «на лету». Мы разберемся, какие возможности может предоставить такой подход и способы его реализации.

Основная цель

Зачем вообще может понадобиться конструировать документ, обладающий заданными свойствами, и какими свойствами мы можем управлять? На первый вопрос ответ практически очевиден; большинство документов не являются просто текстом, а наделены некоторой семантикой. XML решает вопрос синтаксического представления, а схема – частично решает вопрос семантического значения. Благодаря соответствию документа схеме, можно выполнять над ним набор предопределенных действий, допустимых для целого класса валидных документов, будь то представление в другом формате, экспорт значимой части информации для конкретной задачи, импорт новой информации с учетом глобальных ограничений. Наиболее часто применяемый механизм в таком случае – это XSLT преобразование, смысл которого можно проиллюстрировать следующей диаграммой:

Что означает minoccurs в xsd. Смотреть фото Что означает minoccurs в xsd. Смотреть картинку Что означает minoccurs в xsd. Картинка про Что означает minoccurs в xsd. Фото Что означает minoccurs в xsd

Часто возникает желание модифицировать документ, уже отвечающий выбранной схеме, таким образом, чтобы он не потерял валидность. Здесь речь идет и о автоматических модификациях, например добавление веб-агентами (агрегаторами) информации в документ или модифицирующие запросы в XML-базу данных, так и о ручной модификации, скажем, в визуальном XML-редакторе. Операция полной валидации для больших документов может занимать существенное время, десятки секунд и более, что в целом препятствует использованию подхода «атомарное изменение – проверка – отказ/разрешение». А для визуальных редакторов хотелось бы еще больше – иметь возможность не только проверить атомарное действие, а предложить все допустимые по схеме варианты модификации конкретного узла. Однако, хорошие XML-редакторы умеют это делать, и мы попробуем разобраться каким образом у них это получается.

Необходимая информация о XML схеме

Правило Unique Particle Attribution (однозначность определения частиц) требует, чтобы каждый элемент документа однозначно соответствовал ровно одной частице xsd:element или xsd:any в модели содержимого родительского элемента [2].

Вообще говоря, правило Unique Particle Attribution (UPA) не является жестким требованием к структуре XML схем, а только крайне желательной рекомендацией и часть используемых схем ему не соответствует. Рассмотрим простейший пример, иллюстрирующий нарушение правила однозначности определения частиц.

Построение валидатора

1. Построение недетерминированного конечного автомата (NFA) с заданным конечным состоянием S по заданной частице:
a. Установим начальное состояние n на S;

b. Если MaxOccurs частицы равен бесконечности (inf):
• Добавим новое промежуточное состояние t; получаемое из преобразования терма в NFA (случай 2); добавим эпсилон-ребра из t в n и из n в S:
Что означает minoccurs в xsd. Смотреть фото Что означает minoccurs в xsd. Смотреть картинку Что означает minoccurs в xsd. Картинка про Что означает minoccurs в xsd. Фото Что означает minoccurs в xsd

c. Если MaxOccurs частицы – число m:
• Строим цепочку из (MaxOccurs-MinOccurs) преобразований терма, начиная из конечного состояния S, добавляя эпсилон-ребро из промежуточного состояния на каждом шаге в конечное состояние S;
Например, для MaxOccurs=4 и MinOccurs=2 получаем следующий автомат:
Что означает minoccurs в xsd. Смотреть фото Что означает minoccurs в xsd. Смотреть картинку Что означает minoccurs в xsd. Картинка про Что означает minoccurs в xsd. Фото Что означает minoccurs в xsd

d. Достраиваем minOccurs копий преобразования терма от нового начального состояния n, до начального состояния, полученного на предыдущих шагах.

2. Построение недетерминированного конечного автомата с заданным принимающим состоянием S по заданному терму:
a. Если терм – шаблон (any):
• Создаем новое состояние b, и соединяем его с S ребром, помеченным типом терма, возвращаем b;

b. Если терм – описание элемента:
• Создаем новое состояние b, затем для каждого элемента группы подстановки создаем ребро из b в S, помеченное типом элемента и возвращаем b;

c. Если терм – выбор (choice):
• Создаем новое состояние b, для каждого элемента выбора создаем автомат (случай 1) и соединяем его эпсилон-ребрами с состоянием b и состоянием S. Возвращаем b;

d. Если терм – последовательность (sequence):
• Для каждого элемента выбора создаем автомат (случай 1) и соединяем полученные автоматы в обратном порядке, начиная с состояния S, и возвращаем первое состояние в цепочке;

Затем применим алгоритм Томпсона к полученным NFA [3], для построения детерминированных автоматов. Алгоритм Томпсона можно применить в тех же случаях, что и алгоритм построения детерминированного автомата Ахо и Ульмана, основанный на сворачивании одинаково помеченных не-эпсилон ребер [4]. Однако в ряде случаев по исходному автомату (созданному на шагах 1–2) алгоритм Ахо и Ульмана не сможет построить детерминированный автомат.

Осталось решить последнюю задачу – выбор нужного конечного автомата при валидации операции над заданным элементом дерева. С этим нам поможет структура привязки типов валидации (PSVI, Post-Schema-Validation Infoset), порождаемая почти любым (например, MSXML или libxml) полным валидатором. Для любого элемента дерева она указывает на соответствующий ему тип в описании схемы – в точности тот, по которому мы порождали нужный автомат.

Что означает minoccurs в xsd. Смотреть фото Что означает minoccurs в xsd. Смотреть картинку Что означает minoccurs в xsd. Картинка про Что означает minoccurs в xsd. Фото Что означает minoccurs в xsd

В нашем случае реализация структуры PSVI представляется ссылкой на тип схемы для каждого элемента дерева.

Операции MOVE и REMOVE не меняют тип операнда (поэтому не требуют изменения структуры PSVI), а операция ADD вместе с добавлением элемента x, потребует добавления в структуру PSVI типа x. Таким образом, вместе с изменением структуры мы меняем и информационное множество привязки типов валидации, решая задачу частичной валидации и поддерживая дерево PSVI без вызова внешнего валидатора.

Источник

Значения по умолчанию minOccurs / maxOccurs схемы XML

мне интересно, как спецификация схемы XML обрабатывает эти случаи:

Я полагаю, это просто недействительно?

существует ли «официальное» определение того, как спецификация схемы XML обрабатывает эти случаи?

2 ответов

значения по умолчанию для minOccurs и maxOccurs в 1. Таким образом:

мощность 1 Примечание: Если вы укажете только атрибут minOccurs, он не может быть больше 1, потому что значение по умолчанию для maxOccurs равно 1.

мощность 1 Примечание: Если вы укажете только атрибут maxOccurs, он не может быть меньше 1, потому что значение по умолчанию для minOccurs 1.

является допустимой комбинацией, которая делает элемент запрещенным.

новый, расширенный ответ на старый, часто задаваемый вопрос.

Значения По Умолчанию

Общие Дела Пояснил,

означает A и требуются и должен появиться ровно после.

означает A и дополнительно и в самый раз.

означает A и требуются и может повторить неограниченное количество раз.

означает A и дополнительно и может повторить неограниченное количество раз.

См. Также

В общем случае элемент должен появиться, когда значение minOccurs 1 или больше. Максимальное число раз, когда элемент может appear определяется значением атрибута maxOccurs в его декларация. Это значение может быть положительным целым числом, например 41 или срок неограниченность указать максимальное количество повторений. Значение по умолчанию для атрибутов minOccurs и maxOccurs это 1. Таким образом, когда такой элемент, как comment, объявляется без атрибут maxOccurs, элемент может возникать не более одного раза. Быть уверенным если указать значение только для атрибута minOccurs, то это меньше или равно значению maxOccurs по умолчанию, т. е. 0 или 1. Аналогично, если указать значение только для атрибута maxOccurs, это должно быть больше или равно значению по умолчанию равен значению, т. е. 1 или более. Если оба атрибута опущены, элемент должен появляются ровно один раз.

Источник

Инструменты пользователя

Инструменты сайта

Содержание

Аннотации

компонент может иметь атрибут xml: lang, в котором указывается язык написания самой аннотации.

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

Типы данных

Объявление элемента

Обратите также внимание на то, что при указании типа элемента обязательно необходимо задавать пространство имен:

Объявление атрибутов

Необязательный атрибут use может принимать одно из следующих значений:

Простые и комплексные типы данных

simpleType

Простые типы в основном используются для сужение типов (restriction)

Cужение типов (restriction)

С помощью сужение типов (restriction) Мы можем контролировать любой тип данных на наличие его значения то есть ограничивать его значения
Приме: Схема

Название фасеткиОписание
Наибольшее значение, которое больше не входит в определяем тип
Наибольшее значение определяемого типа
Наименьшее значение, которое больше не входит в Определяемый тип
Наименьшее значение определяемого типа
Общее количество цифр в определяемого числовом типе; сужение типа decimal
Количество цифр в дробной части числа
Длина значений определяемого типа
Наибольшая длина значений определяемого типа
Наименьшее длина значений определяемого типа
Одно из перечисленных значений

В тегах-фасетка также могут иметь атрибуты. Эти атрибуты называют базисными фасетками (fundamental facets). Среди них выделяют:

complexType

Схема: базовый элемент

Группы элементов

Группа позволяет описать общие элементы. (работает как include) Схема:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *