Опубликован: 05.08.2007 | Доступ: свободный | Студентов: 2201 / 83 | Оценка: 4.47 / 4.09 | Длительность: 20:11:00
ISBN: 978-5-9556-0097-0
Лекция 10:

Введение в XML

Атрибуты XML-документов

Атрибуты или свойства HTML-элементов представляют собой наиболее наглядное понятие - мы сталкивались с ними при определении фонового цвета странички "Пример HTML-документа.htm":

<BODY BGCOLOR = LIGHTGREY>

при определении шрифта и его цвета:

<FONT COLOR = RED SIZE = 16 FACE = ARIAL>

Описание атрибута представляет собой пару "имя (BGCOLOR) - значение (LIGHTGREY)", атрибуты отвечают в основном за вид элементов на web-странице (см. рис. 10.2).

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

Описание атрибута состоит из имени атрибута, вслед за которым идет знак равенства и значение атрибута. Можно выбирать любое имя атрибута, придерживаясь при этом следующих правил (таблица 10.11).

Таблица 10.11. Некоторые правила для атрибутов XML-документов
Правило Правильно Неправильно
Имя атрибута должно начинаться с буквы или символа подчеркивания (_), после чего могут следовать другие буквы, цифры, символы точки (.), тире (-) или подчеркивания
<TOUR _Open =
 "yes">
<TOUR 1Open =
 "yes">
Каждое имя атрибута может только один раз присутствовать в одном и том же начальном теге или в теге пустого элемента
<TOUR Open =
 "yes">
<TOUR Open =
 "yes" Open ="undefined" >
Значение атрибута должно быть заключено в одинарные (') или в двойные кавычки (")
<TOUR Open =
 "yes"> или
<TOUR Open =
 'yes'>
<TOUR Open =
 yes>
Значение атрибута не может содержать внутри себя тот же символ кавычек, которыми оно ограничено
<TOUR Open =
 '"yes"'> или
<TOUR Open =
 "Only 'yes' allowed">
<TOUR Open =
 ' 'yes' '> или
<TOUR Open =
 ""yes"">или
<TOUR Open =
 "Only "yes" allowed">
Значение атрибута не может содержать символ < (синтаксический анализатор может воспринять этот символ как начало описания XML-разметки)
<TOUR Open =
 "yes">
<TOUR Open =
 "<yes>">

Среда Visual Studio .NET выделяет атрибуты красным шрифтом, при просмотре XML-документа их легко выделять. Мы уже сталкивались с атрибутами при создании самого первого XML-документа:

<?xml version="1.0" encoding="utf-8" ?>

Здесь version и encoding - атрибуты, а "1.0" и "utf-8" - их значения соответственно.

Применение атрибутов в XSL-схемах для фильтрации выводимого содержимого

Мы уже отмечали преимущества использования XSL-таблиц перед таблицами каскадных стилей. Содержимое XML может фильтроваться или сортироваться при выводе с помощью XSL-таблиц. Пример подобной фильтрации реализован в таблице 10.12.

Таблица 10.12.
XML-документ, XMLTour4.xml XSL-таблица, XSLTour4.xsl
<?xml version="1.0"
 encoding="utf-8" ?>

<!-- Название файла XMLTour.xml  -->
<?xml-stylesheet type="text/xsl"
 href="XSLTour4.xsl"?>
    
<TABLE>
<TOUR Open = "yes">
<IDTOUR>1</IDTOUR>
<NAME>Кипр</NAME>
<PRICE>25 000,00р. </PRICE>
<INFORMfTION>В стоимость
 двух взрослых путевок входит
 цена одной детской
 (до 7лет)</INFORMfTION>
</TOUR>
<TOUR>
<IDTOUR>2</IDTOUR>
<NAME>Греция</NAME>
<PRICE>32 000,00р. </PRICE>
<INFORMfTION>В августе
 и сентябре действуют 
 специальные
 скидки</INFORMfTION>
</TOUR>
<TOUR>
<IDTOUR>3</IDTOUR>
<NAME>Таиланд</NAME>
<PRICE>30 000,00р.</PRICE>
<INFORMfTION>Не включая
 стоимость
 авиабилета</INFORMfTION>
</TOUR>
<TOUR>
<IDTOUR>4</IDTOUR>
<NAME>Италия</NAME>
<PRICE>26 000,00р.</PRICE>
<INFORMfTION>Завтрак
 в отеле включен
 в стоимость
 путевки</INFORMfTION>
</TOUR>
<TOUR Open = "yes">
<IDTOUR>5</IDTOUR>
<NAME>Франция</NAME>
<PRICE>27 000,00р.</PRICE>
<INFORMATION>Дополнительные
 экскурсии не входят
 в стоимость
 путевки</INFORMfTION>
</TOUR>
</TABLE>
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet
 xmlns:xsl=
 "http://www.w3.org/1999/XSL/Transform"
 version="1.0">

<xsl:template match="/"> 
<H3>Таблица "Туры"</H3> 
<xsl:for-each select="TABLE/TOUR[@ Open =
 'yes']"> <BR/>
 
<SPAN STYLE=
 "font-style:italic">Код тура:  </SPAN>
<xsl:value-of select="IDTOUR"/><BR/>  
<SPAN STYLE=
 "font-style:italic">Название: </SPAN> 
<xsl:value-of select =
 "NAME"/> <BR/>  
<SPAN STYLE=
 "font-style:italic"> Цена: </SPAN> 
<xsl:value-of select=
 "PRICE"/><BR/>  
<SPAN STYLE=
 "font-style:italic">Информация: </SPAN> 
<xsl:value-of select=
 "INFORMATION"/><BR/>  
</xsl:for-each>  
</xsl:template>  
</xsl:stylesheet>
Вид в браузере Internet Explorer

Исходные документы XMLTour2.xml и XSLTour2.xsl были взяты из таблицы 10.8. Для туров с кодами 1 и 5 в тегах TOUR добавлены атрибуты Open:

...
<TOUR Open = "yes">
		<IDTOUR>1</IDTOUR>
...
<TOUR Open = "yes">
		<IDTOUR>5</IDTOUR>
...

Таблица XSL трактует атрибут, принадлежащий элементу в XML-документе, как дочерний элемент. Для ссылки на атрибут в образце XSL необходимо предварить имя атрибута символом @, - это указывает, что имя относится к атрибуту, а не к элементу:

<xsl:for-each select="TABLE/TOUR[@ Open = 'yes']">

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

В программном обеспечении к курсу вы найдете файлы XMLTour4.xml и XSLTour4.xsl в папке AttXSL (Code\Glava5\XSL\ AttXSL).