Разное

Xml язык для начинающих: Учебник XML для начинающих

XML атрибуты

Как и в HTML, XML элементы могут иметь атрибуты. При этом значение атрибутов в XML и правило их создания во многом похожи на атрибуты в HTML.

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

XML атрибуты

В HTML атрибуты предоставляют некоторую дополнительную информацию об элементе:

<img src='computer.gif'>
<a href='demo.asp'>

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

<file type="gif">computer.gif</file>

XML атрибуты должны заключаться в кавычки

Значение атрибута всегда должно заключаться в кавычки. Это могут быть либо двойные, либо одинарные кавычки. Например, пол персонажа можно записать так:

<person sex="female">

либо так:

<person sex='female'>

Если значение атрибута само содержит двойные кавычки, то можно использовать одинарные кавычки. Например:

<gangster name='George "Shotgun" Ziegler'>

либо использовать символы сущностей:

<gangster name="George &quot;Shotgun&quot; Ziegler">

XML элементы или атрибуты

Посмотрите на следующие примеры:

Пример №1

<person sex="female">
   <firstname>Anna</firstname>
   <lastname>Smith</lastname>
</person>

Пример №2

<person>
   <sex>female</sex>
   <firstname>Anna</firstname>
   <lastname>Smith</lastname>
</person>

В первом примере пол указан в атрибуте. Во втором, пол записан, как элемент. Оба примера предоставляют одну и ту же информацию.

Нет правил, регулирующих то, когда использовать атрибуты, а когда элементы. Атрибуты широко используются в HTML. В XML, на мой взгляд, лучше их избегать, и вместо них использовать элементы.

Что лучше?

Следующие три XML документа содержат совершенно одинаковую информацию:

Дата записана, как атрибут:

<note date="10/01/2008">
   <to>Tove</to>
   <from>Jani</from>
   <heading>Напоминание</heading>
   <body>Не забудь обо мне в эти выходные!</body>
</note>

Дата записана, как элемент:

<note>
   <date>10/01/2008</date>
   <to>Tove</to>
   <from>Jani</from>
   <heading>Напоминание</heading>
   <body>Не забудь обо мне в эти выходные!</body>
</note>

Дата записана, как расширенный элемент (На мой взгляд наилучший вариант):

<note>
   <date>
      <day>10</day>
      <month>01</month>
      <year>2008</year>
   </date>
   <to>Tove</to>
   <from>Jani</from>
   <heading>Напоминание</heading>
   <body>Не забудь обо мне в эти выходные!</body>
</note>

Избегать XML атрибуты?

При использовании атрибутов возникают некоторые проблемы:

  • атрибуты не могут содержать множественные значения (элементы могут)
  • атрибуты не могут содержать древовидные структуры (элементы могут)
  • атрибуты сложно расширять (для будущих изменений)

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

Никогда не используйте следующие конструкции:

<note
   day="10" month="01" year="2008"
   to="Tove" from="Jani" heading="Напоминание"
   body="Не забудь обо мне в эти выходные!">
</note>

XML атрибуты для метаданных

Иногда элементам присваивают идентификаторы. Эти идентификаторы используются для идентификации XML элементов в точности также, как идентификационные атрибуты в HTML. Следующий пример демонстрирует это:

<messages>
   <note>
      <to>Tove</to>
      <from>Jani</from>
      <heading>Напоминание</heading>
      <body>Не забудь обо мне в эти выходные!</body>
   </note>
   <note>
      <to>Jani</to>
      <from>Tove</from>
      <heading>Re: Напоминание</heading>
      <body>Не забуду</body>
   </note>
</messages>

В приведенном примере атрибут id используется для идентификации разных заметок. Эта информация не является частью самой заметки.

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

Дерево XML

XML документы формируют древовидную структуру, которая начинается с «корневого» элемента и разветвляется на «дочерние» элементы.

Пример XML документа

XML документы используют простой и самоописательный синтаксис:

<?xml version="1.0" encoding="UTF-8"?>
<note>
   <to>Tove</to>
   <from>Jani</from>
   <heading>Напоминание</heading>
   <body>Не забудь обо мне в эти выходные!</body>
</note>

Первая строка — это XML декларация. Здесь определяется версия XML (1.0).

На следующей строке описывается корневой элемент документа: <note>

Следующие 4 строки описывают дочерние элементы корневого элемента: <to>Tove</to>, <from>Jani</from>, <heading>Напоминание</heading>, <body>Не забудь обо мне в эти выходные!</body>.

И, наконец, последняя строка определяет конец корневого элемента: </note>.

Исходя из этого примера можно смело предположить, что в этом XML документе содержится заметка к Тову от Джени. И все вполне понятно.

XML документы формируют древовидную структуру

XML документ должен содержать корневой элемент. Этот элемент является «родительским» для всех других элементов.

Все элементы в XML документе формируют иерархическое дерево. Это дерево начинается с корневого элемента и разветвляется на более низкие уровни элементов.

Все элементы могут иметь подэлементы (дочерние элементы):

<корневой>
   <потомок>
      <подпотомок>.....</подпотомок>
   </потомок>
</корневой>

Для описания взаимоотношений между элементами обычно используют термины «родитель», «потомок» и «брат»/»сестра». У «родительского» элемента есть «потомки» или «дочерние» элементы. «Потомки» на одном и том же уровне называются «братья» или «сестры».

У всех элементов могут быть текстовый контент и атрибуты (также как в HTML).

Пример

Приведенное изображение представляет одну книгу из следующего XML документа:

<bookstore>
   <book category="COOKING">
      <title lang="en">Everyday Italian</title>
      <author>Giada De Laurentiis</author>
      <year>2005</year>
      <price>30.00</price>
   </book>
   <book category="CHILDREN">
      <title lang="en">Harry Potter</title>
      <author>J K. Rowling</author>
      <year>2005</year>
      <price>29.99</price>
   </book>
   <book category="WEB">
      <title lang="en">Learning XML</title>
      <author>Erik T. Ray</author>
      <year>2003</year>
      <price>39.95</price>
   </book>
</bookstore>

Корневой элемент в этом примере: <bookstore>. Все элементы <book> определяются внутри элемента <bookstore>.

У каждого элемента <book>

есть 4 потомка: <title>, <author>, <year>, <price>.

Пример схемы XML

❮ Предыдущая Далее ❯


В этой главе показано, как написать XML-схему. Вы также узнаете, что схема может быть записана по-разному.


XML-документ

Давайте посмотрим на этот XML-документ под названием «shiporder.xml»:

xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance»
xsi :noNamespaceSchemaLocation=»shiporder.xsd»>
Джон Смит
<доставка>
Ола Нордманн
<адрес>Ланггт 23
4000 Ставангер
Норвегия

<элемент>
Империя бурлеска
Специальное издание
<количество>1

<цена>10,90

<элемент>
Спрячь свое сердце
<количество>1
9,90

Приведенный выше XML-документ состоит из корневого элемента «shiporder», который содержит обязательный атрибут под названием «orderid». Элемент «shiporder» содержит три разные дочерние элементы: «orderperson», «shipto» и «item». Элемент «предмет» появляется дважды и содержит «название», необязательный элемент «примечание», «количество» и «цена». элемент.

Строка выше: xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance» сообщает синтаксическому анализатору XML, что этот документ должен быть проверен на соответствие схеме. Строка: xsi:noNamespaceSchemaLocation=»shiporder.xsd» указывает, ГДЕ находится схема (здесь она находится в той же папке, что и «shiporder.xml»).



Создание XML-схемы

Теперь мы хотим создать схему для XML-документа выше.

Начнем с открытия нового файла, который мы назовем «shiporder.xsd». Чтобы создать схему, мы могли бы просто следовать структуру в XML-документе и определяем каждый элемент по мере его нахождения. Мы начнем со стандартного объявления XML, за которым следует элемент xs:schema, определяющий схему:


w3.org/2001/XMLSchema»>

< /xs:schema>

В приведенной выше схеме мы используем стандартное пространство имен (xs) и URI с этим пространством имен связано определение языка схемы, которое имеет стандартное значение http://www.w3.org/2001/XMLSchema.

Далее мы должны определить элемент «shiporder». Этот элемент имеет атрибут и содержит другие элементы, поэтому мы рассматриваем его как сложный тип. Дочерние элементы элемента «shiporder» окружены Элемент xs:sequence, определяющий упорядоченную последовательность подэлементов:







Затем мы должны определить элемент «orderperson» как простой тип (поскольку он не содержат никаких атрибутов или других элементов). Тип (xs:string) имеет префикс с префиксом пространства имен, связанным с XML-схемой, который указывает предопределенный тип данных схемы:

Далее мы должны определить два элемента сложного типа: «shipto» и «элемент». Начнем с определения элемента «shipto»:










С помощью схем мы можем определить количество возможных вхождений элемента с атрибутами maxOccurs и minOccurs. maxOccurs указывает максимальное количество вхождений элемента, а minOccurs указывает минимальное количество вхождений для элемента. Значение по умолчанию для maxOccurs и minOccurs равно 1!

Теперь мы можем определить элемент «item». Этот элемент может появляться несколько раз внутри элемента «shiporder». Это определяется установкой maxOccurs атрибут элемента «item» на «unbounded», что означает, что может быть как много вхождений элемента «item» по желанию автора. Обратите внимание, что Элемент «примечание» является необязательным. Мы указали это, установив minOccurs атрибут на ноль:










Теперь мы можем объявить атрибут элемента «shiporder». С это обязательный атрибут, который мы указываем use=»required».

Примечание: Объявления атрибутов всегда должны быть последними:

Вот полный список файла схемы называется «shiporder.xsd»:


w3.org/2001/XMLSchema»>





























Разделение схемы

Предыдущий метод проектирования очень прост, но его трудно читать и поддерживать, когда документы сложные.

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

Вот новый дизайн файла схемы («shiporder.xsd»):









































Использование именованных типов

Третий метод проектирования определяет классы или типы, что позволяет повторно использовать элемент определения. Это делается путем именования элементов simpleTypes и complexTypes, а затем указать на них через атрибут type элемента.

Вот третий вариант файла схемы («shiporder.xsd»):

































Элемент ограничения указывает, что тип данных является производным от W3C XML Тип данных пространства имен схемы. Итак, следующий фрагмент означает, что значение элемент или атрибут должен быть строковым значением:

Элемент ограничения чаще используется для применения ограничений к элементам. Посмотрите на следующие строки из приведенной выше схемы:





Указывает, что значение элемента или атрибута должно быть строкой, состоящей ровно из шести символов подряд, и эти символы должны быть число от 0 до 9.

❮ Предыдущий Следующий ❯


Синтаксис XML

❮ Предыдущий Далее ❯


Правила синтаксиса XML очень просты и логичны. Правила просты в освоении и просты в использовании.


XML-документы должны иметь корневой элемент

XML-документы должны содержать один корневой элемент , который является родитель всех остальных элементов:


 
    . ….
 

В этом примере является корневым элементом:

» ?>

  Тове
  Яни
  Напоминание
 Не забывайте меня в эти выходные!


Пролог XML

Эта строка называется прологом XML :

» ?>

Пролог XML является необязательным. Если он существует, он должен стоять первым в документе.

XML-документы могут содержать международные символы, например норвежские øæå или Французский êèé.

Во избежание ошибок следует указать используемую кодировку или сохранить XML-файлы как UTF-8.

UTF-8 — кодировка символов по умолчанию для XML-документов.

Кодировку символов можно изучить в нашем Учебник по набору символов.

UTF-8 также является кодировкой по умолчанию для HTML5, CSS, JavaScript, PHP и SQL.



Все элементы XML должны иметь закрывающий тег

В XML запрещено опускать закрывающий тег. Все элементы должны иметь закрывающий тег:

Это абзац.



Примечание: Пролог XML не имеет закрывающего тега! Это не ошибка. Пролог не является частью документа XML.


Теги XML чувствительны к регистру

Теги XML чувствительны к регистру. Тег отличается от тега <буква>.

Открывающий и закрывающий теги должны быть написаны с одинаковым регистром:

Это правильно

«Открывающий и закрывающий теги» часто называют «Открывающими и закрывающими тегами». Использовать Что вы предпочитаете. Это точно то же самое.


Элементы XML должны быть правильно вложены

В HTML вы можете увидеть неправильно вложенные элементы:

Этот текст выделен жирным шрифтом и курсивом

В XML все элементы должны быть правильно вложены друг в друга:

Этот текст полужирный и курсив

В приведенном выше примере «Правильно вложенный» просто означает, что, поскольку элемент открывается внутри элемента , он должен быть закрыт внутри элемента элемент.


Значения атрибутов XML всегда должны заключаться в кавычки

Элементы XML могут иметь атрибуты в парах имя/значение, как и в HTML.

В XML значения атрибутов всегда должны заключаться в кавычки:


  Tove
  Jani


Ссылки на объекты

Некоторые символы имеют особое значение в XML.

Если вы поместите такой символ, как «<», внутри элемента XML, он создаст ошибка, потому что синтаксический анализатор интерпретирует ее как начало нового элемента.

Это вызовет ошибку XML:

salary < 1000

Чтобы избежать этой ошибки, замените символ «<" ссылкой на сущность :

salary < 1000

В XML имеется 5 предопределенных ссылок на объекты:

< < меньше
> > больше
& и амперсанд
апостроф
" » кавычки

Только < и & строго запрещены в XML, но рекомендуется заменять > с > также.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *