nillable true что это
XSD элемент element
Элемент element определяет элемент.
Синтаксис элемента
Атрибуты элемента
Атрибут | Описание | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id | Не обязательный. Определяет уникальный идентификатор для элемента | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
name | Не обязательный. Определяет имя элемента. Этот атрибут требуется, если родительским элементом является элемент schema | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ref | Не обязательный. Ссылается на имя другого элемента. Атрибут ref может включать префикс пространства имен. Этот атрибут нельзя использовать, если родительским элементом является элемент schema | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
type | Не обязательный. Определяет либо имя встроенного типа данных, либо имя элемента simpleType или complexType | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
substitutionGroup | Не обязательный. Определяет имя элемента, который может быть замещен этим элементом. Этот атрибут нельзя использовать, если родительским элементом является не элемент schema | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
default | Не обязательный. Определяет значение элемента по умолчанию (может использоваться только если содержимое элемента простого типа или текст) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fixed | Не обязательный. Определяет фиксированное значение элемента (может использоваться только если содержимое элемента простого типа или текст) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
form | Не обязательный. Определяет форму элемента. Значение «qualified» указывает на то, что этот элемент должен уточняться префиксом пространства имен. Значение «unqualified» указывает на то, что этот элемент не требует уточнения префиксом пространства имен. Значением по умолчанию является значение атрибута elementFormDefault атрибута элемента schema. Этот атрибут нельзя использовать, если родительским элементом является элемент schema | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
maxOccurs | Не обязательный. Определяет, сколько раз максимально может появляться элемент в родительском элементе. Значением может быть любое целое число >= 0, если же нужно снять лимит на использование, то следует указать ключевое слово «unbounded». Значение по умолчанию 1. Этот атрибут нельзя использовать, если родительским элементом является элемент schema | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
minOccurs | Не обязательный. Определяет, сколько раз минимально может появляться элемент в родительском элементе. Значением может быть любое целое число >= 0. Значение по умолчанию 1. Этот атрибут нельзя использовать, если родительским элементом является элемент schema | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
nillable | Не обязательный. Определяет, можно ли элементу присваивать явное нулевое значение nil. Значение true позволяет элементу устанавливать атрибут nil в значение true. Атрибут nil определен как часть пространства имен XML схемы. Значение по умолчанию false | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
abstract | Не обязательный. Определяет, можно ли использовать этот элемент в документе. Значение true определяет, что элемент не может использоваться в документе. Вместо этого, на месте данного элемента должен появляться другой элемент, атрибут substitutionGroup которого содержит имя с префиксом (QName) этого элемента. Значение по умолчанию false | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
block |
Содержимое | схема |
---|---|
simpleContent | Расширения запрещены. |
в сложном типе: атрибуты
attribute | схема |
---|---|
id | Не обрабатывается. |
maxOccurs | По умолчанию должен иметь значение 1. |
minOccurs | По умолчанию должен иметь значение 1. |
в сложном типе: содержимое
Содержимое | схема |
---|---|
element | Каждый экземпляр сопоставляется с элементом данных. |
group | Запрещено. |
choice | Запрещено. |
sequence | Запрещено. |
any | Запрещено. |
(пусто) | Сопоставляется с контрактом данных, не имеющем элементов данных. |
Элементы –
Общие сведения
может использоваться в следующих случаях.
Он может использоваться в в качестве объявления глобального элемента.
с maxOccurs = 1 в (элементы данных)
с maxOccurs>1 в коллекции (коллекций)
В типах коллекции только один xs:element допустим в xs:sequence.
Коллекции могут быть следующих типов:
Обычные коллекции (например, массивы).
Коллекции-словари (сопоставляющие одно значение другому; например, Hashtable).
Единственное отличие между словарем и массивом типа пара ключ/значение заключается в создаваемой модели программирования. Существует механизм заметки схемы, который можно использовать чтобы указать, что данный тип является коллекцией-словарем.
в объявлении глобального элемента
Объявление глобального элемента, имеющего то же имя и пространство имен, что и тип в схеме, или определяющего анонимный тип внутри себя, означает связь с типом.
Экспорт схемы: связанные объявления глобальных элементов создаются для каждого создаваемого типа, как простого, так и сложного.
Десериализация/сериализация: связанные объявления глобальных элементов используются в качестве корневых элементов данного типа.
Импорт схемы: связанные объявления глобальных элементов не требуются и игнорируются, если они соответствуют следующим правилам (если только они не определяют типы).
attribute | схема |
---|---|
abstract | Должен иметь значение false для связанных объявлений глобальных элементов. |
block | Запрещено в связанных объявлениях глобальных элементов. |
default | Запрещено в связанных объявлениях глобальных элементов. |
final | Должен иметь значение false для связанных объявлений глобальных элементов. |
fixed | Запрещено в связанных объявлениях глобальных элементов. |
id | Не обрабатывается. |
name | Поддерживается. См. определение связанных объявлений глобальных элементов. |
nillable | Должен иметь значение true для связанных объявлений глобальных элементов. |
substitutionGroup | Запрещено в связанных объявлениях глобальных элементов. |
type | Поддерживается и должен соответствовать связанному типу связанных объявлений глобальных элементов (если только элемент не содержит анонимный тип). |
: содержимое
Содержимое | схема |
---|---|
simpleType | Поддерживается.* |
complexType | Поддерживается.* |
unique | Не обрабатывается. |
key | Не обрабатывается. |
keyref | Не обрабатывается. |
(пусто) | Поддерживается. |
* При использовании simpleType сопоставления и complexType, для анонимных типов такая же, как и для неанонимных типов, за исключением того, что нет анонимных контрактов данных, поэтому создается именованный контракт данных с созданным именем, производным от имени элемента. Ниже перечислены правила для анонимных типов.
Сведения о реализации WCF: Если xs:element имя не содержит точек, то анонимный тип сопоставляется внутреннему типу внешнего типа контракта данных. Если имя содержит точки, итоговый тип контракта данных является независимым (не внутренним типом).
Если контракт данных с таким именем уже существует, уникальное имя создается путем добавления «1», «2», «3» и т. д., пока не будет создано уникальное имя.
: атрибуты
attribute | схема |
---|---|
final | Не обрабатывается. |
id | Не обрабатывается. |
name | Поддерживается, сопоставляется имени контракта данных. |
: содержимое
Содержимое | схема |
---|---|
restriction | Поддерживается. Сопоставляется контрактам данных перечислений. Если этот атрибут не соответствует шаблону перечисления, он игнорируется. См. раздел «Ограничения xs:simpleType ». |
list | Поддерживается. Сопоставляется контрактам данных перечислений флагов. См. раздел «Списки xs:simpleType «. |
union | Запрещено. |
Ограничения сложных типов поддерживаются только для base=» xs:anyType «.
: атрибуты
для всех остальных случаев: содержимое
Содержимое | схема |
---|---|
simpleType | Если существует, должен быть образован от поддерживаемого примитивного типа. |
minExclusive | Не обрабатывается. |
minInclusive | Не обрабатывается. |
maxExclusive | Не обрабатывается. |
maxInclusive | Не обрабатывается. |
totalDigits | Не обрабатывается. |
fractionDigits | Не обрабатывается. |
length | Не обрабатывается. |
minLength | Не обрабатывается. |
maxLength | Не обрабатывается. |
enumeration | Не обрабатывается. |
whiteSpace | Не обрабатывается. |
pattern | Не обрабатывается. |
(пусто) | Поддерживается. |
Перечисление
для перечислений: атрибуты
для перечислений: содержимое
Содержимое | схема |
---|---|
simpleType | Если существует, должен быть ограничением перечисления, поддерживаемым контрактом данных (этот раздел). |
minExclusive | Не обрабатывается. |
minInclusive | Не обрабатывается. |
maxExclusive | Не обрабатывается. |
maxInclusive | Не обрабатывается. |
totalDigits | Не обрабатывается. |
fractionDigits | Не обрабатывается. |
length | Запрещено. |
minLength | Запрещено. |
maxLength | Запрещено. |
enumeration | Поддерживается. Перечисление id не учитывается, а value сопоставляется с именем значения в контракте данных перечисления. |
whiteSpace | Запрещено. |
pattern | Запрещено. |
(пусто) | Поддерживается, сопоставляется пустому типу перечисления. |
В следующем коде показан класс перечисления C#.
DataContractSerializer сопоставляет этот класс следующей схеме. Если значения перечисления начинаются с 1, блоки xs:annotation не создаются.
: атрибуты
: содержимое
В следующем коде показана установка флагов для типа перечисления.
Этот тип сопоставляется следующей схеме.
Наследование
Основные правила
Контракт данных не может наследовать от контракта данных коллекции.
В следующем коде показан пример контракта данных.
Этот контракт данных сопоставляется следующему объявлению типа схемы XML.
: атрибуты
attribute | схема |
---|---|
id | Не обрабатывается. |
mixed | Должен иметь значение false. |
: содержимое
в : атрибуты
attribute | схема |
---|---|
id | Не обрабатывается. |
base | Поддерживается. Сопоставляется базовому типу контракта данных, от которого наследует этот тип. |
в : содержимое
Если производный тип содержит элемент с тем же именем, что и элемент базового типа, дублирующееся объявление элемента сопоставляется члену данных с создаваемым уникальным именем. Положительные целые числа добавляются к имени члена данных («member1», «member2» и т. д.) до тех пор, пока не будет найдено уникальное имя. И наоборот:
Если производный контракт данных имеет член данных с тем же именем и типом, что и член данных в базовом контракте данных, DataContractSerializer создает соответствующий элемент в производном типе.
В обоих случаях может возникнуть схема с неоднозначной моделью содержимого, которая зависит от порядка соответствующих членов данных.
Сопоставление тип-примитив
DataContractSerializer использует следующие сопоставления для примитивных типов схемы XML.
Сопоставление типов ISerializable
Ниже приведен пример полного объявления схемы сериализации контракта данных.
Необходимо отметить следующее.
ser:char введен для представления символов Юникода типа Char.
valuespace«xs:duration сокращается до упорядоченного набора, чтобы можно было выполнить его сопоставление TimeSpan.
FactoryType используется в схемах, экспортируемых из типов, унаследованных от ISerializable.
Импорт схем, отличных от DataContract
XBRL: просто о сложном − Глава 6. Погружение в XBRL − Часть 5. Новые измерения
6.5. Новые измерения
В предыдущих разделах мы достигли значительных успехов в представлении отчетной формы из нашего примера в виде отчета XBRL, но полного соответствия так и не получили. Сегодня на одного из наших разработчиков снизошло озарение: А давайте попробуем применить XBRL Dimensions!
При взгляде на Главу 5 становится очевидно, что гендерные и возрастные группы могут быть представлены в виде измерений.
6.5.1. Базовые концепты
Факты о количестве сотрудников будут представлены в разрезе нескольких измерений с использованием разных подстановок (substitutions) nr_employees для разделения измерений (и презентаций).
6.5.2. Таксономия шаблонов (template taxonomy)
Элементы доменов и таксономия шаблонов объединены в общую схему таксономии. Таксономия шаблонов импортирует несколько других схем:
Схема xbrldi не используется в самой таксономии шаблонов, но используется в отчете, который в свою очередь ссылается на таксономию шаблонов. Чтобы максимально снизить зависимость отчета от модуля измерений, его импорт производится в таксономии шаблонов. Также, она ссылается на базовую таксономию, чтобы иметь связь с концептами.
6.5.3. Типизированное измерение
Как мы знаем, существуют два типа измерений – типизированные и явные. В этом разделе мы рассмотрим, как возрастные группы могут быть представлены в виде типизированного измерения.
Прежде всего, нам нужен элемент для определения типа для age_group. Мы будем использовать простой тип с перечислением допустимых значений:
6.5.4. Явное измерение
Для разнообразия, в этом разделе покажем, как представить гендерные группы в виде явного измерения. Это означает, что мы должны определить набор концептов для элементов измерения и, собственно, для самого измерения.
В базе ссылок мы используем роль и определяем локаторы концептов обычным образом.
Измерение имеет взаимосвязь dimension-domain со своим доменом. Элементы домена определяются взаимосвязями domain-member между локаторами концептов в базе ссылок определений.
6.5.5. Гиперкубы
Теперь, когда у нас есть базовая таксономия и таксономия элементов домена, мы можем объединить их гиперкубами в таксономии шаблонов.
Создаем связи между базовыми концептами, гиперкубами и измерениями.
Аналогично для возрастных групп:
Обратите внимание, что в ссылке должна использоваться роль, определенная в таксономии измерений – ageGroupDimension :
6.5.6. Презентации
Базы ссылок презентаций и ярлыков аналогичны тем, что мы рассматривали ранее, не будем повторять их здесь.
6.5.7. Отчет
Теперь, когда наша таксономия измерений готова, мы можем сделать связанный с ней отчет. Сначала определим контексты для общего количества сотрудников на начало и конец отчетного периода.
Далее определим контексты для значений измерения возрастных групп.
Теперь определяем контексты для значений гендерного измерения.
Обратите внимание, что отчет ссылается на таксономию шаблонов, а не на базовую таксономию.
Теперь мы можем передавать факты, каждый в своём контексте.
6.5.8. Первый взгляд на новые измерения
Наше простое приложение для визуализации отчета не поддерживает измерения, поэтому отчет выглядит следующим образом:
После некоторых ручных корректировок – удаления неиспользуемых столбцов, упорядочивания остальных столбцов и добавления заголовков таблиц – мы можем взглянуть на несколько лучшую версию отчета, которую вы могли бы ожидать от приложения с поддержкой измерений:
- sbercrm что это такое
- Учащенный пульс и сердцебиение причины что делать