Типизация данных
Довольно часто при создании 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 консорциуме находится на рассмотрении новый стандарт языка описания структуры документов, называемый схемами данных. Следующий раздел посвящен работе с ними.
Дата добавления: 2015-09-14; просмотров: 549;