Опубликован: 07.11.2006 | Уровень: специалист | Доступ: свободно
Лекция 18:

XML

Грамотное написание XML-файла

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

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

<?xml version='1.0' ?>
<!-- members of The Beatles -->
<Beatles>
  <member>Lennon</member>
  <member>Ringo</member>
  <member>McCartney</member>
  <member>Harrison</member> 
</Beatles>

Следующий пример составлен некорректно, так как теги <member> и </member> должны содержаться внутри родительского узла.

<?xml version='l.0' ?>
<!-- members of The Beatles -->
<member>Lennon</member>
<member>Ringo</member>
<member>McCartney</member>
<member>Harrison</member>

Сообщение об ошибке

Если вы попытаетесь загрузить в веб-браузере файл XML, который составлен некорректно, вы получите сообщение о том, что XML не может быть отображен, а также будет указана причина этому. Например, если бы мы попытались открыть приведенный выше некорректный XML-код в веб-браузере, то получили бы следующий результат.


Вы получите сообщение о том, что страница XML не может быть отображена, а также указание причины, вызвавшей ошибку. Flash не может считывать XML-код, составленный некорректно, поэтому будьте внимательны при создании XML-файла.

Вложенные элементы

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

<b>
  полужирный (bold) текст
  <i>
    полужирный курсивный (bold italic) текст 
</b>
    курсивный (italic) текст 
    </i>

Однако, чтобы воспроизвести этот код в XML, нужно переписать его следующим образом.

<b>
  полужирный (bold) текст
  <i>
    полужирный курсивный (bold italic) текст 
    </i>
</b>
<i>
  курсивный (italic) текст 
</i>

Другим случаем, в котором HTML часто не проходит проверку на корректность в XML, является ситуация, где открытые теги не закрываются.

Это предложение<br> не пройдет проверку<br> на корректность для XML<br>

В XML теги <br> означают начало узла, содержащего другие узлы. Тег пустого узла должен содержать слеш перед конечной скобкой: <br/>. Так, пример, приведенный ниже, является корректным.

Это<br>коректное утверждение</br>

Это различие сильно облегчает распознавание документа программой-считывателем. Последняя может присваивать каждый найденный "бездетный" узел и текстовый узел текущему узлу. Когда программа находит начальный тег для узла с дочерними узлами, она начинает присваивать дочерние узлы этому узлу. Она присваивает каждый найденный узел узлу с дочерними узлами до тех пор, пока не найдет конечный тег этого узла.

Отступы

Вы могли обратить внимание на то, что большинство узлов располагается в их собственных строках, и когда появляются вложенные узлы, делается отступ. Отступы обычно используются для повышения удобочитаемости файла, однако никак не влияют на его функционирование. Но, строго говоря, это текстовый узел, и часто оказывается полезным его игнорирование. Считыватель Flash предоставляет тег ignoreWhite, который при установке на значение true, вызывает игнорирование любых дополнительных пробелов и переносов строк.

Имена

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

<thisTagIsFine> <_this_one_is_2> <2Many re@$ons why this one fails/>
<xml wouldn't underst@nd th$s either>

XML также чувствителен к регистру букв. Если вы откроете тег с именем <Tag>, он не будет закрыт тегом </tag> или </TAG>, так как это совершенно другие имена элементов XML. Это означает, что вложенные элементы построены неправильно.

Как видно, правил совсем немного. Надеемся, вы получили о них должное представление и сможете следовать им в процессе работы.

Игорь Хан
Игорь Хан
След не остается
Александр Коргапольцев
Александр Коргапольцев
Вопрос по содержанию лекции №2, курс Flash MX Studio
Леонид Мюлюс
Леонид Мюлюс
Россия, Артем