Основы XML

Добавление комментариев, инструкций по обработке и разделов CDATA

Показывать лекцию целиком

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

Одним из принципов XML является создание предельно ясных и простых для понимания документов. Помещенные в нужном месте исчерпывающие примечания могут оказать существенную помощь при восприятии XML-документа, подобно тому, как комментарии заметно облегчают чтение исходного кода программы на языке С или BASIC.

Примечание. В Microsoft Internet Explorer 5 XML-процессор не анализирует и не обрабатывает текст комментариев в XML-разметке. Тем не менее, он делает тексты комментариев доступными для написанного внутри HTML-страницы кода сценария. В лекции 9 вы узнаете, как применять сценарии для доступа к тексту комментария, а также к другим компонентам XML-документа. Internet Explorer 5 отображает все комментарии в XML-документе, если вы открыли документ в браузере, и если документ не имеет соответствующей таблицы стилей.

Форма записи комментариев

Комментарий начинается с символов <!-- и заканчивается символами -->. Между этими двумя ограничителями вы можете поместить любые символы, за исключением двойного тире (--). Вы даже можете вставлять внутрь комментария символ левой угловой скобки (<) и знак амперсенда (). Вот пример правильно записанного комментария:

<!-- Здесь вы можете поместить любой текст, за исключением двойного тире. 
Символы < и  также допустимы! -->

В каком месте вы можете поместить комментарий

Вы можете вставить комментарий в любое место в вашем XML-документе, но вне описания разметки, например, поместить их в пролог документа:

<?xml version="1.0" encoding="windows-1251" ?>
<!-- Это комментарий в прологе. -->
<DOCELEMENT>
This is a very simple XML-document.
</DOCELEMENT>

Вы можете поместить их вслед за элементом Документ:

<?xml version="1.0" encoding="windows-1251" ?>
<DOCELEMENT>
This is a very simple XML-document.
</DOCELEMENT>
<!-- Это комментарий, следующий за элементом Документ. -->.

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

<?xml version="1.0" encoding="windows-1251" ?>
<DOCELEMENT>
<!-- Это комментарий, который является частью содержимого корневого 
	  элемента. -->
This is a very simple XML-document.
</DOCELEMENT>

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

<?xml version="1.0" encoding="windows-1251" ?>
<DOCELEMENT <!-- Это НЕПРАВИЛЬНАЯ ЗАПИСЬ комментария! -->  >
This is a very simple XML-document.
</DOCELEMENT>

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

Использование инструкций по обработке

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

Примечание. XML-процессор представляет собой программный модуль, который прочитывает и хранит содержимое XML-документа (см. лекцию 2). Приложение – это отдельный программный модуль, который получает содержимое документа от XML-процессора, а затем обрабатывает и отображает это содержимое. Если вы отображаете XML-документ в Internet Explorer 5, браузер содержит как XML-процессор, так и часть приложения. (Если вы пишете сценарий для обработки и отображения XML-документа, то тем самым самостоятельно создаете часть приложения.)

Форма записи инструкции по обработке

Инструкция по обработке имеет следующую общую форму записи:

<?Кому инструкция ?>

Здесь Кому есть имя приложения, которому адресована инструкция. Допускается любое имя при соблюдении следующих правил:

  • имя должно начинаться с буквы или символа подчеркивания (_), после чего могут следовать или не следовать другие буквы, цифры, точки (.), тире (–) или символы подчеркивания (_);
  • имя xml, в любом сочетании строчных или прописных букв, зарезервировано ( xml строчными буквами используется в объявлении XML-документа, которое представляет собой разновидность инструкции по обработке).
  • Инструкция есть информация, передаваемая приложению. Она может состоять из любой последовательности символов, за исключением пары ?>, зарезервированной для обозначения окончания инструкции по обработке.

    Как вы можете использовать инструкции по обработке

    В зависимости от процессора, который будет прочитывать документ, вы можете использовать различные инструкции по обработке. Если вы используете в качестве XML-процессора Internet Explorer 5, у вас есть две основные возможности применения инструкций по обработке:

  • вы можете применять стандартные, зарезервированные инструкции, чтобы сообщить Internet Explorer 5, как отображать документ с использованием соответствующей таблицы стилей. Например, следующая инструкция по обработке предписывает Internet Explorer 5 использовать CSS-таблицу из файла Inventory01.css:
    <?xml-stylesheet type="text/css" href="Inventory01.css"?>
  • если вы пишете Web-сценарий для управления и отображения XML-документа, вы можете поместить в документ любые не зарезервированные инструкции по обработке, а ваша программа-сценарий будет считывать эти инструкции и выполнять определенные действия. Например, вы можете вставить в документ следующую инструкцию по обработке, сообщающую вашему сценарию уровень детализации при отображении:
    <?MyScript detail="2"?>
  • В лекции 9 вы узнаете, как использовать сценарии для доступа к составляющим XML-документа, включая инструкции по обработке.

    Куда вы можете поместить инструкции по обработке

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

    <?xml version="1.0" encoding="windows-1251" ?>
    <!-- Далее следует инструкция по обработке внутри пролога: -->
    <?xml-stylesheet type="text/css" href="Inventory01.css"?>
    <INVENTORY>
    	<BOOK>
    		<!-- Это инструкция по обработке внутри содержимого элемента: -->
    		<?ScriptA emphasize="yes" ?>
    		<TITLE> The Adventures of Huckleberry Finn</TITLE>
    		<AUTHOR>Mark Twain</AUTHOR>
    		<BINDING>mass market paperback</BINDING>
    		<PAGES>298</PAGES>
    		<PRICE>$5.49</PRICE>
    	</BOOK>
    	<BOOK>
    		<TITLE>Leaves of Grass</TITLE>
    		<AUTHOR>Walt Whitman</AUTHOR>
    		<BINDING>hardcover</BINDING>
    		<PAGES>462</PAGES>
    		<PRICE>$7.75</PRICE>
    	</BOOK>
    </INVENTORY>
    <!-- Это инструкция по обработке после элемента Документ: -->
    <?ScriptA Category="books" Style="formal" ?>

    Вот пример инструкции по обработке, неверно помещенной внутрь элемента разметки:

    <!-- Следующий элемент содержит НЕВЕРНУЮ инструкцию по обработке: -->
    <BOOK <?ScriptA emphasize="yes" ?>  >
    	<TITLE>Leaves of Grass</TITLE>
    		<AUTHOR>Walt Whitman</AUTHOR>
    		<BINDING>hardcover</BINDING>
    		<PAGES>462</PAGES>
    		<PRICE>$7.75</PRICE>
    </BOOK>

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

    Использование разделов CDATA

    Внутри символьных данных в содержимом элемента, нельзя помещать символ левой угловой скобки (<) или знак амперсанда () (см. лекцию 3). Одним из способов преодолеть это ограничение является использование ссылки на символ ( #60; или #38; ), либо на предопределенный общий примитив ( lt; или amp; ) (см. лекцию 6). Однако в том случае, если вам требуется многократно вставлять символы < или , использование ссылок неудобно и затрудняет восприятие данных. В этом случае проще поместить текст, содержащий такие символы, в раздел CDATA.

    Форма записи раздела CDATA

    Раздел CDATA начинается с символов <![CDATA[ и заканчивается символами ]]>. Между этими двумя ограничителями вы можете поместить любые символы (включая < или ), за исключением ]]> (что будет интерпретировано как конец раздела CDATA ). Все символы внутри раздела CDATA трактуются как литеральная часть символьных данных элемента, а не XML-разметка.

    Ниже приведен пример правильно записанного раздела CDATA:

    <![CDATA[
    Здесь вы можете разместить любые символы, 
    за исключением двух правых квадратных скобок 
    с последующим знаком "больше".
    ]]>

    Примечание. Ключевое слово CDATA (как и другие ключевые слова XML) должно быть набрано прописными буквами.

    Если вы хотите включить в состав имеющихся символьных данных блок исходного кода или разметку, которые будут отображаться браузером, то можете воспользоваться разделом CDATA с целью предотвратить интерпретацию синтаксическим анализатором символов < или как XML-разметку. Например:

    <A-SECTION>
    Вот пример очень простой HTML-страницы:
    <![CDATA[
    <HTML>
    <HEAD>
    <TITLE>R. Jones  Sons</TITLE>
    </HEAD>
    <BODY>
    <P>Добро пожаловать на нашу домашнюю страницу!</P>
    </BODY>
    </HTML>
    ]]>
    </A-SECTION>

    Внутри раздела CDATA процессор будет предполагать, что <HTML>, например, есть начало вложенного элемента, но не часть символьных данных элемента A-SECTION.

    Примечание. Поскольку вы можете непосредственно помещать символы < и внутрь раздела CDATA, вам не нужно использовать ссылки на символы ( #60; и #38; ) либо на предопределенные примитивы общего назначения lt; и amp; (см. в лекцию 6). Фактически, если вы используете подобную ссылку, синтаксический анализатор интерпретирует каждый из символов в ссылке как литерал и не замещает ссылку символами < и .

    Куда вы можете поместить раздел CDATA

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

    <?xml version="1.0" encoding="windows-1251" ?>
    <MUSICAL>
    	<TITLE_PAGE>
    		<![CDATA[
    			<Oklahoma!>
    				By
    		Rogers  Hammerstein
    		]]>
    	</TITLE_PAGE>
    	<!-- Здесь расположены другие элементы… -->
    </MUSICAL>

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

    <?xml version="1.0" encoding="windows-1251" ?>
    <![CDATA[ ОШИБКА: не внутри содержимого элемента! ]]>
    <DOC_ELEMENT>
    	<SUB_ELEMENT <![CDATA[ ОШИБКА: внутри разметки! ]]>  >
    		 содержимое подэлемента…
    	</SUB_ELEMENT>
    </DOC_ELEMENT>

    Примечание. Разделы CDATA не являются вложениями. Вы не можете поместить один раздел CDATA внутрь другого.

    Вернуться к учебному плану