» Xml для новичков
» Главная страница
»
К оглавлению
Типизация данных
Довольно часто при создании XML- элемента разработчику
требуется определить, данные какого типа могут использоваться в качестве его
содержимого. Т.е. если мы определяем элемент
<last-modified>10.10.98</last-modified>, то хотим быть уверенными,
что в документе в этом месте будет находиться строка, представляющая собой дату,
а не число или произвольную последовательность символов. Используя типизацию
данных, можно создавать элементы, значения которых могут использоваться,
например, в качестве параметров SQL- запросов. Программа клиент в этом случае
должна знать, к какому типу данных относится текущее значение элемента и в
случае соответствия формирует SQL-запрос.
Если в качестве программы на стороне клиента используется
верифицирующий XML-процессор, то информацию о типе можно передавать при помощи
специально созданного для этого атрибута элемента, имеющего соответствующее DTD-
определение. В процессе разбора программа-анализатор передаст значение этого
атрибута клиентскому приложению, которое сможет использовать эту информацию
должным образом. Например, чтобы указать, что содержимое элемента должно быть
длинным целым, можно использовать следующее DTD- определение: <!ELEMENT counter (PCDATA)>
<!ATTLIST counter data_long CDATA #FIXED "LONG">
Задав атрибуту значение по умолчанию LONG и определив его как
FIXED, мы позволили тем самым программе-клиенту получить необходимую информацию
о типе содержимого данного элемента, и теперь она может самостоятельно
определить соответствие типа этого содержимого указанному в DTD- определении .
Вот пример XML- документа, в котором определяются и
используются несколько элементов с различными типами данных: <!ELEMENT price (PCDATA)>
<!ATTLIST price data_currency CDATA #FIXED "CURRENCY">
<!ELEMENT rooms_num (PCDATA)>
<!ATTLIST rooms_num data_byte CDATA #FIXED "BYTE">
<!ELEMENT floor (PCDATA)>
<!ATTLIST floor data_byte CDATA #FIXED "INTEGER">
<!ELEMENT living_space (PCDATA)>
<!ATTLIST living_space data_float CDATA #FIXED "FLOAT">
<!ELEMENT counter (PCDATA)>
<!ATTLIST counter data_long CDATA #FIXED "LONG">
<!ELEMENT is_tel (PCDATA)>
<!ATTLIST is_tel data_bool CDATA #FIXED "BOOL">
<!ELEMENT house (rooms_num, floor,living_space,
is_tel, counter, price)>
<!ATTLIST house id ID #REQUIED>
...
<house id="0">
<rooms_num>5</rooms_num>
<floor>2</floor>
<living_space>32.5</living_space>
<is_tel>true</is_tel>
<counter>18346</counter>
<price>34 р. 28 к.</price>
</house>
...
Как видно из примера, механизм создания элементов документа при
этом нисколько не изменился. Все необходимая для проверки типов данных
информация заложена в определения элементов внутри блока DTD.
В заключении хотелось бы отметить, что DTD предоставляет нам
весьма удобный механизм осуществления контроля за содержимым документа. На
сегодняшний день, практически все программы просмотра документов Интернет
используют DTD-правила. Однако это далеко не единственный способ проверки
корректности документа. В настоящий момент в W3 консорциуме находится на
рассмотрении новый стандарт языка описания структуры документов, называемый
схемами данных. Следующий раздел посвящен работе с ними.
|