Sdscompany.ru

Компьютерный журнал
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Преобразовать html в 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 для ознакомления с инструкциями по установке этой СУБД, которые помогут вам выполнить примеры из этой статьи.

Читать еще:  Data model html

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. Этот подход особенно полезен в ситуациях, когда обрабатываемые отчеты или документы имеют простое стилевое решение.

Глава 6 Преобразование в XML, HTML, XHTML, RTF

Преобразование в XML, HTML, XHTML, RTF

Предположим, web-узел вашей компании использует основанное на XML программное обеспечение фирмы Commerce One, в котором для безопасной коммуникации через Интернет применяется Java Message Service (JMS). Ваша деятельность была настолько успешной, что вы только что поглотили своего конкурента. К сожалению, для своего узла в Интернете ваш бывший конкурент использует другой основанный на XML продукт, RosettaNet. Как вам теперь преобразовать заказ на покупку xCBL Commerce One, написанный на XML, в заказ на покупку RosettaNet, также написанный на XML, но совершенно на другом диалекте?

Читать еще:  Html form input hidden

Разумеется, применить XSLT. Такого рода XML-XML преобразования становятся все более и более распространенными. Все больше компаний применяют JMS для безопасных коммуникаций через Интернет, и поскольку JMS выполняется в Java, будет разумным связать JMS с основанными на Java процессорами XSLT, такими, как Xalan или Saxon.

В этой книге мы уже рассматривали преобразование XML в HTML, XML и простой текст, но в текущей главе сделаем это более подробно. Мы также рассмотрим здесь новый тип преобразования — из XML в JavaScript. В главе 10 мы познакомимся с преобразованиями из XML в базу данных на основе SQL, а в главе 11 — с преобразованиями из XML в XSL-FO.

Основная задача XSLT состоит не просто в замене одного элемента на другой, но в полной реорганизации содержимого XML-документа. Например, вам может потребоваться реорганизовать planets.xml в терминах плотности планет при помощи XSLT для создания нового XML-документа:

Мы рассмотрим преобразование, которое полностью меняет содержимое planets.xml , оставляя только небольшой код HTML и код JavaScript для отображения нескольких кнопок в браузере.

До сих пор мы создавали новые элементы только при помощи элементов буквального результата, то есть рассматривая новые элементы как текст и встраивая их в таблицу стилей. Но, как мы увидим в этой главе, не всегда возможно знать имена создаваемых новых элементов. Можно состыковать вместе создаваемые элементы по ходу дела, рассматривая их как сырой текст, но это явная недоработка, поскольку разметка трактуется как текст. В этой главе мы начнем применять элементы XSLT , , и для создания новых элементов, атрибутов, инструкций обработки и комментариев на этапе выполнения. Хорошее знание этих элементов необходимо при реорганизации содержимого XML.

Мы также рассмотрим использование режимов XSLT для осуществления нескольких преобразований с документом и сориентируемся, как применять только один из нескольких подходящих шаблонов.

В большей части этой главы исследуются возможности элемента , с краткого обзора которого я и начну.

Похожие главы из других книг:

XHTML 1: HTML по правилам XML

XHTML 1: HTML по правилам XML Следующая после HTML 4.01 версия языка называлась XHTML 1.0. «X» означало «экстремальный», и каждый веб-разработчик, когда начинал произносить название языка, был строго обязан скрещивать руки в форме буквы «Х».Ладно, на самом деле нет. «X» значило eXtensible,

XHTML 2: терпению пришел конец

XHTML 2: терпению пришел конец Если бы персонаж Дастина Хоффмана в фильме «Выпускник» был веб-разработчиком, W3C сказал бы ему одно слово, ровно одно: XML.С точки зрения W3C разработка HTML закончилась на версии 4. Они начали работать над XHTML 2, который был спроектирован так, чтобы

XHTML умер: да здравствует синтаксис XHTML

XHTML умер: да здравствует синтаксис XHTML Туман неразберихи начал рассеиваться в 2009 году. W3C объявил, что договор на XHTML 2 не будет продлеваться. Формат был мертвым уже несколько лет, и это объявление стало только официальным свидетельством о смерти.Как ни странно, смерть XHTML 2

Глава 1 Правила построения HTML-страниц

Глава 1 Правила построения HTML-страниц 1.1. Общие понятия HTML1.2. Структура HTML-документаДля создания веб-страниц часто используется язык гипертекстовой разметки HTML. Конечно, каждый сайт индивидуален, но существуют общие правила построения HTML-страниц. Им обязательно нужно

Глава 9 Оформление HTML-документа средствами CSS

Глава 9 Оформление HTML-документа средствами CSS 9.1. Фон9.2. Генерируемое содержимое9.3. Автоматическая нумерация и списки9.4. Таблицы9.5. Интерфейс пользователя9.6. Поля и отступы9.7. Границы9.8. Работа с блокамиВ этой главе мы рассмотрим все возможности CSS по оформлению документа.

Глава 10 Введение в динамический HTML

Глава 10 Введение в динамический HTML 10.1. Браузер и HTML-документ10.2. Родительские и дочерние объекты10.3. Объекты браузера10.4. Объектная модель документа (DOM)Язык HTML позволяет создавать только статические веб-страницы, не обеспечивающие интерактивное взаимодействие с

Глава 13 Язык XHTML

Глава 13 Язык XHTML 13.1. Структура XHTML-документов13.2. Отличие XHTML от HTML13.3. Проблемы использования XHTMLИтак, в предыдущих главах книги вы изучили возможности HTML 4.01 и теперь готовы разрабатывать веб-страницы, основанные на этом языке гипертекстовой разметки. Язык HTML версии 4.01 в

13.1. Структура XHTML-документов

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

13.2. Отличие XHTML от HTML

13.2. Отличие XHTML от HTML Основным отличием документа XHTML от HTML 4.01 является жесткое требование к корректности документа с точки зрения стандартов языка XML. На протяжении истории развития языка HTML сложился подход, при котором допускались многочисленные вольности и отступления

13.3. Проблемы использования XHTML

13.3. Проблемы использования XHTML Прочитав эту главу, вы, вероятно, поняли, что перед разработчиками веб-страниц встала серьезная проблема: переход на новый язык XHTML значительно меняет сложившиеся подходы к их разработке.Во-первых, уже нельзя позволить себе многие вольности

Читать еще:  Php поиск по базе mysql

Глава 2. Основы веб-программирования с помощью языка HTML

Глава 2. Основы веб-программирования с помощью языка HTML Аббревиатура HTML знакома даже людям, которые по роду занятий далеки от веб-разработки. Она получила известность хотя бы потому, что адреса многих веб-страниц в Интернете заканчиваются расширением

Преобразования из XML в XHTML

Преобразования из XML в XHTML Хотя во многих книгах рассматриваются исключительно преобразования из XML в HTML, правда состоит в том, что консорциум W3C этому не очень-то рад. Консорциум пытался сместить акцент с HTML (который они первоначально стандартизировали) на свою новую

Вывод в формате XHTML

Вывод в формате XHTML W3C представил XHTML как последователя HTML, но ни в XSLT 1.0, ни в рабочем проекте XSLT 1.1 нет никакой специальной поддержки для преобразований из XML в XHTML. Предполагается, что надлежащая поддержка будет включена в XSLT 2.0. Тем не менее, при помощи процессоров XSLT все

HTML/XHTML, CSS, XML

HTML/XHTML, CSS, XML Аббревиатуры HTML/XHTML, CSS и XML – это Интернет технологии применяемые Joomla! Данные технологии стандартизированы консорциумом W3C (World Wide Web

HTML/XHTML

HTML/XHTML WWW (World Wide Web или Всемирная паутина) основана на HTML. HTML – это не язык программирования. HTML является языком описания и форматирования текста. Текст при этом состоит из различных структур: заголовков, списков, частей, выделенных жирным или наклонным шрифтом, таблиц и т.д.

Преобразование HTML в XML

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

HTML файлы содержит, таблиц, высота, изображения, П, Б или сильные теги, и т. д..

Я погуглил и нашел несколько приложений, но пока не смог их найти.

Не могли бы вы предложить способ конвертировать содержимое этих файлов в XML?

3 Ответа

Я успешно использовал утилиту командной строки tidy . На linux я быстро установил его с apt-get install tidy . Затем команда:

tidy -q -asxml —numeric-entities yes source.html >file.xml

дал файл xml,который я смог обработать с помощью процессора xslt. Однако мне нужно было правильно настроить xhtml1 dtds.

Это их домашняя страница: html-tidy.org (и наследственная: HTML Tidy )

Я действительно нашел способ преобразовать (даже плохой) html в хорошо сформированный XML. Я начал основывать это на функции DOM loadHTML. Однако в течение времени возникло несколько проблем, и я оптимизировал и добавил патчи для исправления побочных эффектов.

Теперь это также позволяет добавить больше html штук в один XML, который мне нужно было использовать самому. В общем его можно использовать так:

‘ будет красиво обыгрываться в хорошо сформированном XML как ’30’. Тег info root добавлен, так как он также позволит конвертировать ‘

‘, который не является XML, так как он не имеет ни одного корневого элемента. Однако если у вас html точно есть один корневой элемент, то дополнительный корневой тег можно пропустить.

С этим я получаю очень хороший XML из неструктурированного и даже испорченного HTML!

Я надеюсь, что это немного ясно и может помочь другим людям использовать его.

Помните, что HTML и XML-это два различных понятия в древе markup языков. Вы не можете точно заменить HTML на XML . XML можно рассматривать как обобщенную форму HTML, но даже это неточно. Вы в основном используете HTML для отображения данных и XML для переноса(или хранения) данных.

Похожие вопросы:

Я сделал приложение ‘RSS Feed’ через разбор XML. Теперь я хочу загрузить содержимое в UIWebView в подробном представлении, но не как общий браузер. Я знаю, что содержимое HTML может быть загружено в.

У меня есть преобразование Xml, которое мне нужно сделать, но у меня есть немного борьбы. Вход Xml выглядит следующим образом. .

Мне нужно преобразовать HTML документов (сгенерированных из DocBook XML документов) в язык разметки Wiki, в частности в язык разметки PM Wiki . Цель состоит в том, чтобы включить руководство по.

У меня есть несколько сущностей HTML в XML, возвращаемых веб-службой как тип XmlDocument . Мне нужно заменить их эквивалентными символами Юникода, прежде чем применять преобразование XSLT. XML.

У меня есть XML-файл и нужно создать HTML-файл с кодировкой Windows-1251, применив преобразование XSL. Проблема заключается в том, что символы Unicode из XSL-файла не преобразуются в HTML Unicode.

Мне нужно разобрать html для проекта и искать хороший парсер html или API, обеспечивающий преобразование из html в xml. Ждем предложений. спасибо всем.

Возможные дубликаты : Преобразование объектов XML/HTML в строку Unicode в Python HTML коды сущностей в текст Как преобразовать HTML сущностей в Unicode и наоборот в Python?

предположим, у меня есть xml внутри документа html, например

Ссылка на основную публикацию
ВсеИнструменты 220 Вольт
Adblock
detector