А пока давайте воспользуемся «Блокнотом» для создания нашего XML-файла. Давайте сначала посмотрим на XML-файл:
Пример 1
〈?xml version="1.0"coding="gb2312" ?〉
〈Ссылки〉
<книги>
〈Имя〉Введение в XML 〈/Имя〉
〈Автор〉Чжан Сан〈/Автор〉
〈Единица валюты цены="RMB"〉20,00〈/цена〉
</книги>
<книги>
<name>Синтаксис XML </name>
〈!--Эта книга скоро будет опубликована--〉
〈Автор〉Ли Си〈/Автор〉
〈Ценовая валютная единица="RMB"〉18,00〈/цена〉
</книги>
〈/Справочные материалы〉
Это типичный XML-файл. После редактирования он сохраняется как файл с суффиксом .xml. Мы можем разделить этот файл на две основные части: преамбулу файла (Пролог) и тело файла. Первая строка в этом файле — это преамбула файла. Эта строка должна быть объявлена в XML-файле, и она также должна располагаться в первой строке XML-файла. В основном она сообщает синтаксическому анализатору XML, как работать. Среди них версия — это стандартный номер версии, используемый этим XML-файлом, который является обязательным; кодировка определяет тип символов, используемый в этом XML-файле, который можно опустить. Если вы опустите этот оператор, следующий код символа должен быть кодом символа Юникода. (рекомендуется не пропускать). Поскольку в этом примере мы используем код символа GB2312, оператор кодирования нельзя опустить. В преамбуле файла также есть несколько операторов объявлений, о которых мы расскажем позже.
Остальная часть файла принадлежит телу файла, где хранится информация о содержимом файла XML. Мы видим, что основная часть файла состоит из начального <reference> и конечного управляющего тега </reference>. Это называется «корневым элементом» XML-файла; <book> является «корневым элементом». непосредственно под корневым элементом «Подэлемент» в разделе «Книга» находятся такие подэлементы, как «Имя», «Автор» и «Цена». Денежная единица — это «атрибут» в элементе <price>, а «RMB» — это «значение атрибута».
〈!--Эта книга скоро будет опубликована--〉 — это комментарий, как и HTML. В XML-файле часть комментария помещается между тегами «〈!--» и «--〉».
Как видите, XML-файл довольно прост. Как и HTML, файлы XML также состоят из ряда тегов. Однако теги в файлах XML являются нашими собственными тегами и имеют четкое значение. Мы можем объяснить значение содержимого тегов.
Получив предварительное представление о XML-файлах, давайте подробно поговорим о синтаксисе XML-файлов. Прежде чем говорить о грамматике, мы должны понять важную концепцию — анализ XML.
1. Анализатор XML.
Основная функция анализатора — проверить наличие структурных ошибок в файле XML, удалить теги в файле XML и считывать правильное содержимое для обработки следующей прикладной программой. XML — это язык разметки, используемый для структурирования информации о файлах. В спецификации XML есть подробные правила разметки структуры файлов. Синтаксический анализатор — это программное обеспечение, написанное в соответствии с этими правилами (в основном написанное на Java). Так же, как и в HTML, в браузере должен быть парсер HTML, чтобы браузер мог «читать» различные веб-страницы, состоящие из HTML-тегов, и отображать их перед нами. Если есть теги, которые анализатор HTML браузера не может прочитать, нам будет возвращено сообщение об ошибке.
Поскольку текущие HTML-теги на самом деле довольно запутаны и в них много нестандартных тегов (некоторые веб-страницы могут нормально отображаться в IE, но не в Netscape Navigator), разработчики XML строго оговорили синтаксис XML из С самого начала и структуры XML-файлы, которые мы пишем, должны соответствовать этим правилам, иначе анализатор XML безжалостно выдаст вам сообщения об ошибках.
Существует два типа XML-файлов: один — XML-файл правильного формата, а другой — XML-файл проверки.
Если файл XML удовлетворяет определенным соответствующим правилам спецификации XML и не использует DTD (определение формата документа — подробности позже), документ можно назвать хорошо сформированным. И если XML-файл имеет правильный формат, DTD используется правильно и синтаксис в DTD правильный, то файл находится на проверке. В соответствии с двумя XML-файлами существует два синтаксических анализатора XML: один — анализатор правильного формата, а другой — проверяющий анализатор. IE 5 включает в себя анализатор проверки, который также можно использовать для анализа XML-файлов правильного формата.
Проверьте, соответствует ли он условиям Well-Formed. Мы можем открыть первый XML-файл, который мы только что отредактировали, в браузере IE 5 или выше.
Вы можете спросить, почему отображение в браузере такое же, как у моего исходного файла? Это верно, поскольку для XML-файлов нам известно только содержимое, а форма его отображения дополняется CSS или XSL. Здесь мы не определили файл CSS или XSL для этого XML-файла, поэтому он отображается в исходной форме. Фактически для электронного обмена данными нужен только XML-файл. Если мы хотим отобразить его в той или иной форме, нам необходимо отредактировать файл CSS или XSL (этот вопрос будет рассмотрен позже).
2. XML-файл правильного формата
Мы знаем, что XML должен быть правильно сформированным, чтобы его правильно анализировал анализатор и отображал в браузере. Так что же такое XML-файл правильного формата? В основном существуют следующие рекомендации, которые необходимо соблюдать при создании XML-файлов.
Во-первых, в первой строке файла XML должно быть указано, что файл является файлом XML, и указана используемая версия спецификации XML. Перед файлом не может быть других элементов или комментариев.
Во-вторых, в XML-файле может быть только один корневой элемент. В нашем первом примере 〈References〉... 〈/References〉 является корневым элементом этого XML-файла.
В-третьих, теги в XML-файле должны быть правильно закрыты, то есть управляющие теги в XML-файле должны иметь соответствующий закрывающий тег. Например: тег <name> должен иметь соответствующий закрывающий тег </name>. В отличие от HTML, закрывающий тег некоторых тегов не является обязательным. Если вы встретите в XML-файле автономный тег единицы, который похож на <img src=.....> в HTML без закрывающего тега, XML называет его «пустым элементом», и вы должны использовать метод write. это: 〈пустое имя элемента/〉. Если элемент содержит атрибуты, метод записи: 〈пустое имя элемента имя атрибута = «значение атрибута»/〉.
В-четвертых, отметки не должны пересекать друг друга. В предыдущих файлах HTML вы могли написать так:
〈B〉〈H〉XXXXXXX〈/B〉〈/H〉,
между тегами 〈B〉 и 〈H〉 есть перекрывающиеся области, но в XML это строго в шахматном порядке. написание таких знаков запрещено. Знаки должны располагаться в регулярном порядке.
В-пятых, значения атрибутов должны быть заключены в знаки «». Такие как «1.0», «gb2312», «ПКМ» в первом примере. Все они заключены в « » и их нельзя пропустить.
В-шестых, английские управляющие теги, инструкции и имена атрибутов должны быть чувствительны к регистру. В отличие от HTML, в HTML такие теги, как <B> и <b>, имеют одинаковое значение, тогда как в XML такие теги, как <name>, <NAME> или <Name>, различны.
В-седьмых, мы знаем, что в HTML-файлах, если мы хотим, чтобы браузер отображал введенные нами данные без изменений, мы можем поместить эти элементы в 〈pre〉〈/pre〉 или 〈xmp〉〈/xmp〉. Отметьте середину. Это важно для нас при создании обучающих веб-страниц HTML, поскольку исходный код HTML должен отображаться на веб-странице. В XML для реализации такой функции необходимо использовать теги CDATA. Информация в теге CDATA передается приложению синтаксическим анализатором в неизмененном виде, а любые управляющие теги в этом сегменте информации не анализируются. Область CDATA отмечена: «<![CDATA[» в качестве начальной метки и «>>» в качестве конечной метки. Например: В исходном коде в примере 2, за исключением символов «<![CDATA[» и «>>», остальная часть анализатора контента будет передана нижестоящему приложению в целости и сохранности, даже если в также будут перенесены начало и конец области CDATA, символы новой строки и т. д. (обратите внимание, что CDATA — это символ верхнего регистра).
Пример 2
〈![CDATA[flying xml〉〉〉〉〉,:-)
ооо〈〈〈〈〈〈
>〉
В-восьмых, XML обрабатывает пробельные символы иначе, чем HTML. Стандарт HTML предусматривает, что независимо от количества пробелов они будут рассматриваться как один пробел; в то время как в XML предусмотрено, что синтаксический анализатор должен добросовестно передавать все пробелы, кроме тегов, последующим приложениям для обработки. Таким образом, нам иногда приходится отказываться от привычки делать отступы при написании HTML-файлов, поскольку синтаксическому анализатору также приходится обрабатывать отступы. Например:
〈Автор〉Чжан Сан〈/Автор〉
и 〈автор〉
Чжан Сан 〈/Автор〉
отличается для анализатора (последний включает в себя помимо символа Чжан Сан в теге 〈Автор〉〈/Автор〉, он также включает два знака новой строки и символы перед «Чжан Сан «символы отступа текста»). Поэтому после снятия отметки и передачи информации приложению парсер будет иметь разные результаты обработки.
Если мы хотим четко сообщить XML-программе, что пробелы в тегах имеют четкое значение и их не следует случайно удалять (например, в некоторых стихотворениях пробелы имеют определенное значение), мы можем добавить встроенный атрибут XML — xml. - к тегам :space . Например (обратите внимание на имена и значения атрибутов):
〈poetry xml:space="preserver"〉
Родина! Родина!
Моя Родина!
〈/Poetry〉
Кроме того, если в XML-файле используются специальные символы из Таблицы 1, их необходимо заменить соответствующими символами.
Таблица 1.
Символы замены специальных символов && &
<&это;
>>
" "
' '
Подведем итог: XML-файл, отвечающий вышеуказанным требованиям, является XML-файлом правильного формата. Это самое основное требование для написания XML-файлов. Вы можете видеть, что синтаксис файлов XML намного строже, чем синтаксис HTML. Из-за таких строгих правил разработчикам программного обеспечения намного проще писать анализаторы XML. В отличие от написания анализаторов для языка HTML, им приходится усердно работать, чтобы адаптироваться к различным методам написания веб-страниц и улучшить адаптивность своих браузеров. На самом деле, для нас, новичков, это тоже хорошо. Просто делайте то, что хотите, и вам не придется беспокоиться о том, как писать различные HTML-коды, как раньше.
Мы видим, что в XML-файлах используется большинство пользовательских тегов. Но подумайте об этом: если две компании A и B в одной отрасли хотят обмениваться данными друг с другом с помощью файлов XML, компания A использует тег <price> для представления информации о цене своих продуктов, а компания B может использовать тег <selling. цена> для представления информации о цене. Если приложение XML считывает информацию из соответствующих XML-файлов и знает только, что тег <price> представляет информацию о ценах, то информация о ценах компании B не может быть прочитана, и произойдет ошибка. Очевидно, что для сущностей, которые хотят использовать XML-файлы для обмена информацией, между ними должно быть соглашение – то есть, какие теги можно использовать для записи XML-файлов, какие подэлементы можно включать в родительский элемент, порядок в как отображается каждый элемент, а также как определить свойства и т. д. Таким образом, они могут обеспечить бесперебойную связь при обмене данными в формате XML. Это соглашение называется DTD (Определение типа документа, определение формата документа). Вы можете думать о DTD как о шаблоне для написания XML-файлов. Для обмена XML-данными между одной и той же отраслью будет гораздо удобнее иметь фиксированный DTD. Например, если все веб-страницы XML крупных электронных торговых центров в Интернете следуют одному и тому же DTD, то мы можем легко написать приложение на основе этого DTD, чтобы автоматически фиксировать то, что нас интересует в Интернете. Фактически, уже существует несколько четко определенных DTD, таких как MathML, SMIL и т. д., упомянутых ранее.
Если XML-файл имеет правильный формат и правильно создан на основе DTD, тогда XML-файл называется: Проверка XML-файла. Соответствующий парсер называется Validating Parser.