Опубликован: 24.01.2007 | Доступ: свободный | Студентов: 9050 / 1428 | Оценка: 4.28 / 4.09 | Длительность: 20:51:00
Лекция 3:

Создание корректно сформированных XML-документов

< Лекция 2 || Лекция 3: 12345 || Лекция 4 >

Правила для корректного задания значений атрибутов

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

  • строка может быть заключена как в одинарные ('), так и в двойные кавычки (");
  • строка не может содержать внутри себя тот же символ кавычек, которыми она ограничена;
  • строка может содержать ссылку на символ или ссылку на внутренние примитивы общего назначения; (Об этом будет рассказано в "Определение и использование примитивов" .)
  • строка не может содержать символ < (Синтаксический анализатор может воспринять этот символ как начало описания XML-разметки.)
  • строка не может содержать символ &, если это не ссылка на символ или примитив.

Вы уже познакомились с правильными описаниями атрибутов. Ниже приведены неправильные описания:

<EMPLOYEE Status=""downsized"">  <!-- Нельзя использовать символы-ограничители внутри строки. -->
<ALBUM Type="<CD>">  <!-- Нельзя использовать символ < внутри строки -->
<WEATHER Forecast="Cold & Windy">  <!-- Нельзя использовать символ &, если это не ссылка -->

Если вы хотите использовать двойные кавычки (") внутри значения атрибута, вам следует применить в качестве ограничителей одинарные кавычки ('), как показано в примере:

<EMPLOYEE Status='"downsized"'>  <!-- Правильное значение атрибута. -->

Аналогично, чтобы включить одинарные кавычки в значение атрибута, следует использовать в качестве ограничителей двойные кавычки:

<CANDIDATE name="W.T. 'Bill' Bagley">  <!-- Правильное значение атрибута. -->

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

Если вы создаете корректно сформированный документ, не имеющий объявления типа документа (как вы делали в упражнениях данной лекции), вы можете присвоить атрибуту любое значение, соответствующее приведенным выше правилам. Однако, если вы создаете описание типа документа и определяете внутри него атрибуты, то можете ограничить типы значений, которые могут быть присвоены конкретному атрибуту. Например, вы можете определить атрибут, которому могут быть присвоены только значения "yes" или "no". Таким образом, одно из преимуществ задания определенного типа информации через атрибуты элементов в отличие от задания через содержимое элемента заключается в том, что при этом вы можете обеспечить контроль надо всеми типами данных, которые могут быть присвоены атрибуту, и указываете синтаксическому анализатору учитывать эти ограничения типов. (Как вы узнаете в "Создание валидных XML-документов" , в основной спецификации XML не указаны средства для ограничения типов символьных данных для элемента.)

Преобразуйте содержимое в атрибуты

  1. Откройте новый, пустой текстовый файл в вашем текстовом редакторе и наберите XML-документ, представленный в Листинге 3.3. При желании можете воспользоваться ранее созданным вами документом Inventory.xml в качестве отправной точки.
  2. Воспользуйтесь командой Save (Сохранить) вашего текстового редактора, чтобы сохранить документ на жестком диске под именем Inventory04.xml.
    <?xml version="1.0" encoding="windows-1251" ?>
    <!-- File Name: Inventory04.xml -->
    <?xml-stylesheet type="text/css" href="Inventory02.css"?>
    <INVENTORY>
       	<BOOK Binding="mass market paperback">
          		<TITLE>The Adventures of Huckleberry Finn</TITLE>
          		<AUTHOR Born="1835">Mark Twain</AUTHOR>
          		<PAGES>298</PAGES>
          		<PRICE>$5.49</PRICE>
       	</BOOK>
       	<BOOK Binding="hardcover">
          		<TITLE>Leaves of Grass</TITLE>
          		<AUTHOR Born="1819">Walt Whitman</AUTHOR>
          		<PAGES>462</PAGES>
          		<PRICE>$7.75</PRICE>
       	</BOOK>
       	<BOOK Binding="trade paperback">
          		<TITLE>The Marble Faun</TITLE>
          		<AUTHOR Born="1804">Nathaniel Hawthorne</AUTHOR>
          		<PAGES>473</PAGES>
          		<PRICE>$10.95</PRICE>
       	</BOOK>
       	<BOOK Binding="hardcover">
          		<TITLE>Moby-Dick</TITLE>
          		<AUTHOR Born="1819">Herman Melville</AUTHOR>
          		<PAGES>724</PAGES>
          		<PRICE>$9.95</PRICE>
       	</BOOK>
    </INVENTORY>
    Листинг 3.3. Inventory04.xml

    Примечание. Созданный вами документ использует CSS-таблицу с именем Inventory02.css, которую вы создали в предыдущем упражнении. Проверьте, что этот файл таблицы стилей находится в той же папке, что и файл Inventory04.xml.

  3. В Windows Explorer (Проводник) или в окне папки дважды щелкните на имени файла Inventory04.xml. Internet Explorer 5 отобразит документ, как показано на рисунке 3.11.

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

    • в каждом элементе BOOK информация о виде переплета преобразована из содержимого (в форме вложенного элемента BINDING ) в атрибут с именем Binding. Это преобразование необходимо, если вы хотите хранить информацию о виде переплета, но не желаете ее показывать вместе с другой информацией о книге при представлении документа с использованием CSS-таблицы; (Посмотрите на рис. 3.11 и убедитесь, что Internet Explorer 5 не отобразил значения атрибута.)
    • к каждому элементу AUTHOR был добавлен атрибут с именем Born, содержащий дату рождения автора. Это пример малозначительной информации, которую вы хотели бы хранить, но отображать ее нет необходимости. Один из способов скрыть такую информацию – и объявить ее малозначительной – назначить ее в качестве значения атрибуту, а не размещать в содержимом элемента.

    Это только несколько из обширных возможностей применения атрибутов. Подробнее эти вопросы будут обсуждены в "Создание валидных XML-документов" .

< Лекция 2 || Лекция 3: 12345 || Лекция 4 >
Максим Попов
Максим Попов

Почему при использовании скриптов, приведенных в курсе Основы XML

лекция Лекция 8: 

Отображение XML-документов с использованием связывания данных

не происходит связывания XLM документа с HTML?

Отображаются пустые поля. Браузер IE11

Владислав Нагорный
Владислав Нагорный

Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки?

Спасибо!