Введение в XML

Итак,

(eXtensible Markup Language) – это расширяемый язык разметки.

– это инструмент для структурирования информации

– это инфраструктура для создания Web-базированных информационных систем, т.е. набор программных компонент для создания, обработки структурированных документов и их передачи, посредством, например, протокола HTTP.

– это основа для построения современных веб-сервисов.

Основные потребители

1. SOA (service-oriented architecture)
2.

SOA использует для стандартизации структуры передаваемой информации между сервисами.

использует как средство интеграции онтологий и т.п. в существующую инфраструктуру Web.

Развитием управляет консорциум WWW (W3C).

Например, список компьютеров в можно представить так:

<productList>
<computer model="S3331" price="5000">
<hdd capacity="400">Hitachi</hdd>
<processor>P4</processor>
<motherboard> 865GPE </motherboard>
</computer>
<computer model="S3234" price="4000">
<hdd capacity="120">WD</hdd>
<processor>P4</processor>
<motherboard> 865GPE </motherboard>
</computer>
</productList>

Данные в размещаются внутри тегов. Пара “открывающий - закрывающий тег” соответствует элементу данных.

Элементом называется часть документа , разграниченная открывающим тегом, таким как <my_element>, и закрывающим тегом, таким как </my_element>.

Документ состоит из одного элемента верхнего уровня, называемым корневым элементом и наборов, вложенных в него, элементов и символьных данных.

Символьные данные - это текст внутри элемента.

Атрибутом является свойство элемента, которое предоставляет дополнительную информацию об элементе или о моделируемой сущности элемента.

Имена конструкций (атрибутов, элементов и т.п), применяемые для описания сущностей предметной области должны иметь уникальные имена. В случае если имена должны быть уникальными не только внутри документа , но и вне его, необходимо использовать пространства имен .

Пространства имен – символьная строка, обозначаемая некоторый объект реального мира через URI.

URI (Uniform Resource Identifier) – унифицированный идентификатор ресурса.

В вместо URI в основном используется URL (Uniform Resource Locator).

URL - унифицированный локатор ресурсов, позволяющий
Например, пространство имен http://semanticfuture.net/ с префиксом ns, позволяет создать элемент <ns:computer> __</ns:computer>, который будет использоваться для описания сущности «Компьютер», причем структура моделируем сущности уникальна внутри схемы , принятой в semanticfuture.net.

Применение пространств имен позволяет различать элементы имеющие одинаковые имена.

Так через используемые пространства имен можно отличить элемент <ns:computer> с http://semanticfuture.net и <ns:computer> из http://shcherbak.net.

Для повышения читабельности -данных (и не только для этого!!!) необходимо структурировать информацию по определенным критериям.
Например, можно использовать способы структурирования информации, принятые в ER-моделировании или ООП.

Например, для структурирования можно использовать простое правило -

элементы соответствуют сущностям предметной области, а атрибуты соответствуют характеристикам этих сущностей.

Для организации связи «быть частью» между сущностями можно использовать вложение элементов . Так, если Вы хотите показать, что некоторый элемент является частью другого элемента, то описываете его внутри этого элемента. Например, если Вы хотите показать, что сущность автомобиль состоит из различных компонентов, например, двигателя, колес и т.д., тогда в это можно выразить так:

<car namе="VM"><engine>V6</engine></car>

Но это не единственный вид связи, который может моделироваться в .

поддерживает все возможные виды связей, которые могут моделироваться такими языками, как UML, языками ER-моделирования и т.п.

Но для моделирования таких связей, вероятнее всего, вам придется использовать такие технологии как XLink или XPointer.

Кроме того, при создании документов необходимо не забывать простые правила формирования -документов, а именно,

1. - регистрозависим, т.е.в тегах учитывается регистр символов.
2. Элементы должны быть правильно вложены друг в друга.
3. В должен быть один корневой элемент.
4. Значения атрибутов всегда должны быть заключены в кавычки.

В могут использоваться как одинарные кавычки, так и двойные. Одинарные кавычки в основном применяются в случаях, когда значения атрибута уже содержит двойные кавычки.

Для обработки конструкций применяются синтаксические анализаторы.

Например, msxml от Microsoft.

Что нужно помнить при работе с ?

1. В сохраняются пробелы (в отличие от HTML), т.е. если в текстовые описания добавлять лишние пробелы, то они синтаксическим анализатором не удаляются.
2. В символы перевода строки CR/LF преобразуются в LF.

Для описания данных в используется или схема .

(Document Type Definition) задает правила формирования теговой разметки.

Например, для описания компьютеров можно определить следующее :

<!ELEMENT productList (product)+ >
<!ELEMENT computer (hdd, processor, morherboard) >
<!ELEMENT hdd (#PCDATA) >
<!ELEMENT processor (#PCDATA) >
<!ELEMENT motherboard (#PCDATA) >

Использование знака «+» возле элемента накладывает на элемент ограничение - этот элемент как минимум раз должен быть определен. Могут также применяться, такие знаки, как «*» и «?». Знак «*» означает, что возможно 0, 1 или более элементов, а «?» означает, что элемент необязателен. Отсутствие знаков возле элементов означает обязательность их определения (т.е. элемент обязательно должен быть).

Атрибуты элементов определяются с помощью конструкции <!ATTLIST>.

<!ATTLIST имя_элемента имя_атрибута тип_атрибута значение_по_умолчанию >

В все типы атрибутов основаны на строковом типе данных.

Наиболее распространенные типы атрибута:

CDATA – символьные данные;
ID - уникальный идентификатор;
(value1|value2|) – перечисление возможных значений атрибутов, т.е. возможным значением атрибута будет одно из перечисляемых.

Например, можно определить атрибут model так:

<!ATTLIST computer model CDATA>

к можно подключить так:

<!DOCTYPE productList SYSTEM "products.">

или можно определить конструкции внутри документа, например, так

<!DOCTYPE productList
[
<!ELEMENT productList (product)+ >
<!ELEMENT computer (hdd, processor, morherboard) >
<!ELEMENT hdd (#PCDATA) >
<!ELEMENT processor (#PCDATA) >
<!ELEMENT motherboard (#PCDATA) >
]>

Недостатки :

1. Отсутствие типизации узлов.
2. Отсутствие поддержки пространств имён.

Вместо можно использовать Schema.

Schema поддерживает различные типы данных.

Подключить XMLSchema к документу можно так:

<ProductList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="products.">

</ProductList>

Для визуализации содержимого файла с помощью CSS можно использовать каскадную таблицу стилей CSS. Подключить ее можно следующим образом:

<?-stylesheet type="text/css" href="sheet.css" ?>

Для визуализации содержимого файла с помощью можно использовать . Подключить его можно следующим образом:

<?-stylesheet type="text/" href="sheet." ?>

Для обработки -конструкций применяются такие технологии как DOM, SAX, .

Некоторые определения:

-документ, имеющий правильный синтаксис, называется правильно сформированным -документом.

-документ, проверенный и соответствующий ( SCHEMA) называется допустимым («валидным») -документом.

Более подробно об можно почитать здесь Школы XML

Один комментарий к этой записи

  1. akdir , дата публикации июля 9, 2010 04:31

    отличная статья) но есть 2 идеи, точнее дополнения от меня)
    Когда знакомился с XML были проблемы –
    1 – – не всегда XML видел href=»sheet.css» рядышком, и часто приходилось писать полный путь href=»http://site.ru/sheet.css»
    2 – Редактор с хорошей визуальной разметкой) – Мой выбор – notepad++ – очень удобен и функционален)
    P.S. Может кому и мои советы помогут) Еще раз спс автору за статью)

Оставить комментарий




XHTML: Вы можете использовать теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Please copy the string kbBinM to the field below: