Newcomposers.ru

IT Мир
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Подключить 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-страницу), Internet Explorer проверяет, является ли документ корректно сформированным, а также, если документ включает объявление типа документа — является ли документ валидным. Если документ содержит ошибку (не является валидным), Internet Explorer просто не будет отображать данные XML, не выводя сообщение об ошибке. Если документ содержит DTD (объявление типа документа), вы должны исчерпывающе описать все возможные элементы (спецификацию содержимого «ANY» использовать нельзя).

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

Основные шаги при связывании данных:


    Установка связи XML-документа с HTML-страницей, на которой вы хотите отобразить данные XML. Этот шаг реализуется включением HTML-элемента с именем XML в HTML-страницу:

Сцепление HTML-элементов с XML-элементами, например:

HTML-элемент с именем XML называется фрагментом данных. Весь текст XML-документа в принципе может быть помещён между начальным и конечным тэгами XML:

Однако согласно идеологии XML собственно данные (XML-документ) должны храниться отдельно от информации по их форматированию и обработке. Поэтому как правило HTML-элемент с именем XML (фрагмент данных) остаётся пустым и содержит только идентификатор объекта DSO и URL XML-документа, который находится в отдельном файле. Идентификатор фрагмента данных (атрибут ID) используется для доступа к XML-документу с HTML-страницы и должен быть уникальным.

Сцепление HTML-элементов с XML-элементами осуществляется двумя основными способами:

  • Табличное сцепление. Сцепление HTML-элемента TABLE с данными XML, так что в таблице автоматически отображается весь набор записей, принадлежащий XML-документу.
  • Сцепление по отдельным записям. Сцепление нетабличных HTML-элементов (например, элементов SPAN) с XML-элементами таким образом, что за один раз отображается только одна запись.

Табличное сцепление данных

При табличном сцеплении Internet Explorer берёт на себя бóльшую часть работы. Вам не нужно писать сценарии. Только если вы выбрали режим пролистывания, вам потребуется включить несколько вызовов простых функций. Кроме того, вы можете использовать вложенные HTML-таблицы для отображения XML-документа, содержащего иерархический набор записей.

Если данные XML-документа организованы в виде простого набора записей, т.е. если корневой элемент содержит множество элементов («записей»), каждый из которых содержит одинаковый набор элементов («полей»), а каждое «поле» содержит уже только символьные данные, вы можете использовать один единственный HTML-элемент TABLE для отображения XML-документа. Пример такого XML-документа:

Публикация XML-данных в форматах HTML и PDF с помощью одной таблицы стилей XSLT

Простое и быстрое преобразование XML-данных в форматы HTML и PDF

Предварительные условия

Для освоения материала данной статьи весьма полезным является знакомство с XML и с другими стандартами организации W3C. Чтобы выполнить примеры из этой статьи, необходимо установить СУБД eXist, а также eXist-функцию расширения XQuery для цифровой публикации. См. раздел Ресурсы.

Хранение данных в рамках такой архитектуры, как XForms/REST/XQuery [XRX], сегодня является обычным явлением (см. раздел Ресурсы). Хранящиеся таким образом данные можно запрашивать, извлекать и преобразовывать в желаемый формат. Кроме того, разработчики веб-приложений могут предоставлять пользователям возможности для извлечения данных в формате HTML (для просмотра в своих веб-браузерах) или в виде PDF-файлов (с целью загрузки для последующего использования).

В этой статье показано, каким образом можно преобразовать XML-данные в HTML, затем из HTML в XSL-FO, и, наконец, из XSL-FO в PDF с помощью функции расширения XQuery, основанной на инструменте CSSToXSLFO (см. раздел Ресурсы).

Преобразование XML-данных в другие форматы

Часто используемые сокращения
  • CSS: Cascading stylesheet (Каскадная таблица стилей)
  • HTTP: Hypertext Transfer Protocol (Протокол передачи гипертекстовых файлов)
  • JAR: Java-архив
  • LDAP: Lightweight Directory Access Protocol (протокол LDAP)
  • SQL: Structured Query Language (Язык структурированных запросов)
  • W3C: World Wide Web Consortium (консорциум W3C)
  • XSL-FO: Extensible Stylesheet Language Formatting Objects (Расширяемый язык таблиц стилей — Объекты форматирования)
  • XSLT: Extensible Stylesheet Language Transformations(Расширяемый язык преобразований таблиц стилей — Преобразования)

Как правило, для преобразования данных из XML в HTML и в XSL-FO требуются две XSL-таблицы стилей: одна таблица для преобразования из XML в HTML и другая таблица стилей XSL-FO для преобразования HTML в XSL-FO-документ, который затем преобразуется в PDF с помощью процессора XSL-FO. Другими словами, для такой среды, как веб-приложение, генерирующее отчеты в форматах HTML и PDF, разработчику необходимо написать новую таблицу стилей XSLT, которая преобразует данные в HTML, а затем написать, отладить и сопровождать соответствующую таблицу стилей XSL-FO. Поддержание этих таблиц стилей может оказаться трудным делом, а работа с технологией XSL-FO также далеко не проста. К счастью, отчеты не обязаны быть изощренными, поэтому их разметку можно с легкостью выразить с помощью CSS-файла. Затем такой CSS-файл можно обработать с помощью утилиты CSSToXSLFO , которая способна генерировать нужный XSL-FO-документ после написания лишь небольшого объема программного кода.

Этот процесс и другие подобные ситуации идеально подходят для применения описываемого в данной статье подхода — написания XSLT-таблицы стилей, которая преобразует XML в HTML, с последующим включением в нее нескольких дополнительных CSS-инструкций, позволяющих этой таблице осуществлять преобразование HTML в XSL-FO, а затем в PDF.

Утилита CSSToXSLFO

Утилита CSSToXSLFO поддерживает преобразования XML-документа вместе с CSS-таблицей стилей версии 2 (CSS2) в XSL-FO-документ. Чтобы использовать эту утилиту, я разработал функцию расширения XQuery для XML-СУБД eXist в виде фрагмента модуля расширения XQuery для цифровой публикации.

Эта утилита обрабатывает большую часть спецификаций CSS2. Для поддержки специфических особенностей XSL-FO эта утилита предоставляет несколько CSS-инструкций расширения, которые обычно игнорируются браузерами. Используйте эти свойства в правиле @page раздела @media в таблице стилей CSS. Эти свойства связаны с такими артефактами страницы, как регионы, нумерация, ссылки, заголовки, именованные строки, переносы, сноски, внешние графические элементы и нетипичные элементы. Обязательно просмотрите руководство по утилите CSSToXSLFO (см. раздел Ресурсы) для получения дополнительной информации об этом инструменте и изучения рекомендаций по совершенствованию создаваемой вами таблицы стилей XSLT.

XML-СУБД eXist

eXist-db — это система управления базами данных (СУБД) с открытым исходным кодом, построенная полностью на XML-технологиях (XML-СУБД). Она поддерживает, помимо других стандартов, XQuery, XPath и XSLT. СУБД eXist хранит данные согласно XML-модели данных и обладает высокой степенью совместимости со стандартом XQuery. Хранящиеся данные обрабатываются с помощью XQuery с использованием индекса. Кроме того, эта СУБД поддерживает полнотекстовый индекс на основе Apache Lucene.

XQuery-механизм, применяющийся в СУБД eXist, является расширяемым; соответственно в состав eXist входят различные модули расширения XQuery. Эти модули поддерживают следующие функции расширения XQuery.

  • Глобальный кэш пар «ключ-значение»
  • Разнообразные операции сжатия
  • Дополнительные операции с типами «дата/время»
  • Разнообразные операции с файлами и каталогами
  • HTTP-запросы (XPath-модуль)
  • Операции, применяемые к изображениям, хранящимся в базе данных (получение размеров изображения, создание миниатюр, изменение размеров изображения)
  • Применение интерфейса Java Naming and Directory Interface для доступа к таким каталогам, как LDAP, и для манипулирования этими каталогами
  • Отправка электронных писем в текстовом формате или в формате HTML
  • Календарное планирование выполнения заданий и управление существующими заданиями
  • Выполнение SQL-операций с реляционной СУБД
  • Выявление различий между XML-узлами
  • Представление XSL-FO
  • Функциональность XProc
  • Криптографические операции

И модуль eXist, и утилита CSSToXSLFO написаны на языке Java. На момент написания данной статьи модуль eXist позволяет использовать в качестве XSL-FO-процессора процессор Apache Formatting Objects Processor (FOP) или процессор RenderHouse XEP. Посетите веб-сайт eXist для ознакомления с инструкциями по установке этой СУБД, которые помогут вам выполнить примеры из этой статьи.

eXist-модуль для цифровой публикации

В настоящее время eXist-модуль модуль для цифровой публикации находится в стадии разработки и со временем будет поддерживать большее количество функций. На данный момент этот модуль имеет функцию html-to-xslfo() , которая весьма полезна в случае применения подхода, описываемого в этой статье.

Цель этого модуля состоит в том, чтобы служить единым источником для всех функций расширения XQuery, необходимых для цифровой публикации, в том числе для преобразования между следующими форматами: DocBook, Open XML, DOC, DOCX, .html, PDF, TXT, RTF, PPT, PPTX, CSV. Для установки этого модуля в среде eXist выполните следующие шаги:

  1. Загрузите eXist-модуль для цифровой публикации в формате JAR, а затем скопируйте его в каталог $EXIST_HOME/lib/extensions.
  2. Загрузите CSS-файл2xslfo1_6_2.jar, а затем скопируйте его в каталог $EXIST_HOME/lib/user.
  3. Добавьте в раздел встроенных модулей в файле $EXIST_HOME/conf.xml.

Примеры

В этом разделе анализируется использование утилиты CSSToXSLFO реализованной в eXist-модуле расширения XQuery для цифровой публикации. При решении этой задачи используйте XML-данные, представленные в листинге 1, а также таблицу стилей XSLT (xml-to-html.xsl), включенную в пример кода (см. раздел Загрузка.

Примечание: Чтобы упростить восприятие этой статьи, я не привожу в ней все содержимое используемой таблицы стилей XSLT. Вместо этого я показываю лишь те элементы, которые делают эту таблицу стилей пригодной для преобразования XML в HTML и в PDF.

Примеры будут загружены в XML-СУБД eXist в виде коллекции с именем html-and-pdf-single-stylesheet расположенной в корневой коллекции eXist — это позволит вам просмотреть каждый пример в своем браузере. Например, чтобы просмотреть пример 1, введите в адресной строке своего браузера следующий URL-адрес (предполагается, что СУБД eXist установлена на локальной машине).

Чтобы значительно полнее использовать функциональные возможности инструмента CSSToXSLFO вам не потребуется никакой другой XQuery-код, кроме кода, показанного в листинге 2 и листинге 3. Этот код представляет XML-данные в формате HTML и в формате PDF соответственно. Для дальнейшего совершенствования PDF-документов необходимо добавить CSS-инструкции в CSS-раздел таблицы стилей XSLT.

Листинг 1. XML-документ, представляющий собой сводку выставленных счетов-фактур (файл xml-data.xml в примерах кода)

Первый пример (см. листинг 2), представляет собой XQuery-скрипт, который преобразует XML-данные, представленные в листинге 1 в формат HTML. Этот скрипт использует eXist-функцию transform:transform() , которая, в свою очередь, преобразует XML-данные с помощью таблицы стилей XSLT и (при желании) параметров для преобразования. Вы можете написать таблицу стилей XSLT в соответствии со спецификацией XSLT 1.0 (средствами Apache Xalan) или в соответствии со спецификацией XSLT 2.0 (например, средствами Saxon).

Листинг 2. XQuery-скрипт, преобразующий XML-данные в формат HTML (файл example-01.xql в примерах кода)

На рисунке 1 показан результирующий HTML-документ, отображенный в моем браузере. Этот HTML-документ демонстрирует сведения по трем счетам-фактурам с использованием шрифта без засечек. (Перейдите по ссылке: Текстовая версия форматированного контента, представленного на рис. 1 и на рис. 2).

Рисунок 1. Результат преобразования в формат HTML

Сначала XML-данные преобразуются в формат HTML, как в предыдущем примере. Результирующий HTML-документ содержит все CSS-инструкции, необходимые для представления HTML-документа в желаемом виде, а также специфические CSS-инструкции расширения для CSSToXSLFO , которые позволяют задействовать более изощренные функции XSL-FO.

Для простого сценария применения который описывается этой статье, такие инструкции расширения нам не нужны. Утилита CSSToXSLFO преобразует HTML-документ в XSL-FO-документ, который, в свою очередь, генерирует PDF-документ, весьма похожий на HTML-документ.

После этого мы преобразуем результирующий HTML-документ в XSL-FO-документ с помощью функции html-to-xslfo() , а затем генерируем PDF-документ (см. листинг 3). Для создания PDF-документа используется функция render() eXist-модуля xslfo .

Листинг 3. XQuery-скрипт, преобразующий XML-данные в формат PDF (файл example-02.xql в примерах кода)

На рисунке 2 показан результирующий PDF-документ, отображенный в моем браузере. Этот PDF-документ демонстрирует сведения по трем счетам-фактурам с использованием шрифта с засечками. (Перейдите по ссылке: Текстовая версия форматированного контента, представленного на рис. 1 и на рис. 2.)

Рисунок 2. Результат преобразования в формат PDF

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

Листинг 4. CSS-инструкции для аналогичного представления XML-данных в формате HTML и в формате PDF

Заключение

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

Отображение XML с помощью CSS

XML расшифровывается E xtensible M arkup L anguage. Это динамический язык разметки. Он используется для преобразования данных из одной формы в другую форму.
Файл XML может быть отображен двумя способами. Это следующие: —

  1. Каскадная таблица стилей
  2. Расширяемое преобразование языка таблиц стилей

Отображение XML-файла с использованием CSS:
CSS может использоваться для отображения содержимого документа XML в четкой и точной форме. Это дает дизайн и стиль всему документу XML.

  • Основные этапы определения таблицы стилей CSS для XML:
    Для определения правил стиля для документа XML необходимо сделать следующее:
    1. Определите правила стиля для текстовых элементов, таких как font-size, color, font-weight и т. Д.
    2. Определите каждый элемент как блок, встроенный элемент или элемент списка, используя свойство display CSS.
    3. Определите названия и выделите их жирным шрифтом.
  • Связывание XML с CSS:
    Чтобы отобразить XML-файл с помощью CSS, свяжите XML-файл с CSS. Ниже приведен синтаксис для связи XML-файла с помощью CSS:
  • Пример 1
    В этом примере создается файл XML, содержащий информацию о пяти книгах и отображающий файл XML с использованием CSS.
    • XML-файл:
      Создание Books.xml как: —

    xml version = «1.0» encoding = «UTF-8» ?>

    xml-stylesheet type = «text/css» href = «Rule.css» ?>

    heading >Welcome To GeeksforGeeks heading >

    title >Title -: Web Programming title >

    author >Author -: Chrisbates author >

    publisher >Publisher -: Wiley publisher >

    edition >Edition -: 3 edition >

    price > Price -: 300 price >

    title >Title -: Internet world-wide-web title >

    author >Author -: Ditel author >

    publisher >Publisher -: Pearson publisher >

    edition >Edition -: 3 edition >

    price >Price -: 400 price >

    title >Title -: Computer Networks title >

    author >Author -: Foruouzan author >

    publisher >Publisher -: Mc Graw Hill publisher >

    edition >Edition -: 5 edition >

    price >Price -: 700 price >

    title >Title -: DBMS Concepts title >

    author >Author -: Navath author >

    publisher >Publisher -: Oxford publisher >

    edition >Edition -: 5 edition >

    price >Price -: 600 price >

    title >Title -: Linux Programming title >

    author >Author -: Subhitab Das author >

    publisher >Publisher -: Oxford publisher >

    edition >Edition -: 8 edition >

    price >Price -: 300 price >

    В приведенном выше примере Books.xml связан с Rule.css, который содержит соответствующие правила таблицы стилей.

    CSS FILE:
    Создание Rule.css как: —

    heading, title, author, publisher, edition, price <

  • Выход :
  • Пример 2
    В этом примере создается файл XML, который содержит информацию о различных разделах в Geeks for Geeks и темах, которые они содержат, и после этого отображает файл XML с помощью CSS.
    • XML-файл:
      Создание Section.xml как: —

    xml version = «1.0» encoding = «UTF-8» ?>

    xml-stylesheet type = «text/css» href = «Geeks.css» ?>

    title >Hello Everyone! Welcome to GeeksforGeeks title >

    Подключить xml к html

    Для того, чтобы работать с данным документом, вам необходимо располагать как минимум браузером Internet Explorer версии 5.0 и выше. При этом будут работать некоторые из приведенных в тексте примеров.

    Для того, чтобы у вас работали все примеры, необходимо установить XML-парсер версии 3. Если пример работает только под управлением XML-парсера версии 3, то в каждом случае это оговаривается особо. Отметим, что версии IE вплоть до 5.5 используют более ранние версии парсера, поэтому устанавливать его все равно придется. О более старших версиях IE узнайте самостоятельно.
    Дистрибутив XML-парсера версии 3 можно найти по адресу http://msdn.microsoft.com/ XML/ XMLDownloads/ default.aspx.
    После установки парсера вам нужно будет зарегистрировать его в реестре. Для этого в командной строке необходимо выполнить команду: regsvr32 msxml3.dll . Затем необходимо сообщить IE, что вы намерены использовать этот парсер. Для этого нужно запустить утилиту xmlinst . Утилиту xmlinst можно найти по адресу http://msdn.microsoft.com/ library/ default.asp?url=/ downloads/ list/ xmlgeneral.asp. Вы можете также попробовать найти ответы на вопросы об установке XML-парсера по адресу http://www.netcrucible.com/xslt/msxml-faq.htm.

    А теперь перейдем к основной части нашего документа.

    Введение

    Рассмотрим простой пример XML-файла (ex01.xml).

    «Заметки об XSL»
    Леонов Игорь Васильевич

    Если мы откроем этот файл в браузере Internet Explorer, то мы увидим тот же самый текст, который приведен выше, вместе со всеми тегами и служебной информацией. Но нам не нужны теги и служебная информация! Мы хотим видеть только ту информацию, которая относится к делу, а при помощи тегов — управлять внешним видом этой информации. Эта задача решается легко и просто: необходимо к XML-файлу добавить шаблон преобразования — XSL-файл.

    Перепишем наш XML-файл в следующем виде (ex01-1.xml).

    «Заметки об XSL»
    Леонов Игорь Васильевич

    И создадим XSL-файл ex01-1.xsl. Текст файла приведен ниже.

    Если мы теперь откроем файл ex01-1.xsl в браузере Internet Explorer, то мы увидим, что наша задача решена, — на экране осталась только необходимая нам информация, все теги исчезли. Результат, который вы получите на экране браузера, приведен ниже.

    «Заметки об XSL»

    Леонов Игорь Васильевич

    Легко также увидеть, что порядок вывода строк у нас определяется только содержанием шаблона преобразования — XSL-файла. При необходимости шаблон можно легко поменять, абсолютно не меняя наш основной XML-файл.

    Перепишем XML-файл. Информационную часть изменять не будем, а шаблон укажем другой ex01-2.xml.

    «Заметки об XSL»
    Леонов Игорь Васильевич

    Создадим XSL-файл ex01-2.xsl. Текст файла приведен ниже.

    Если мы теперь откроем файл ex01-2.xsl в браузере Internet Explorer, то результат будет другим.

    Леонов Игорь Васильевич

    «Заметки об XSL»

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

    Первый способ требует трудоемкого программирования, второй способ значительно увеличивает нагрузку на сервер базы данных, производительность которого часто является узким местом системы, — пользователю всегда хочется получать результаты быстрее.

    XML и XSL — это исчерпывающее решение описанной выше проблемы. Фактически XML-страница — это и есть временный буфер для результатов запросов. Только вместо нестандартного и трудоемкого программирования мы теперь используем стандартный механизм XSL.

    Есть и еще одно соображение, которое может быть существенным для разработчиков баз данных. Большинство современных СУБД могут форматировать результаты запроса к базе данных в виде XML-файла. То есть при построении интерфейса пользователя в рамках технологии XML и XSL мы добиваемся определенной независимости от поставщика СУБД. В части организации вывода — практически полной независимости. А эта часть весьма велика в большинстве прикладных систем, ориентированных на работу с базами данных. Конечно, помимо вывода есть еще ввод и серверная обработка бизнес-логики, но здесь вам придется искать какие-то иные решения.

    Первые шаги

    Разберем теперь более подробно первый пример. Напомним его текст.

    «Заметки об XSL»
    Леонов Игорь Васильевич

    Первая строка информирует браузер о том, что файл имеет формат XML. Атрибут version является обязательным. Атрибут encoding не является обязательным, но если у вас в тексте есть русские буквы, то необходимо вставить этот атрибут, в противном случае XML-файл просто не будет обрабатываться, — вы получите сообщение об ошибке.

    Следующие строки — это тело XML-файла. Оно состоит из элементов, которые в совокупности образуют древовидную структуру. Элементы идентифицируются тегами и могут быть вложены друг в друга.

    Элементы могут иметь атрибуты, значения которых тоже могут обрабатываться в соответствии с шаблоном.

    На верхнем уровне XML-файла всегда находится один элемент. То есть файл вида

    «Заметки об XSL»
    Леонов Игорь Васильевич

    «Введение в CSP»
    Леонов Игорь Васильевич

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

    «Заметки об XSL»
    Леонов Игорь Васильевич

    «Введение в CSP»
    Леонов Игорь Васильевич

    Отметим, что имена тегов чувствительны к регистру символов. Подробнее об этом можно прочесть в любой книге по XML — элементам и атрибутам в этих книгах уделяется достаточно большое внимание.

    Перейдем теперь к шаблону преобразования — к XSL-файлу. Задача XSL-файла — преобразовать дерево XML-файла в другое дерево, которое, например, будет соответствовать формату HTML и может быть изображено на экране браузера с учетом форматирования, выбора шрифтов и т.п.

    Для того, чтобы браузер выполнил необходимое преобразование, нужно в XML-файле указать ссылку на XSL-файл

    Рассмотрим теперь текст XSL-файла

    Первая строка файла содержит тег элемента xsl:stylesheet . Атрибуты элемента — номер версии и ссылка на пространство имен. Эти атрибуты элемента xsl:stylesheet являются обязательными. В нашем случае пространство имен — это все имена элементов и их атрибутов, которые могут использоваться в XSL-файле. Для XSL-файлов ссылка на пространство имен является стандартной.

    Заметим, что XSL-файл является одной из разновидностей XML-файлов. Он не содержит пользовательских данных, но формат его тот же самый. Файл содержит элемент верхнего уровня xsl:stylesheet , а далее идет дерево правил преобразования.

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

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

    В первом примере мы посмотрели, как с помощью элемента xsl:value-of можно вывести в HTML-формате содержание элемента (текст, заключенный между тегами). Теперь мы посмотрим, как при помощи того же самого элемента можно вывести значение атрибута элемента.

    Рассмотрим следующий XML-файл ex02-1.xml

    В этом файле информация хранится не в содержании элементов, а в виде значений атрибутов. Файл ex02-1.xsl имеет вид

    Обратите внимание на синтаксис ссылки на атрибут элемента — //dog/@name . Имя элемента и имя атрибута разделены парой символов » /@ «. В остальном синтаксис тот же самый, что и для ссылки на содержание элемента.

    Результат имеет следующий вид:

    Собака: Шарик. 18 кг, рыжий с черными подпалинами.

    Обратим теперь внимание на следующий момент. В XSL-файле мы никак не использовали элемент tutorial . На самом деле можно было использовать полный путь. Перепишем наш XML-файл, увеличив глубину дерева (ex02-2.xml)

    Файл ex02-2.xsl имеет вид

    Результат будет тем же самым.

    Собака: Шарик. 18 кг, рыжий с черными подпалинами.

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

    На этом мы закончим разбор примеров с выводом одиночных значений и перейдем к выводу табличной информации — к выводу результатов запроса.

    Вывод результатов запроса

    До тех пор, пока мы работаем с несколькими реквизитами одного и того же объекта, разницы между XML и HTML практически нет. Однако стоит нам перейти к информации, содержащей несколько строк, как выгоды XML становятся очевидны. Но прежде чем перейти к выгодам, научимся выводить на экран простую таблицу.

    Рассмотрим следующий XML-файл — ex03.xml. Текст его приведен ниже.

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

    Простая таблица

    Первый шаг — это, как всегда, добавление шаблона преобразования. Модифицируем наш файл, добавив в него ссылку на шаблон. В результате получим файл ex03-1.xml.

    В этот файл добавлен шаблон преобразования ex03-1.xsl.

    Рассмотрим этот шаблон подробнее. Вот его текст.

    Первая строка — новая для вас в XSL-файле (но не в XML-файлах!). Она говорит о том, что в XSL-файле нужно нормально воспринимать русские буквы. Без этой строки браузер не сможет корректно обработать русский текст в XSL-файле. Следующие две строки шаблона являются уже привычными. Следующие шесть строк — это строка, содержащая заголовки столбцов таблицы. Конструкция для извлечения текста заголовков таблицы вам уже знакома. А вот десятая строка тоже является новой:

    Этот элемент шаблона позволяет выбрать и просмотреть все группы информации, полный путь к которым задается списком тегов «tutorial/enimals/dogs/dog» . Обратите внимание — путь задается полностью, ни один из тегов опустить нельзя. Далее в ячейки таблицы помещается информация о наших собаках. В отличие от первых примеров путь к соответствующей информации тоже задается полностью. Попробуем, например, разместить информацию о кличке чуть-чуть иначе ex03-2.xml:

    Если мы в соответствующем XSL-файле поставим ссылку , то в соответствующем столбце никакой клички мы не увидим. Ссылка должна быть полной — . Вы можете самостоятельно поэкспериментировать с файлом ex03-2.xsl. Правильный результат приведен ниже.

    IT-блог о веб-технологиях, серверах, протоколах, базах данных, СУБД, SQL, компьютерных сетях, языках программирования и создание сайтов.

    Конфликты в XML. Пространство имен в XML. Способы именования пространства имен в XML. Как использовать HTML теги в XML документах

    • 04.06.2012
    • XML и XLST
    • Один комментарий

    Здравствуйте, уважаемые посетители моего скромного блога для начинающих вебразработчиков и web мастеров ZametkiNaPolyah.ru. Сегодня я продолжу рубрику Заметки о XML и XLST. И хочу поговорить о пространстве имен в XML, что такое пространство имен и для чего оно используется, так же затрону тему конфликта имен в XML документе и как бороться с этим явлением, поговорим о том как задать пространство имен в XML документе, сразу скажу, что есть два способа задания пространства имен, первый при помощи атрибута xmlns, а второй при помощи префиксов, посмотрим различие между двумя этими способами. Поговорим о рекомендованных способах именования пространства имен в XML, их так же два. Первый заключается в использование URN, а второй в использование URL. Разберемся, какой из способов, когда и как применяется. Так же мы поговорим о том, как задать пространство имен XML атрибутам. А так же разберемся как можно использовать HTML теги в XML документах и что для этого нужно сделать.

    Конфликты в XML документах. Пространство имен в XML документах

    Очень важным моментом в XML является конфликт имен тэгов, ведь имена тегов мы придумываем сами, и нет гарантии, что кто-нибудь другой в своем проекте не будет использовать точно такие же имена для своих тегов, как и мы. Например, у меня есть книжный магазин и решил я записывать название книг внутрь тега … , а какой-нибудь Василий Иванович Пупкин использует этот тег для своих каких-то целей, к примеру, продает он аудио пластинки и внутрь тега записывает название фильмов. И все это будет хорошо работать, пока не решим мы с Пупкиным объединиться и вместе продавать книги и пластинки. Получается ситуация, в которой один и тот же XML элемент имеет одинаковое имя, но имеет разный смысл. И наступает процесс именуемый конфликт имен.

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

    Если до сих пор непонятно, то можно привести более конкретный пример – файловая система. Все наверное знают, что в одной папке не может находиться два файла с одинаковым названием и расширением. Но можно ведь создать две папки, в одну папку поместить файл document.xml и в другую папку поместить файл document.xml и эти два файла будут прекрасно существовать, и работать, имея различное содержание. Эти два файла для операционной системы будут разные так как она учитывает не только имя файла, но и путь к этому файлу, то есть для операционной системы имя файла состоит из непосредственного имени файл плюс полный путь к этому файлу. Вот как раз из-за этого пути к файлу имена становятся разными и не мешают друг другу.

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

    Рекомендации w3.org при именовании пространства имен

    Да, w3.org попыталась как-то ограничить процесс придумывания имен для пространства имен и рекомендует нам консорциум два способа именования пространства имен. Обратите внимание, что это не стандарт, а просто рекомендация. Если вы решили дать своему пространству имен какое-то имя, ну например moe-prostranstvo-imen, то начинать это имя рекомендуется с последовательности urn:, а затем уже имя пространства.

    Читать еще:  Настройка vpn канала
Ссылка на основную публикацию
Adblock
detector