Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические указания для Лабораторных работ.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
3.54 Mб
Скачать

Теория Вставка элементов html в xml-документы и использование пространства имен

Хотя вы можете использовать таблицы каскадных стилей для добавления базовых возможностей форматирования элементов XML в ваш документ, было бы хорошо иметь возможность добавлять стандартные HTML-элементы – такие, как гиперссылки, изображения и формы – чтобы ваш документ выигрывал от применения встроенных в эти элементы функций. К счастью, когда вы отображаете ваш документ с помощью присоединенной таблицы стилей, вы можете вставить в ваш документ любой стандартный элемент HTML и заставить браузер отобразить этот элемент с использованием специальных зарезервированных для этой цели имен элементов.

Вам может показаться, что можно вставить HTML-элемент, просто присвоив XML-элементу такое же имя. Например, вставить HTML-элемент IMG, просто создав элемент IMG следующим образом:

<IMG SRC="Raven.bmp" />

Однако у браузера нет возможности узнать, что это HTML-элемент, а не обычный созданный вами XML-элемент. Чтобы подобный механизм мог работать, все имена HTML-элементов (а их много) должны были быть зарезервированы исключительно для вставки HTML-элементов. Такой подход, однако, противоречил бы духу XML, в соответствии с которым вам разрешается использовать для ваших элементов любые корректно заданные имена.

К счастью, вы можете воспользоваться соглашением XML, известным как пространство имен, которое позволяет различать конфликтующие имена. Два разных элемента могут иметь одно и то же имя, если они принадлежат разным пространствам имен.

Идентификатор пространства имен добавляется в начале имени элемента и отделяется от остальной части имени двоеточием (:), как в следующем примере:

my-namespace:MY-ELEMENT

Элемент с именем my-namespace:MY-ELEMENT и элемент с именем MY-ELEMENT могут существовать в одном и том же документе и считаются различными элементами, поскольку принадлежат отдельным пространствам имен: my-namespace:MY-ELEMENT принадлежит пространству имен my-namespace, а элемент MY-ELEMENT по умолчанию принадлежит к пространству имен документа.

Однако прежде чем вы сможете использовать пространство имен, вы должны соответствующим образом объявить его. Хотя есть несколько мест, в которых вы можете сделать объявление пространства имен, проще всего это сделать внутри начального тега элемента, для которого вы хотите использовать пространство имен. Например, вы можете объявить пространство имен my-namespace, как показано на рисунке 1.

Рис. 1. 

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

Если имя XML-элемента совпадает с именем стандартного HTML-элемента (например, IMG, A или HR ) и если он принадлежит пространству имен html, Internet Explorer 5 интерпретирует его как HTML-элемент и поместит его на отображаемую страницу. Однако если элемент не принадлежит пространству имен html, Internet Explorer 5 интерпретирует его как обычный XML-элемент.

Пространство имен html является специальным, зарезервированным пространством имен, которое объявляется следующим образом:

xmlns:html='http://www.w3c.org/TR/REC-html40/'

Вот пример XML-элемента, который указывает Internet Explorer 5 вставить HTML-элемент IMG, для которого источником изображения является файл Raven.bmp:

<html:IMG xmlns:html='http://www.w3c.org/TR/REC-html40/'

src='Raven.bmp' />

Это корректно сформированный пустой XML-элемент. Его имя включает указание пространства имен, он также имеет два атрибута. Первый атрибут объявляет пространство имен, в то время как второй атрибут является стандартным HTML-атрибутом, который вы можете включить в начальный тег HTML-элемента IMG.

Имейте в виду, что если вы вставляете HTML-элемент описанным выше способом, XML-документ должен иметь присоединенную таблицу стилей, и вы должны открыть его непосредственно в браузере (как и все XML-документы, описанные в этой лекции).

Ссылка. Официальную спецификацию пространства имен вы можете найти на Web-странице консорциума W3C по адресу http://www.w3.org/TR/REC-xml-names/.

Пример

Версия документа RAVEN, представленная в Листинге 1, иллюстрирует технику включения HTML в XML-документ. Обратите внимание, что к этому документу присоединена оригинальная версия таблицы стилей Raven.css, которая содержится в Листинге 2.

Документ включает три стандартных HTML-элемента.

  • Он содержит изображение, представленное следующим XML-элементом:

  • <html:IMG xmlns:html='http://www.w3c.org/TR/REC-html40/'

SRC='Raven.bmp' ALIGN='LEFT' />

Этот элемент помещает стандартный HTML-элемент IMG (изображение). Атрибут HTML ALIGN='LEFT' делает изображение обтекаемым и размещает его слева от последующего текста документа. Этот метод является альтернативой методу, с которым вы познакомились ранее в разделе "Отобразите обтекаемое текстом изображение".

  • Он делает имя автора (которое ранее содержалось в элементе AUTHOR ) гиперссылкой с помощью следующего XML-элемента (вместо элемента AUTHOR ):

  • <html:A xmlns:html='http://www.w3c.org/TR/REC-html40/'

  • HREF='http://www.edgar.com'>

  • Edgar Allan Poe

</html:A>

Этот элемент вставляет стандартный элемент HTML A (якорь).

  • Он вставляет две горизонтальные разделительные линии с использованием следующего XML-элемента:

<html:HR xmlns:html='http://www.w3c.org/TR/REC-html40/' />

Этот элемент вставляет стандартный элемент HTML HR (горизонтальная линия).

На рисунке 2 показано как Internet Explorer отображает документ.

Рис. 2. 

<?xml version="1.0"?>

<!-- File Name: Raven03.XML -->

<?xml-stylesheet type="text/css" href="Raven.css"?>

<POEM>

<html:IMG xmlns:html='http://www.w3c.org/TR/REC-html40/'

SRC='Raven.bmp' ALIGN='LEFT' />

<TITLE>The Raven</TITLE>

<html:A xmlns:html='http://www.w3c.org/TR/REC-html40/'

HREF='http://www.edgar.com'>

Edgar Allan Poe

</html:A>

<DATE>1845</DATE>

<html:HR xmlns:html='http://www.w3c.org/TR/REC-html40/' />

<STANZA>

<VERSE>Once upon a midnight dreary, while I pondered, weak and weary,</VERSE>

<VERSE>Over many a quaint and curious volume of forgotten lore—</VERSE>

<VERSE>While I nodded, nearly napping, suddenly there came a tapping,</VERSE>

<VERSE>As of some one gently rapping, rapping at my chamber door.</VERSE>

<VERSE>"'Tis some visitor," I muttered, "tapping at my chamber door—</VERSE>

<VERSE>Only this, and nothing more."</VERSE>

</STANZA>

<html:HR xmlns:html='http://www.w3c.org/TR/REC-html40/' />

<STANZA>

<VERSE>Ah, distinctly I remember it was in the bleak December,</VERSE>

<VERSE>And each separate dying ember wrought its ghost upon the floor.</VERSE>

<VERSE>Eagerly I wished the morrow;—vainly I had sought to borrow</VERSE>

<VERSE>From my books surcease of sorrow—sorrow for the lost

Lenore—</VERSE>

<VERSE>For the rare and radiant maiden whom the angels name Lenore—</VERSE>

<VERSE>Nameless here for evermore.</VERSE>

</STANZA>

</POEM>