Введение в 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).
Правило | Правильно | Неправильно |
---|---|---|
Имя атрибута должно начинаться с буквы или символа подчеркивания (_), после чего могут следовать другие буквы, цифры, символы точки (.), тире (-) или подчеркивания |
<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.
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).