XML-краткая шпаргалка
Общие положения
XML (Extensible Markup Language – расширяемый язык разметки) является инструментарием для хранения данных, конфигурируемым транспортным средством для информации любого рода, развивающимся и открытым стандартом.
XML предоставляет несколько способов проверки качества документа путем применения синтаксических правил, внутренней проверки ссылок, сравнения с моделями документов и типов данных.
Теги - основа элементов XML
Теги рекомендуется писать малыми латинскими буквами (регистрочувствительно), теги могут содержать атрибуты для уточнения их обработки:
а) <Tag.name_my-2 attr1="value" attr2="none"/> тег без значения, с двумя атрибутами (пустой) заканчивается /, в именах допустимы ._- , но не символы - разделители (кавычки,:)
б) <tag attr1="value">Значение</tag> тег с атрибутом и значением
Структура документа (строго древовидная, один корневой тег):
1. Пролог документа
1.1. Объявление (по умолчанию разнится UTF-8 и ANSII. Все атрибуты, кроме версии, опциональны. Указывает процессору, какая версия спецификации и какая кодировка).
XML <?xml version='1.0' encoding='US-ASCII' standalone='yes'?>
если указать standalone="yes", то все необходимое для форматирования документа находится во внутреннем подмножестве. По умолчанию атрибут опускается.
1.2. Объявление типа документа -
<!DOCTYPE time-o-gram
PUBLIC "-//LordsOfTime//DTD TimeOGram 1.8//EN"
[
<!ENTITY sj "Sarah Jane">
<!ENTITY me "Doctor Who">
]>
2. Элементы документа
<team persons="sue joe jane">
<person>sue</person>
<person>joe</person>
<person>jane</person>
</team>
Зарезервированные теги:
xml:lang="en" означает, что содержимое - текст на английском языке.
xml:space - должны ли пробельные символы сохраняться в содержимом элемента. Если ему присвоено значение preserve (при пропуске, по умолчанию) - учитывать, default - процессор может свободно обращаться с пробельными символами
xml:link - XLink, является элементом ссылки.
xml:attribute -
3. Пространства имен name spaces xmlns (позволяют избежать конфликта одних и тех же тегов), отделаются перед тегом двоеточием, имя в формате URL на самом деле просто идентификатор, путь никто не проверяет. Назначается в атрибуте xmlns (если при теге нет :, то назначается по умолчанию) :
<?xml version="1.0"?>
<journal xmlns="http://www.psycholabs.org/mynamespace/">
<experiment>
<date>March 4, 2001</date>
<subject>Effects of Caffeine on Psychokinetic Ability</subject>
<abstract>The experiment consists of a subject, a can of
caffeinated soda, and a goldfish tank. The ability to make a
goldfish turn in a circle through the power of a human's mental
control is given by the well-known equation:
<eq:formula xmlns:eq="http://www.mathstuff.org/">
<eq:variable>P</eq:variable> =
<eq:variable>m</eq:variable>
<eq:variable>M</eq:variable> /
<eq:variable>d</eq:variable>
</eq:formula>
where P is the probability it will turn in a given time interval,
m is the mental acuity of the fish, M is the mental acuity
of the subject, and d is the distance between
fish and subject.</myns:abstract>
</experiment>
</journal>
4. Пространства имен могут стать источником головной боли, если используются вместе с DTD, так как DTD yне различает пространств имен.
5. Замены в тексте для предопределенных символов:
< → <
& → &
> → >
“ → "
‘ → '
6. Контроль - корректный (Well-Formed) означает, что соблюден синтаксис и структура, но не проверяется содержание тегов по схемам.
7. Сущности - подстановка значений во всем документе, определяются как &имя;, перед применением должны быть описаны выше:
Ниже приведен пример документа, в котором объявлены три общие
сущности, причем ссылки на них есть в тексте (также объявлен внешний файл DTD):
<?xml version="1.0"?>
<!DOCTYPE message SYSTEM "/xmlstuff/dtds/message.dtd"
[
<!ENTITY client "Mr. Rufus Xavier Sasperilla">
<!ENTITY agent "Ms. Sally Tashuns">
<!ENTITY phone "<number>617-55-299</number>">
]>
<message>
<opening>Dear &client;</opening>
<body>We have an exciting opportunity for you! A set of
ocean-front cliff dwellings in Mexico have been
renovated as time-share vacation homes. They're going fast! To
reserve a place for your holiday, call &agent; at ☎.
Hurry, &client;. Time is running out!</body>
</message>
DTD проверки
8. DTD описание элементов, формат: <!ELEMENT имя (вложенные элементы или тип)>
<!ELEMENT article (title,author+,text)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT text (abstract,section*,literature?)>
<!ELEMENT abstract (#PCDATA)>
<!ELEMENT section (#PCDATA|index)+>
Допустимые значения (возможны комбинации типа <!ELEMENT f ((a|b)*,c+,(d|e))*>):
(#PCDATA) разбираемые текстовые данные
(child) один дочерний элемент
(c1,…,cn) несколько дочерних элементов
(c1|…|cn) один из перечисленных элементов
Доп.символы справа от элемента с:
c строго один такой элемент
c+ один или более
c* нуль или более
c? нуль или один
<!ELEMENT image EMPTY> пустой
<!ELEMENT thesis ANY> любой
9. DTD описания атрибутов элементов, формат
<!ATTLIST элемент атрибут1 тип #модификатор атрибут2 тип #модификатор> Пример:
<!ATTLIST section number CDATA #REQUIRED
title CDATA #REQUIRED>
Модификаторы:
• #REQUIRED обязательный
• #IMPLIED опциональный
• #FIXED default всегда имеет по умолчанию значение default
10. DTD-типы атрибутов
CDATA The value is character data
(eval|eval|..)The value must be an enumerated value
ID The value is an unique id
IDREF The value is the id of another element
IDREFS The value is a list of other ids
NMTOKEN The value is a valid XML name
NMTOKENS The value is a list of valid XML names
ENTITY The value is an entity
ENTITIES The value is a list of entities
NOTATION The value is a name of a notation
xml: The value is predefined
Пример построения ссылок через ID-IDREF
XSD-схемы
Altova XMLSpy - редактор для создания и редактирования XML/XSD в текстовом и графическом виде, валидации схем и файлов.
- Схема представляет собой XML, описанный согласно определенным правилам и определяющий валидность XML документов по составу, структуре, типам данных.
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v5 beta 4 U (http://www.xmlspy.com) by Robert Gillis (Altova, Inc.) -->
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="main">
<xs:annotation>
<xs:documentation>Comment describing your root element</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="dictionaries"/>
<xs:element ref="idref"/>
<xs:element name="pagetitle" minOccurs="0" type="xs:string"/>
<xs:element ref="content"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="sitedata"/>
<xs:element name="navigation">
<xs:complexType>
<xs:sequence>
<xs:element name="base_url" type="xs:string"/>
<xs:element minOccurs="0" ref="menu"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>