16 Типы данных и определения в схеме
править
В данной спецификации используются следующие типы данных.
- Определения типов данных W3C-схемы даны в [xmlschema-2] (ссылка на элементы
<ref>
также присваивает имя соответствующим типам данных)
— string (строка);
— date (дата);
— time (время);
— dateTime (датаВремя);
— duration (длительность);
— integer (целочисленный);
— nonNegativeInteger (целочисленный неотрицательный);
— positiveInteger (целочисленный положительный);
— double (численный с двойной точностью);
— anyURI (общепринятый идентификатор ресурса);
— base64Binary (последовательность бинарных октетов произвольной длины);
— ID (метка);
— IDREF (ссылка на метку).
Определения типов данных Relax-NG для W3C-схемы:
- Типы данных пользователя (обычно это конкретизация типов данных W3C-схемы):
— boolean (логический) — может принимать только одно из двух значений — true
(истина) или false
(ложь);
— dateOrDateTime (дата или датаВремя) — значение dateOrDateTime по существу такое же, как в схеме [xmlschema-2], это значение даты и времени с необязательным компонентом времени, другими словами, оно может содержать только дату или дату и время;
— timeOrDateTime (время или датаВремя) — значение timeOrDateTime по существу такое же, как в схеме [xmlschema-2], это значение даты и времени с необязательным компонентом даты, другими словами, оно может содержать только время или дату и время;
— language (язык) — то же самое, что тип данных language в схеме W3C, за исключением того, что значения описываются в [RFC3066] вместо [RFC1766];
— countryCode (код страны) — значение countryCode — код страны в соответствии с [RFC3066], как определено в [XSL];
— languageCode (код языка) — значение languageCode — код языка в соответствии с [RFC3066], как определено в [XSL];
— character (символьный) — значение character — строка, состоящая только из одного символа;
— length (длина) — физическая длина (положительная или отрицательная), состоящая из величины и единицы измерения, в соответствии с § 5.9.11 в [XSL], корректное значение длины может быть «2.54 cm» или «1 inch», число без единицы измерения — некорректное значение длины, например, «3.2», поддержка значений в пикселях необязательна;
— nonNegativeLength (неотрицательная длина) — похож на тип данных length, за исключением того, что значение должно быть нулевым или положительным;
— positiveLength (положительная длина) — похож на тип данных length, за исключением того, что значение должно быть положительным;
— percent (процентный) — значение в процентах (положительное или отрицательное) в соответствие с § 5.9.11 в [XSL], например, «40 %»;
— relativeLength (относительная длина) — положительное целое число, следующее за символом « * »;
— coordinate (координатный) — похож на тип данных length, за исключением того, что физическая длина обозначает конкретную точку;
— distance (расстояние) — похож на тип данных length, за исключением того, что физическая длина указывает расстояние между точками;
— color (цвет) — RGB-цвет в соответствие с § 5.9.11 в [XSL], т. е. RGB-цвет в "#rrggbb" нотации, где rr, gg и bb — шестнадцатеричные цифры;
— styleName (имя стиля) — NCName, как определено в [xmlschema-2], — это имя стиля;
— StyleNameRef (ссылка на имя стиля) — NCName, как определено в [xmlschema-2], — ссылка на имя стиля или пустое значение;
— StyleNames (имена стилей) — список, состоящий из NCNames, разделенный пробельными символами, как определено в [xmlschema-2] — имена стилей;
— VariableName (имя переменной) — строка, определяющая имя переменной;
— formula (формула) — строка, содержащая формулу, формулы не имеют встроенного синтаксиса, но должны начинаться с префикса пространства имен, который конкретизирует синтаксис, используемый в пределах формулы;
— valueType (тип значения) — список поддерживаемых значений для определенных общих значений типов, таких как string или date;
— targetFrameName (имя целевого фрейма) — имя целевого фрейма в соответствии с § 6.16 [HTML4];
— points (пункты) — последовательность пунктов, пункты — две целых координаты, разделенные запятой, пункты разделяются пробельным символом;
— pathData (путь к данным) — путь к данным, как описано в § 8 из [SVG];
— vector3D (трехмерный вектор) — вектор из трех элементов с плавающей точкой, представленный координатами x,y,z, заключенными в круглые скобки, записанными в порядке x, y, z и разделенными пробельными символами, если значение представлено как нормальное, то оно должно быть нормализовано.
Пример —
Направленный вектор с координатами x=0.5, y=0 и z=1 выглядит как «(0.5 0 1)».
— namespacedToken (маркер пространства имен) — маркер пространства имен — это идентификатор маркера, который использует механизм пространства имен XML для целей компоновки.
Пример —
Предопределенные типы диаграмм используют пространство имен диаграмм urn:oasis:names:tc:opendocument:xmlns:chart:1.0
. Допускается описание пространства имен xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
, столбиковая диаграмма была бы идентифицирована как chart:bar
. Определения типов данных Relax-NG для типов данных пользователя:
<define name="boolean">
<choice>
<value>true</value>
<value>false</value>
</choice>
</define>
<define name="dateOrDateTime">
<choice>
<data type="date"/>
<data type="dateTime"/>
</choice>
</define>
<define name="timeOrDateTime">
<choice>
<data type="time"/>
<data type="dateTime"/>
</choice>
</define>
<define name="language">
<data type="token">
<param name="pattern">[A-Za-z]{1,8}(-[A-Za-z0-9]{1,8})*</param>
</data>
</define>
<define name="countryCode">
<data type="token">
<param name="pattern">[A-Za-z0-9]{1,8}</param>
</data>
</define>
<define name="languageCode">
<data type="token">
<param name="pattern">[A-Za-z]{1,8}</param>
</data>
</define>
<define name="character">
<data type="string">
<param name="length">1</param>
</data>
</define>
<define name="length">
<data type="string">
<param name="pattern">-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|
(pt)|(pc)|(px))</param>
</data>
</define>
<define name="nonNegativeLength">
<data type="string">
<param name="pattern">([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|
(pc)|(px))</param>
</data>
</define>
<define name="positiveLength">
<data type="string">
<!-- A zero value is not allowed here -->
<param name="pattern">([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|
(pc)|(px))</param>
</data>
</define>
<define name="percent">
<data type="string">
<param name="pattern">-?([0-9]+(\.[0-9]*)?|\.[0-9]+)%</param>
</data>
</define>
<define name="relativeLength">
<data type="string">
<param name="pattern">[0-9]+\*</param>
</data>
</define>
<define name="coordinate">
<ref name="length"/>
</define>
<define name="distance">
<ref name="length"/>
</define>
<define name="color">
<data type="string">
<param name="pattern">#[0-9a-fA-F]{6}</param>
</data>
</define>
<define name="styleName">
<data type="NCName"/>
</define>
<define name="styleNameRef">
<choice>
<data type="NCName"/>
<empty/>
</choice>
</define>
<define name="styleNameRefs">
<list>
<zeroOrMore>
<data type="NCName"/>
</zeroOrMore>
</list>
</define>
<define name="variableName">
<data type="string"/>
</define>
<define name="formula">
<!-- A formula should start with a namespace prefix, -->
<!-- but has no restrictions-->
<data type="string"/>
</define>
<define name="targetFrameName">
<choice>
<value>_self</value>
<value>_blank</value>
<value>_parent</value>
<value>_top</value>
<ref name="string"/>
</choice>
</define>
<define name="valueType">
<choice>
<value>float</value>
<value>time</value>
<value>date</value>
<value>percentage</value>
<value>currency</value>
<value>boolean</value>
<value>string</value>
</choice>
</define>
<define name="points">
<data type="string">
<param name="pattern">-?[0-9]+,-?[0-9]+([ ]+-?[0-9]+,-?[0-9]+)*</param>
</data>
</define>
<define name="pathData">
<data type="string"/>
</define>
<define name="vector3D">
<data type="string">
<param name="pattern">\([ ]*-?([0-9]+(\.[0-9]*)?|\.[0-9]+)([ ]+-?([0-9]+
(\.[0-9]*)?|\.[0-9]+)){2}[ ]*\)</param>
</data>
</define>
<define name="namespacedToken">
<data type="string">
<param name="pattern">[0-9a-zA-Z_]+:[0-9a-zA-Z._\-]+</param>
</data>
</define>