
XML преобразования и проверка XML данных
XML (Extensible Markup Language — расширяемый язык разметки) — рекомендованный Консорциумом WWW язык разметки общего назначения, предназначенный для создания специализированных языков разметки. Является упрощённым подмножеством языка SGML, может описывать множество разнообразных видов данных. Целью создания XML было стремление способствовать совместному использованию структурированных данных в различных системах обработки информации, особенно в системах связанных через Интернет. Языки основанные на XML (например, RDF, RSS, MathML, XHTML, SVG) сами по себе формально описаны, что позволяет программно изменять и проверять документы на этих языках не зная их семантики, т. е. смыслового значения элементов языка.
Для обработки XML данных широко используются такие API как SAX (Simple API for XML) и DOM (Document Object Model).
Преобразование (трансформация) является одной из самых важных и полезных техник работы с XML. Трансформация XML
означает преобразование структуры, разметки и, возможно, содержания в другую форму.
Существует семейство XSL (Extensible Stylesheet Language), с помощью которого преобразуются XML файлы для представления и печати, в него входят:
XSL-FO декларативный язык постраничной верстки. XSL-FO процессор преобразует XSL-FO документ в не-XML формат, например в PDF;
XQuery язык запросов для структурирования и трансформации XML данных;
XSLT декларативный язык преобразования XML документов;
XPath язык для выбора данных в XML файле, является частью XQuery и XSLT.
В спецификации «Преобразования расширяемого языка стилей» (Extensible Stylesheet Language Transformations (XSLT) 1.0) [Рекомендация W3C] определяется язык, используемый для описания преобразований входного XML-документа в выходное дерево. Выходное дерево может, например, принять форму HTML-документа или другого XML-формата и, таким образом, XSLT может считаться языком, предназначенным для преобразования XML в форму представления традиционного браузера или для обработки XML-файлов с помощью скриптов.
Это преобразование представляет собой XML-документ, определенный в отдельном словаре, а для обращения к исходному документу и выполнения общих операций обработки используются выражения спецификации XPath. Специальные инструкции устанавливают правила обработки (XSLT является декларативным языком) и управляют процессом создания выходного дерева.
XSL-документ (XSL stylesheet) представляет собой разновидность XML-документа, который используется для представления правил, по которым будет происходить преобразование. Правила основаны на совпадении шаблонов, т.е., например,
"если встретился элемент A, то вставить указанный кусочек HTML-кода и продолжить поиск совпадений шаблонов дальше"
. Все очень похоже на функциональный или логический язык программирования: есть рекурсивная и процедурная семантика; например, кроме рекурсивных применений шаблонов существует возможность органзации циклов (
"для всех элементов A вставить такой HTML-код"
).
Работает все это достаточно просто: для того, что бы преобразовать XML-документ по XSL-таблице нужно взять XSL-процессор, дать ему на вход два файла и на выходе получится результат.
Это первый вариант визуализации данных - как только потребовалось просмотреть XML-документ, преобразовать его с помощью XSLT процессора в HTML и просмотреть браузером.
Второй вариант заключается в том, что сам браузер при открытии документа пытался бы выполнить соответствующее преобразование. Сейчас это более-менее полно поддерживает только MS Internet Explorer версии не ниже 5.5 (с установленным MSXML) и Mozilla (в том числе Mozilla Firefox).
Что необходимо для того, чтобы XML документ при открытии в браузере отображался в виде результата преобразования этого XML с помощью некоторой XSLT,
рассмотрим вариант Internet Explorer:
в заголовоке XML документа необходимо указать путь к той XSLT, по правилам которой мы хотим показать наш XML, для этого под заголовком XML (<?xml ... ?>) добавляем следующую строку:<?xml-stylesheet type="text/xsl" href="my_xsl.xslt"?>
где в аттрибуте href определяется относительный или полный путь до шаблона XSLT;
в системе необходимо присутствие MSXML 4.0 (MSXML поддерживает XSLT 1.0 начиная с версии 3.0,
данная библиотека входит входит в дистрибутив Windows XP)
В XSLT используется стандартное пространство имен (namespace): <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
т.е заголовок нашего XSL-документа должен выглядеть примерно следующим образом:<?xml version="1.0" encoding=""?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
и наконец, XSLT документ должен соответствовать рекомендации XSLT 1.0.
XSLT процессоры
Для выполнения XSLT преобразований существуют как бесплатные, так и коммерчиские библиотеки написанные на С или Java, называемые XSLT-процессорами. Часто XSLT-процессор является лишь частью большой XML библиотеки, которая может включать в себя XML-парсер, XML-валидатор и т.д. Такие библиотеки могут быть использованы другими приложениями на различных языках C, C++, Java, Perl, PHP и т.д., которым необходима работа с XML.
"Правильность"
XML документа определяют следующие два компонента:
Синтаксическая корректность (well-formed): то есть соблюдение всех синтаксических правил XML;
Валидность: т.е. данные соотвествуют некоторому набору правил, определенных пользователем; правила определяют структуру и формат данных в XML.
XML документ - это текст, последовательность символов. По спецификации требуется поддержка юникод, кодировки UTF-8.
Он должен начинаться с XML-декларации
Он должен иметь один-единственный уникальный корневой элемент
Каждому начальному тэгу должен соответствовать конечный тэг
Тэги XML зависят от регистра
Все элементы должны быть закрыты
Все элементы должны бытьправильно вложены друг в друга
Все значения атрибутов должны быть заключены в кавычки
Вместо специальных символов должны применяться сущности XML
Даже если XML-документ не содержит синтаксических ошибок, он может содержать ошибки и эти ошибки могут привести к серьезным последствиям. Представьте себе ситуацию: вы сделали заказ на пять дюжин лазерных принтеров, а не на просто пять лазерных принтеров. При использовании XML-схем большая часть подобных ошибок может быть отслежена вашим валидационным программным обеспечением.
Схематичное представление XML схемы в редакторе Altova XMLspy
Определяет элементы, которые могут появляеться в документе
Определяет аттрибуты, которые могут появляеться в документе
Определяет, какие элменты являются дочерними
Определяет последовательность, в которой появляются элементы
Определяет число дочерних элментов
Определяет пустой ли элемент или он может включать в себя текст
Определяет типы данных элментов и аттибутов
Определяет значения аттрибутов по умолчанию
Вначале XML-схемы были предложены компанией Microsoft, но 2 мая 2001 года консорциум
W3C выдвинул XML-схемы в качестве своей официальной рекомендации.
Спецификация была пересмотрена членами W3C и теперь закреплена.
Одно из самых серьезных преимуществ XML-схем состоит в том, что оно поддерживают
типизацию данных.
Легче описывать разрешенное содержание документа
Легче проверять правильность данных
Легче работать с данными из баз данных
Легче задавать ограничения на данные
Легче задавать паттерны данных (форматы данных)
Легче преобразовывать данные различных типов
Еще один существенный плюс XML-схем состоит в том, что они пишутся на XML.
Вам не нужно изучать какой-то еще язык
Для редактирования схем можно использовать XML-редактор
Для анализирования схем можно использовать XML-napcep
Можно работать с XML-схемами посредством XML DOM
Можно преобразовывать схемы посредством XSLT
При отправке данных от отправителя получателю, очень важно, чтобы оба имели одинаковые "ожидания" относительно содержания.
С помощью XML-схем отправитель может описать то, каким образом получатель должен эти данные понимать.
Например, дата 1999-03-11 в некоторых странах может быть интерпретирована как 3 ноября, а в других - как 11 марта. XML-элемент, содержащий описание типа данных, например:
<date type="date">1999-03-ll</date>
обеспечит верную трактовку содержания, поскольку тип данных date требует использования формата CCYY-MM-DD.
XML-схемы расширяемы, также, как и XML, поскольку они пишутся на XML.
Встраивать одни схемы в другие
Создавать свои собственные типы данных, производя их из стандартных типов
Ссылаться из документа на несколько схем
W3C
eng - The World Wide Web Consortium занимается разработкой web технологий, в том числе на сайте можно найти спецификации CSS, DOM, (X)HTML, MathML, XLink, XML, XPath, XPointer, XSL, и других интернет технологий;
XML.com
eng - один из наиболее полных и постоянно обновляющихся ресурсов, содержит информацию и носвости XML технологий;
XML.org
eng - XML новости и ресурсы, XML каталог - путеводитель по XML продуктам и ресурсам;
XMLhack
eng - новости о последних разработках в области спецификаций и инструментов XML;
Отправить новый комментарий