Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Собственный тип данных XML определяется как XML_TYPE.
Синтаксис определяется XML. Можно определить любой тип данных, распознаваемый схемой XML. Фильтр средства синтаксического анализа не зависит от типов данных XML, поэтому текущее средство синтаксического анализа может поддерживать будущие типы данных XML без каких-либо изменений.
* DataType: XML_TYPE связывает шаблон со встроенным простым типом данных для определенного языка определения схемы XML. Значение данных экземпляра будет выводиться как содержимое XML-элемента , xsi:type которого является производным от конструкции *XMLDataType , заданной этим шаблоном.
Для определения типа данных XML_TYPE используются следующие директивы:
*XMLDataType (обязательно). Любой встроенный простой тип схемы XSD. Рекомендация консорциума World Wide Web (W3C) для схемы XML распознает следующие встроенные простые типы данных: string, normalizedString, token, byte, unsignedByte, base64Binary, hexBinary, integer, positiveInteger, negativeInteger, nonNegativeInteger, nonPositiveInteger, int, unsignedInt, long, unsignedLong, short, unsignedShort, decimal, float, double, boolean, time, dateTime, duration, date, gMonth, gYear, gYearMonth, gDay, gMonthDay, Name, QName, NCName, anyURI, language, ID, IDREF, IDREFS, ENTITY, ENTITIES, NOTATION, NMTOKEN и NMTOKENS. Обратите внимание, что средство синтаксического анализа GDL не ограничивается этими типами данных и предназначено для обработки будущих типов данных XML без каких-либо изменений.
*ArrayLabel (необязательно). Если указать эту директиву, фильтр синтаксического анализа ожидает, что значение будет заключено в круглые скобки, перед которыми будет указана метка массива.
Синтаксис значения должен соответствовать синтаксису, определенному стандартом W3C XML для конкретного типа данных. Если синтаксис XML конфликтует с основными правилами синтаксиса GDL, значение (или только конфликтующая часть) должно быть заключено в <конструкции Begin/EndValue:> . XML-значения с такими несовместимыми синтаксисами или синтаксис которых несовместим с синтаксисом, используемым составными типами данных, не могут отображаться как член составного типа данных. Также обратите внимание, что средство синтаксического анализа GDL не будет экранировать специальные XML-символы, такие как открывающие или закрывающие скобки (< или >) или амперсанд (&). Создатель значения отвечает за соответствие синтаксису XML для символьных данных.
Например, рассмотрим следующий шаблон.
*Template: XML_STRING
{
*Type: DATATYPE
*DataType: XML_TYPE
*XMLDataType: "string"
}
Если вы используете предыдущий шаблон, будет создана следующая запись схемы XML. Эта запись определяет новый тип данных, производный от типа, первоначально заданного директивой *XMLDataType, но этот новый тип данных имеет дополнительные XML-атрибуты, которые могут отображаться в snapshot. Если вы использовали исходный тип данных, вы получите ошибки проверки схемы, так как исходные предопределенные типы не позволяют отображать АТРИБУТы XML.
<complexType name = "GDLW_string">
<simpleContent>
<extension base="string">
<attribute name="Name" type="string" use="optional"/>
<attribute name="Personality" type="string" use="optional"/>
</extension>
</simpleContent>
</complexType>
Рассмотрим следующую запись GDL.
*Text: Hello World
Рассмотрим шаблон PHRASE, который объявляет атрибут GDL *Text , чтобы иметь *ValueType , определенный шаблоном XML_STRING, как показано в следующем примере кода.
*Template: PHRASE
{
*Name: "*Text"
*Type: ATTRIBUTE
*ValueType: XML_STRING
}
Если предыдущая запись GDL интерпретируется с помощью шаблона PHRASE, будут выведены следующие выходные данные XML.
<GDL_ATTRIBUTE Name="*Text" xsi:type="GDLW_string" >Hello World</GDL_ATTRIBUTE>
XML-атрибут xsi:type используется для указания типа данных, удерживаемого этим элементом атрибута, так как схема не содержит объявления для этого элемента.