Как использовать xml в html
Связывание данных: отображение XML-документа на Web-странице
Понятие о связывании данных
Метод связывания данных сводится к установке связи XML-документа с HTML-страницей, а также сцеплению элементов HTML с XML-элементами. В результате HTML-элементы автоматически отображают содержимое XML-элементов, с которыми они сцеплены. В этом случае при открытии HTML-страницы встроенный в Internet Explorer XML-процессор синтаксически анализирует XML-документ. При этом Internet Explorer создаёт программный объект, который носит название «Объект исходных данных» (Data Source Object, DSO). Объект DSO хранит данные XML и обеспечивает доступ к ним. DSO позволяет осуществлять доступ и манипулирование XML-данными посредством ряда методов, свойств и событий.
Связывание данных работает только с XML-документом, который симметрично структурирован, т.е. элементы документа могут быть интерпретированы как набор записей и полей.
HTML-элемент с именем XML называется фрагментом данных. Весь текст XML-документа в принципе может быть помещён между начальным и конечным тэгами XML:
Однако согласно идеологии XML собственно данные (XML-документ) должны храниться отдельно от информации по их форматированию и обработке. Поэтому как правило HTML-элемент с именем XML (фрагмент данных) остаётся пустым и содержит только идентификатор объекта DSO и URL XML-документа, который находится в отдельном файле. Идентификатор фрагмента данных (атрибут ID) используется для доступа к XML-документу с HTML-страницы и должен быть уникальным.
Табличное сцепление данных
При табличном сцеплении Internet Explorer берёт на себя бóльшую часть работы. Вам не нужно писать сценарии. Только если вы выбрали режим пролистывания, вам потребуется включить несколько вызовов простых функций. Кроме того, вы можете использовать вложенные HTML-таблицы для отображения XML-документа, содержащего иерархический набор записей.
Если данные XML-документа организованы в виде простого набора записей, т.е. если корневой элемент содержит множество элементов («записей»), каждый из которых содержит одинаковый набор элементов («полей»), а каждое «поле» содержит уже только символьные данные, вы можете использовать один единственный HTML-элемент TABLE для отображения XML-документа. Пример такого XML-документа:
Основы XML. Преобразование XML-HTML. Использование JavaScript
Знакомство с технологией XML. Изучение возможности представления документов XML в HTML. Использование скриптов JavaScript для навигации по таблице XML и организации поиска данных по условию. Рекомендуемая литература [4, 13, 16].
Краткие теоретические сведения
Технология XML (eXtensible Markup Language) была создана в конце 90-х годов прошлого столетия. Основные достоинства текста XML:
□ имеет структуру базы данных, доступен ЭВМ и человеку;
□ удобно обрабатывается средствами современных языков программирования;
□ легко переводится в HTML.
Рассмотрим следующий пример текстовой базы данных, написанной на XML:
Three men in the boat
Notre Domme de Paris
Angelika — the misstress of ghosts А and S. Gallen
Three men in the boat.
Наберите этот текст в любом редакторе и сохраните его как простой текстовый файл с расширением xml — например, дайте этому файлу имя textbd.xml. Можно просмотреть этот файл браузером Internet Explorer так же, как вы просматривали HTML-файлы. В случае ошибки интерпретатор XML выдаст подробную информацию о дислокации и сути ошибки.
Теперь покажем, как перевести этот вывод в табличную форму HTML, что выполняется средствами HTML. Создадим следующий файл HTML (листинг 2.12).
Листинг 2.12. HTML-документ для отображения таблицы XML
Our first lesson in xml-technology
Сохраним этот HTML-файл под именем textbd.html. Теперь откроем его браузером. Результат будет таким (рис. 2.9).
Рис. 2.9. Отображение документа XML в документе HTML
Для подключения созданного ранее XML-файла и связывания его с таблицей используются теги:
Для отображения данных в таблице используются теги для ячеек в следующем виде:
Тег используется в качестве контейнера. Параметр DATAFLD содержит значение отображаемого элемента XML.
Листинг2.13. Модифицированный HTML-документ для отображения таблицы XML
Our first lesson in xml-technology
Терм > используется для прорисовки стрелки вправо, терм &it — стрелки влево. При этом указываем, что нужно отображать только две записи в таблице:
Теперь создадим для нашего сайта функциональное наполнение. Его смысл будет заключаться в том, что будем вводить название книги целиком или какие-то его фрагменты, и по нажатию кнопки система должна выдавать другие реквизиты книги: автора и цену либо сообщать, что книга не найдена. Теперь понадобится привлечь JavaScript. Собственно потребуется всего несколько команд.
Эта команда возвращает общее число элементов из ХМ L-документа.
Теперь приведем расширенный HTML-код для этой задачи (листинг 2.14).
Листинг2.14. Расширенный HTML-документ для отображения таблицы XML
Как использовать xml в html
8. Лекция: Отображение XML-документов с использованием связывания данных
Связывание данных является первым из методов отображения XML-документа с традиционной HTML-страницы, с которым вы познакомитесь. Отображение XML с HTML-страниц дает вам возможность воспользоваться как преимуществами хранения данных в XML-документе, с его гибким синтаксисом для структурирования данных и маркировки каждого фрагмента информации, так и имеющееся богатство форматирования и динамическое программирование HTML.
При связывании данных вы соединяете XML-документ с HTML-страницей, а затем встраиваете стандартные HTML-элементы, такие как SPAN или TABLE, в отдельные XML-элементы. HTML-элементы затем автоматически отображают содержимое XML-элементов, в которые они встроены.
Связывание данных, как и другие методы, о которых вы узнаете в этой лекции, работает только с XML-документом, который симметрично структурирован, например, как базы данных, – а именно, элементы документа могут быть интерпретированы как набор записей и полей. В простейшем случае такой документ состоит из корневого элемента, содержащего множество элементов одинакового типа (записи), каждый из которых имеет одинаковый набор дочерних элементов, все из которых содержат символьные данные (поля). В качестве примера можно привести документ Inventory.xml, который представлен в Листинге 8.1. Элементы BOOK этого документа могут быть интерпретированы как записи, а элементы, вложенные в каждый элемент BOOK (TITLE, AUTHOR и т.д.), могут быть интерпретированы как поля. Далее в этой лекции вы подробнее узнаете о специфических структурах документа, которые подходят для связывания данных. Если структура документа такова, что не допускает связывание данных, можно использовать метод создания сценариев, о котором пойдет речь в лекции 9.
В этой лекции вы прежде всего получите сведения о двух основных шагах при связывании данных. Затем вы узнаете в подробностях, как привязать XML-документ к HTML-странице (первый основной шаг) и как сцеплять элементы HTML с элементами XML (второй основной шаг). Наконец, вы узнаете, как программировать Web-страницу с помощью сценариев, которые используют в качестве базового объекта программирования связанные данные (а именно, Data Source Object, или DSO). Вы можете применять эти сценарии совместно со связыванием данных – либо независимо.
В лекции 9 вы познакомитесь с совершенно иным способом для доступа управления и отображения XML-документа с HTML-страницей. Этот метод вы можете использовать для XML-документов любого типа, независимо от вида его логической структуры.
Основные шаги
Вот два основных этапа при связывании данных:
Установка связи XML-документа с HTML-страницей, на которой вы хотите отобразить данные XML. Этот шаг обычно реализуется включением HTML элемента с именем XML в HTML-страницу. Например, следующий элемент на HTML-странице связывает XML-документ Book.xml со страницей:
Сцепление HTML элементов с XML-элементами. Когда вы сцепляете HTML элементы с XML-элементом, HTML-элемент автоматически отображает содержимое XML-элемента. Например, следующий элемент SPAN на HTML-странице сцеплен с элементом AUTHOR связанного XML-документа:
В результате HTML-элемент SPAN отображает содержимое XML-элемента AUTHOR.
Базовая технология связывания данных в действительности столь же проста, как в этом примере, хотя в дальнейшем вы познакомитесь с различными вариациями и способами использования этой технологии.
Шаг первый: установка связи XML-документа с HTML страницей
Чтобы отобразить XML-документ на HTML странице, вы должны установить его связь со страницей. Самый простой путь сделать это в Microsoft Internet Explorer – включить в страницу HTML-элемент с именем XML, так называемый фрагмент данных. Вы можете использовать одну из двух различных форм записи для фрагмента данных.
В первой форме весь текст XML-документа помещается между начальным и конечным тегами XML. Вот пример фрагмента данных на следующей HTML-странице:
Во второй форме записи HTML-элемент с именем XML остается пустым и содержит только URL XML-документа. Вот пример фрагмента данных на HTML-странице:
В предыдущем примере текст XML-документа должен содержаться в отдельном файле Book.xml:
Вторая форма более соответствует основам философии XML, согласно которой собственно данные (XML-документ) хранятся отдельно от информации по их форматированию и обработке (таблицы стилей или, в данном случае, HTML-страницы). Вторая форма облегчает работу с XML-документом, особенно если один документ отображается на нескольких различных HTML-страницах. В рассматриваемых в этом курсе примерах вы будете иметь дело только со второй формой.
Примечание. Имейте в виду, что элемент с именем XML, используемый для создания фрагмента данных, не является собственно XML-элементом. Это просто HTML-элемент, который содержит XML-элементы. Следовательно, использование синтаксиса XML для пустого элемента,
Чаще, однако, вы используете частичный URL, который задает местонахождение относительно местонахождения HTML-страницы, содержащей фрагмент данных. Например, атрибут SRC в следующем фрагменте данных указывает, что файл Book.xml находится в той же папке, что и HTML-страница:
Относительные URL более распространены, потому что XML-документ обычно содержится в той же папке, что и HTML-страница, либо в одной из вложенных папок.
Как хранятся данные XML
Когда Internet Explorer открывает HTML-страницу, его встроенный XML-процессор синтаксически анализирует XML-документ. Internet Explorer также создает программный объект, который носит название Объект исходных данных (Data Source Object DSO), который хранит данные XML и обеспечивает доступ к этим данным. DSO хранит данные XML как набор записей – т.е. множество записей и их полей. Например, если вы включите документ Inventory.xml (см. Листинг 8.1) в страницу как фрагмент данных, DSO будет хранить каждый элемент BOOK как запись, а каждый дочерний элемент внутри BOOK (TITLE, AUTHOR и т.д.) как поле.
Когда вы сцепляете HTML-элемент с XML-элементом, DSO автоматически предоставляет значение XML-элемента и управляет всеми его свойствами. DSO также позволяет вам напрямую осуществлять доступ и манипулирование имеющимся набором записей посредством ряда методов, свойств и событий. Методы представляют собой функции, которые вы можете вызывать со страницы для доступа или модификации набора записей. (Например, вы можете использовать методы для перемещения между записями.) Свойства представляют собой установленные на данный момент параметры, которые вы можете считывать и в ряде случаев изменять со страницы. (Например, вы можете считать свойство, которое сообщает вам, достигли ли вы последней записи.) События представляют собой определенные смены состояний (например, изменение значений записи), которыми вы можете управлять посредством функции сценария, который вы создаете для страницы.
На странице идентификатор, который вы присваиваете атрибуту ID во фрагменте данных, представляет DSO. (В предыдущем разделе в рассмотренном примере таким идентификатором является dsoBook.)
Проверка на наличие ошибок XML
Когда вы открываете XML-документ (автономный или с таблицей стилей) непосредственно в Internet Explorer, браузер проверяет, является ли документ корректно сформированным. Если он обнаруживает ошибки, то приостанавливает отображение документа и выводит сообщение о фатальной ошибке, которое помогает вам выявить ошибку и устранить ее.
Если вы открываете XML-документ через фрагмент данных на HTML-странице, Internet Explorer проверяет, является ли документ корректно сформированным, а также – если документ включает объявление типа документа – является ли он валидным. Однако в том случае, если документ содержит ошибку, Internet Explorer просто не будет отображать данные XML, не выводя сообщение об ошибке.
Чтобы увидеть описание какой-либо ошибки, имеющейся в связанном XML-документе, вы можете протестировать документ с использованием сценариев проверки на корректность и валидность, представленных в разделе «Проверка валидности XML-документа» в лекции 9.
Шаг второй: сцепление HTML-элементов с XML-элементами
Вы можете осуществлять сцепление HTML-элементов с XML-элементами двумя основными способами.
Использование табличного сцепления данных
Самый простой способ отобразить XML-документ, который состоит из группы записей (такой как Inventory.xml, представленный в Листинге 8.1), – это сцепить HTML-элемент TABLE с данными XML таким образом, чтобы в таблице автоматически отображались сразу все записи (или одна страница записей за раз, если вы установили режим постраничного отображения). При таком подходе Internet Explorer берет на себя большую часть работы; вам не нужно писать сценарии или вызывать методы (функции). (Одно исключение состоит в том, что если вы выбрали режим пролистывания, вам потребуется включить несколько вызовов простых функций, о чем пойдет речь далее в этой лекции.)
Вы можете использовать одну таблицу HTML для отображения XML-документа, структурированного как набор записей, либо вы можете использовать вложенные HTML-таблицы для отображения XML-документа, содержащего иерархический набор записей (более сложную структуру записей).
Использование одной HTML-таблицы для отображения простого набора записей
Вы можете использовать один HTML-элемент TABLE для отображения XML-документа, в котором данные организованы в виде простого набора записей – т.е. XML-документа, составленного следующим образом:
корневой элемент содержит множество элементов типа запись (record) (в этой лекции подобные элементы иногда называются просто записями);
каждый элемент типа запись содержит одинаковый набор элементов типа поле (field) (в этой лекции подобные элементы иногда называются просто полями);
каждый элемент типа поле содержит только символьные данные. (Если дочерний элемент элемента запись содержит один или несколько своих собственных дочерних элементов, DSO интерпретирует его как вложенную запись, а не как поле. О том, как отображать вложенные поля, вы узнаете в разделе «Использование вложенных таблиц для отображения иерархической структуры записей» далее в этой лекции.)
Примером такого типа XML-документов является документ Inventory.xml, который вы использовали в предыдущих лекциях. Он представлен в Листинге 8.1. В этом документе корневой элемент (INVENTORY) содержит набор из восьми элементов-записей (элементы BOOK), и каждый из элементов-записей имеет одинаковый набор элементов-полей, которые содержат только символьные данные (TITLE, AUTHOR, BINDING, PAGES, PRICE).
Листинг 8.1. Inventory.xml
Когда вы связываете таблицу с XML-документом, данные, принадлежащие каждому из элементов записей, отображаются в отдельной строке таблицы, а каждый из дочерних элементов полей – в отдельном столбце.
В качестве примера возьмем HTML-страницу из Листинга 8.2, которая содержит таблицу, сцепленную с данными документа Inventory.xml из Листинга 8.1.
Листинг 8.2. Inventory Table.htm
XML-документ из Листинга 8.1 связан с HTML-страницей из Листинга 8.2 посредством фрагмента данных на этой странице, имеющего ID dsoInventory:
Элемент TABLE страницы сцеплен со всем XML-документом путем присвоения атрибуту DATASRC элемента идентификатора (ID) фрагмента данных, предваренного символом #:
Таблица определена со стандартным заголовком (элемент THEAD) и с одной строкой (элемент TR). Каждая ячейка в этой строке (т.е., каждый элемент TD) состоит из элемента SPAN, который сцеплен с одним из полей XML-документа таким образом, что этот элемент отображает содержимое поля. Например, первая ячейка содержит элемент SPAN, сцепленный с полем TITLE:
Элемент SPAN связывается с полем XML путем присвоения имени поля (в данном примере TITLE) атрибуту DATAFLD элемента.
Вот как работает связывание данных: даже если в элементе TABLE определена только одна строка, когда браузер отображает таблицу, он повторяет строковый элемент для каждой записи в XML-документе. Т.е., в первой строке, следующей за заголовком, отображены поля (TITLE, AUTHOR и т.д.), принадлежащие первой записи (элемент BOOK для книги Adventures of Huckleberry Finn). В следующей строке отображены поля для второй записи (элемент BOOK для книги Leaves of Grass) и т.д. На рисунке 8.1 показано как выглядит документ в Internet Explorer.
У вас может возникнуть вопрос, почему ячейки (элементы TD) не сцеплены непосредственно с полями XML. Ответ заключается в том, что элемент TD не является связываемым HTML-элементом. (Связываемые элементы перечислены в таблице 8.3 в разделе «Другие способы связывания данных».) Следовательно, вы должны включить внутрь каждого элемента TD связываемый элемент (обычно SPAN).
Ссылка. Чтобы получить информацию о том, как работает HTML и динамический HTML (DHTML) применительно к Internet Explorer, посетите следующий Web-сайт MSDN: http://msdn.microsoft.com/workshop/author/default.asp. Чтобы познакомиться с официальной спецификацией HTML, обратитесь к Web-сайту консорциума W3C по адресу http://www.w3.org/TR/REC-html40/.
Использование постраничного отображения
Если XML-документ содержит много записей, вы можете использовать постраничный вывод группы записей за один раз вместо отображения всех записей одновременно в огромной таблице. Для активизации постраничного отображения в обычной связанной таблице, выполните следующие действия.
Установите для атрибута DATAPAGESIZE сцепленного элемента TABLE значение, равное максимальному числу записей, которые вы хотите отобразить за раз. Каждая страница записей будет содержать заданное вами число записей. Например, следующий начальный тег для элемента TABLE присваивает число «5» атрибуту DATAPAGESIZE, в результате чего в таблице будет отображено пять записей за раз:
Присвойте уникальный идентификатор атрибуту ID элемента TABLE, как для следующего начального тега:
Чтобы перемещаться между записями, вызывайте методы элемента TABLE, приведенные в таблице 8.1. Для приведенных в последнем столбце примеров предполагается, что таблица имеет идентификатор InventoryTable.
Сведения об XML и XSLT
Применение XML и XSLT на веб-страницах Dreamweaver.
Пользовательский интерфейс в Dreamweaver СС и более поздних версиях стал проще. В результате этого некоторые функции, описанные в этой статье, могут отсутствовать в Dreamweaver CC и более поздних версиях. Дополнительные сведения см. в этой статье.
Применение XML и XSL на веб-страницах
Язык Extensible Markup Language (XML) позволяет структурировать информацию. Подобно HTML, язык XML позволяет структурировать информацию с помощью тегов, однако теги XML не являются стандартными, как теги HTML. В отличие от последнего XML дает возможность создавать теги, которые наилучшим образом определяют структуру данных (схему). Теги поддерживают вложенность, что позволяет создать схему из родительских и дочерних тегов. Подобно тегам HTML, все теги XML-схемы содержат открывающие и закрывающие теги.
В приведенном ниже примере показана основная структура XML-файла.
В этом примере у каждого родительского тега есть 3 дочерних тега:
XML-документы не содержат форматирования, они просто служат контейнерами для структурированной информации. При наличии XML-схемы информацию можно отображать с помощью языка Extensible Stylesheet Language (XSL). Аналогично языку каскадных таблиц стилей (CSS), который позволяет форматировать тексты HTML, язык XSL позволяет форматировать XML-данные. XSL-файл, в котором определены стили, элементы страниц, макет и т. д., присоединяется к XML-файлу, так что XML-данные при просмотре в браузере будут отформатированы в соответствии с данными XSL-файла. Содержимое (XML-данные) и представление (определенное в XSL-файле) полностью отделены друг от друга, что обеспечивает больше возможностей управления оформлением информации на веб-странице. По существу, XSL представляет собой технологию представления для XML, где основным форматом вывода является HTML-страница.
Extensible Stylesheet Language Transformations (XSLT) представляют собой подмножество языка XSL, которое позволяет отображать данные XML на веб-странице и «преобразовывать» их вместе со стилями XSL в пригодную для чтения информацию в виде HTML, оформленную в определенном стиле. С помощью Dreamweaver можно создавать XSLT-страницы, позволяющие выполнять XSL-преобразование с помощью сервера приложений или браузера. При XSL-преобразовании на сервере преобразование XML- и XSL-данных и отображение их на странице выполняет сам сервер. При преобразовании на стороне клиента необходимые действия выполняет браузер (например, Internet Explorer).
Выбор применяемого метода (преобразование на сервере или стороне клиента) зависит от того, каким должен быть конечный результат, какие доступны технологии, а также от уровня доступа к исходным XML-файлам и других факторов. Оба подхода имеют свои достоинства и ограничения. Например, преобразование со стороны сервера поддерживается любыми браузерами, в то время как преобразования со стороны клиента выполняются строго в современных браузерах (Internet Explorer 6, Netscape 8, Mozilla 1.8 и Firefox 1.0.2). Преобразование на сервере поддерживает динамическое отображение XML-данных как с собственного сервера, так и из любого другого места в сети, а для преобразования на стороне клиента необходимо использовать XML-данные, расположенные локально на собственном сервере. Наконец, для преобразования на сервере требуется развертывание страниц на настроенном сервере приложений, тогда как для преобразования на стороне клиента достаточно доступа только к веб-серверу.
Руководство по XML можно найти по адресу www.adobe.com/go/vid0165_ru.
XSL-преобразование на сервере
В Dreamweaver предусмотрены методы создания XSLT-страниц, позволяющие выполнять XSL-преобразование на сервере. Когда сервер приложений выполняет XSL-преобразование, файл с XML-данными может находиться как на собственном сервере, так и в любом месте сети. Кроме того, преобразованные данные будут правильно отображаться в любом браузере. Однако развертывание страниц для преобразования на сервере представляет сложность и требует доступа к серверу приложений.
Первый шаг при создании страниц этого типа — создание XSLT-фрагмента. Это отдельный файл, содержащий макет, форматирование и т. п. для XML-данных, которые должны отображаться на динамической странице. Когда XSLT-фрагмент будет создан, необходимо вставить на динамической странице ссылку на него (например, на странице PHP или ColdFusion). Вставленная ссылка на фрагмент работает во многом как Server Side Include (SSI): XML-данные (фрагмент) с форматированием находятся в отдельном файле, в то время как в представлении «Дизайн» на самой динамической странице отображается шаблон для этого фрагмента. Когда браузер запрашивает динамическую страницу, содержащую ссылку на этот фрагмент, сервер обрабатывает включенную инструкцию и создает новый документ, в котором вместо шаблона отображается отформатированное содержимое фрагмента.
A. Браузер запрашивает динамическую страницу B. Веб-сервер находит страницу и передает ее серверу приложений C. Сервер приложений просматривает страницу в поисках инструкций и находит фрагмент XSLT D. Сервер приложений выполняет преобразование (считывает фрагмент XSLT, получает и форматирует данные xml) E. Сервер приложений вставляет в страницу преобразованный фрагмент и возвращает ее веб-серверу F. Веб-сервер передает готовую страницу браузеру
Поведение сервера «XSL-преобразование» используется для вставки на динамическую страницу ссылки на XSLT-фрагмент. При вставке ссылки Dreamweaver создает в корневой папке сайта папку includes/MM_XSLTransform/, которая содержит файл динамической библиотеки. Сервер приложений преобразует указанные XML-данные с помощью функций, определенных в этом файле. Этот файл отвечает за выборку XML-данных и XSLT-фрагментов, выполнение XSL-преобразования и вывод результатов на веб-страницу.
Чтобы страница отображалась правильно, необходимо, чтобы XSLT-фрагмент, XML-файл с данными и созданная динамическая библиотека находились на сервере. (Если в качестве источника данных будет выбран XML-файл (например, из канала RSS), то этот файл, разумеется, будет находиться где-то в Интернете.)
Dreamweaver поддерживает XSL-преобразование для страниц ColdFusion, ASP и PHP.
Для выполнения преобразования на сервере этот сервер должен быть правильно настроен. Для получения более подробных сведений свяжитесь с администратором сервера.
XSL-преобразование на стороне клиента
XSL-преобразования можно выполнять на стороне клиента без использования сервера приложений. С помощью Dreamweaver можно создавать целые XSLT-страницы, которые будут выполнять преобразования. Однако преобразования на стороне клиента требуют работы с XML-файлом, содержащим данные для отображения. Кроме того, преобразование на стороне клиента поддерживается только в современных браузерах (Internet Explorer 6, Netscape 8, Mozilla 1.8 и Firefox 1.0.2).
Сначала создадим целую XSLT-страницу и присоединим источник XML-данных. (Dreamweaver выдаст запрос на присоединение источника данных при создании новой страницы.) Создать XSLT-страницу можно как с нуля, так и путем преобразования в XSLT-страницу существующей HTML-страницы. При преобразовании в XSLT-страницу существующей HTML-страницы необходимо присоединить источник XML-данных с помощью панели «Привязки» («Окно» > «Привязки»).
После создания XSLT-страницы необходимо привязать ее к XML-файлу, содержащему XML-данные. Для этого нужно вставить ссылку на XSLT-страницу в самом XML-файле (во многом аналогично тому, как вставляется ссылка на внешнюю таблицу стилей CSS в разделе HTML-страницы). Посетители сайта должны в своем браузере просматривать XML-файл (а не XSLT-страницу). Когда посетители сайта просматривают страницу, браузер выполняет XSL-преобразование и отображает XML-данные, отформатированные с помощью связанной XSLT-страницы.
Отношения между связанной XSLT-страницей и XML-страницей принципиально аналогичны, но они отличаются от модели внешнего CSS-файла/HTML-страницы. Содержимое HTML-страницы (например, текст) форматируется с помощью внешней таблицы стилей. HTML-страница определяет содержимое, а внешний код CSS, который пользователь никогда не видит, определяет представление содержимого. При использовании XSLT и XML ситуация прямо противоположна. XML-файл (который пользователь никогда не видит в необработанном виде) определяет содержимое, в то время как XSLT-страница определяет его представление. XSLT-страница содержит таблицы, макет, графические элементы и т. д. — все, что обычно содержит стандартная HTML-страница. Когда пользователь просматривает в браузере XML-файл, XSLT-страница форматирует содержимое.
A. Браузер запрашивает XML-файл B. Сервер в ответ передает браузеру XML-файл C. Браузер считывает директиву XML и запрашивает XSLT-файл D. Сервер передает XSLT-файл браузеру E. Браузер преобразует данные XML и отображает их в окне браузера
При использовании Dreamweaver для привязки XSLT-страницы к XML-странице Dreamweaver вставляет соответствующий код в верхней части XML-страницы. Если вы являетесь автором XML-страницы, на которую указывает ссылка (то есть если XML-файл находится исключительно на вашем веб-сервере), то вам потребуется только вставить с помощью Dreamweaver соответствующий код, который свяжет эти 2 страницы. Если вы являетесь автором XML-файла, то выполняемое клиентом XSL-преобразование является полностью динамическим. То есть при любом обновлении данных в XML-файле все выходные данные HTML, использующие связанную XSLT-страницу, будут автоматически обновляться.
XML- и XSL-файлы, используемые преобразованием на стороне клиента, должны находиться в одном каталоге. В противном случае браузер считает XML-файл и найдет XSLT-страницу для преобразования, однако не обнаружит ресурсы (таблицы стилей, изображения и т. п.), заданные соответствующими ссылками на XSLT-странице.
Если вы не являетесь автором XML-страницы, на которую указывает ссылка (например, если надо использовать XML-данные из канала RSS в Интернете), то процесс будет несколько сложнее. Для выполнения преобразования на стороне клиента с помощью XML-данных из внешнего источника надо сначала загрузить исходный XML-файл в тот же каталог, где находится XSLT-страница. Если XML-страница находится на локальном сайте, то с помощью Dreamweaver можно добавить соответствующий код, осуществляющий ее привязку к XSLT-странице, и опубликовать обе страницы (загруженный XML-файл и связанную XSLT-страницу) на вашем веб-сервере. Когда пользователь просматривает в браузере XML-страницу, XSLT-страница форматирует содержимое, как в предыдущем примере.
Недостатком выполнения XSL-преобразования на стороне клиента для XML-данных, поступающих из внешнего источника, является то, что эти XML-данные являются динамическими только частично. Загружаемый и изменяемый XML-файл является, по существу, «мгновенным снимком» файла, находящегося в сети. Если исходный XML-файл в сети изменится, то его нужно будет повторно загрузить, привязать к XSLT-странице и снова опубликовать на собственном сервере. Браузер показывает те данные, которые он получает из XML-файла на вашем сервере, а не данные в исходном XML-файле.
XML-данные и повторяющиеся элементы
XSLT-объект «Повторяющаяся область» позволяет отображать на странице повторяющиеся элементы из XML-файла. Любую область, содержащую шаблон XML-данных, можно превратить в повторяющуюся область. Наиболее часто используются такие области, как таблица, строка таблицы или несколько строк таблицы.
В следующем примере показано, как XSLT-объект «Повторяющаяся область» применен к строке таблицы, где отображены сведения из меню ресторана. В первой строке отображаются 3 различных элемента из XML-схемы: пункт, описание и цена. Когда XSLT-объект «Повторяющаяся область» применяется к строке таблицы, страница обрабатывается сервером приложений или браузером, при этом таблица повторяется и в каждую новую строку таблицы вставляются уникальные данные.
Когда XSLT-объект «Повторяющаяся область» применяется к элементу в окне документа, вокруг повторяющейся области появляется тонкий серый контур с вкладками. При предварительном просмотре в браузере («Файл» > «Просмотреть в браузере») серый контур исчезает и выбранная область разворачивается с отображением указанных повторяющихся элементов XML-файла, как на предыдущей иллюстрации.
Когда на страницу добавляется XSLT-объект «Повторяющаяся область», длина местозаполнителя для XML-данных в окне документа усекается. Это происходит потому, что Dreamweaver обновляет выражение XPath (языка XML Path) для шаблона XML-данных так, чтобы оно соответствовало пути повторяющегося элемента.
Например, приведенный ниже код относится к таблице с 2 динамическими шаблонами, при этом XSLT-объект «Повторяющаяся область» к этой таблице не применялся.
Следующий код соответствует той же самой таблице, но с примененным XSLT-объектом «Повторяющаяся область».
Предварительный просмотр XML-данных
Когда для просмотра XML-данных, вставленных в XSLT-фрагмент или на целую XSLT-страницу, используется пункт меню «Просмотреть в браузере» («Файл» > «Просмотреть в браузере»), то в разных ситуациях преобразование выполняют разные алгоритмы. Для динамических страниц с XSLT-фрагментами преобразование всегда выполняет сервер приложений. В других случаях выполнять преобразование может либо Dreamweaver, либо браузер.
В следующей таблице приведены случаи применения пункта меню «Просмотреть в браузере», а также алгоритмы, выполняющие соответствующее преобразование.
Тип просматриваемой в браузере страницы
Механизм, выполняющий преобразование данных