Софт

Xml в таблицу

Рейтинг: 4.8/5.0 (313 проголосовавших)

Категория: Windows

Описание

Xml в таблицу

заранее прошу прошения за такой увесистый вопрос не понял как можно уменьшит код файлов
есть отчет xml необходимо преобразовать таблицу xml
xml
http://depositfiles.com/files/v7m08tohx
xsl

вопрос следующем
1) как отсортировать по 'object_type' к примеру исключить 'Документ Revision'
2) пронумеровать отставшие после сортировки по порядку 1,2,3. в файле получаемом файле это колонка (Поз.)

примерный вид получаемого файла в Excel

Изменен:12 авг 2011 10:01

12 авг 2011 12:28

А вопрос-то в чем?

С уважением,
Евгений aka Skipy
www.skipy.ru
P.S. Я НЕ решаю задачи ЗА других!

12 авг 2011 12:40

Наверно не пометсился)

12 авг 2011 12:42

Наверно не пометсился)


Да вы совершено правы
как можно вместить их тут?))) xml и xsl
все поправил )))

15 авг 2011 19:46

UP
Форумчане помогите
я скоро об стену начну биться
вроде решение проблемы не сложное но мне пока не доеться она (((

Модераторы: Нет
Сейчас эту тему просматривают: Нет

2006 - 2016 © javatalks.ru
Powered by JCommune 3.7.3091.07d4870 byjtalks.org
Design withTwitter Bootstrap

Xml в таблицу:

  • скачать
  • скачать
  • Другие статьи, обзоры программ, новости

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

    Простая таблица / XML-XSLT

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

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

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

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

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

    Если мы в соответствующем XSL-файле поставим ссылку <xsl:value-of select="dogNick"/>, то в соответствующем столбце никакой клички мы не увидим. Ссылка должна быть полной - <xsl:value-of select="dogName/dogNick"/>. Вы можете самостоятельно поэкспериментировать с файлом ex03-2.xsl. Правильный результат приведен ниже.

    Оставить комментарий

    Как загрузить в Таблицу Значений XML файл

    Как загрузить в Таблицу Значений XML файл

    Ну вариантов много, например:

    1. Чтение XML посредством объекта "ПрочитатьXML":

    чтение=новый ЧтениеXML;
    чтение.ОткрытьФайл(сокрЛП(вхИмяФайла));
    пока чтение.Прочитать() цикл
    если Чтение.ТипУзла=ТипУзлаXML.НачалоЭлемента тогда
    пока Чтение.ПрочитатьАтрибут() цикл
    конеццикла;
    иначеесли Чтение.ТипУзла=ТипУзлаXML.Текст тогда
    иначеесли Чтение.ТипУзла=ТипУзлаXML.КонецЭлемента тогда
    конецесли ;
    конеццикла;

    Данный способ трудоемок, но зато самый быстрый.

    2. Вариант использовать ПОстроительDOM:

    чтение=Новый ЧтениеXML ;
    чтение.ОткрытьФайл(сокрЛП(вхИмяФайла));
    мДокументДОМ=мДОМ.Прочитать(чтение);
    чтение.Закрыть();

    В результате получим дерево которое можно обойти и сформировать ТаблицуЗначений. Но минус в том, что ПОстроительDOM не умеет работать с большими файлам. На моей практике файл в 50 мгб уже был проблемой.

    Редактировалось: 1 раз (Последний: 26 июня 2014 в 11:30)

    Загрузка данных из XML файла в Таблицу Значений и вывод в Табличный документ » XML, DBF, TXT, CSV » FAQ »

    Загрузка данных из XML файла в Таблицу Значений и вывод в Табличный документ


    Пример файла XML :
    Код


    <?xml version="1.0" encoding="windows-1251"?>
    <НДФЛ2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ВерсФорм="4.00001" ВерсПрог="НП 10.31" ИдФайл="ДОХОД_2НДФЛ">
    <Справка>
    <ОбщСвИЧ>
    <ГодДох>2006</ГодДох>
    <НомСпр>1</НомСпр>
    <ДатаСпр>26.03.2007</ДатаСпр>
    <ИФНСНА>7777</ИФНСНА>
    </ОбщСвИЧ>
    <ИстДох>
    <СвНАЮЛ>
    <ИННЮЛ>1234567890</ИННЮЛ>
    <КПП>12345678</КПП>
    <НаимОрг>ООО Рога и Копыта</НаимОрг>
    <ОКАТО>12345678901</ОКАТО>
    </СвНАЮЛ>
    </ИстДох>
    <ПолучДох>
    <ФИО>
    <Фамилия>Иванов</Фамилия>
    <Имя>Иван</Имя>
    <Отчество>Иванович</Отчество>
    </ФИО>
    <Статус>1</Статус>
    <ДатаРожд>24.01.1973</ДатаРожд>
    <Гражданство>643</Гражданство>
    <УдЛичн>
    <КодУдЛичн>21</КодУдЛичн>
    <СерНомДок>12 01 012345</СерНомДок>
    </УдЛичн>
    <АдрМЖРФ>
    <Индекс>123456</Индекс>
    <КодРегион>77</КодРегион>
    <Город>Энн г</Город>
    <Улица>Ленина ул</Улица>
    <Дом>99</Дом>
    <Корпус>5</Корпус>
    <Кварт>12</Кварт>
    </АдрМЖРФ>
    </ПолучДох>
    <СвДохСтав>
    <Ставка>35</Ставка>
    <ДохВыч>
    <НомМес>02</НомМес>
    <КодДоход>2610</КодДоход>
    <СумДоход>252.15</СумДоход>
    </ДохВыч>
    <ДохВыч>
    <НомМес>07</НомМес>
    <КодДоход>2760</КодДоход>
    <СумДоход>100.00</СумДоход>
    <КодВычет>503</КодВычет>
    <СумВычет>100.00</СумВычет>
    </ДохВыч>
    <ДохВыч>
    <НомМес>10</НомМес>
    <КодДоход>2760</КодДоход>
    <СумДоход>100.00</СумДоход>
    <КодВычет>503</КодВычет>
    <СумВычет>100.00</СумВычет>
    </ДохВыч>
    <СГДНалПер>
    <СГДСумм>252.15</СГДСумм>
    <ОблСумм>252.15</ОблСумм>
    <НИОблСумм>88</НИОблСумм>
    <НУОблСумм>88</НУОблСумм>
    <ВозврСуммПЛ>0</ВозврСуммПЛ>
    <ЗачСуммПЛ>0</ЗачСуммПЛ>
    <УдСуммПЛ>0</УдСуммПЛ>
    <ДолгНП>0</ДолгНП>
    <ДолгНА>0</ДолгНА>
    <ВзыскИФНС>0</ВзыскИФНС>
    </СГДНалПер>
    </СвДохСтав>
    </Справка>
    </НДФЛ2>

    Разместил: E_Migachev   Версии: | 7.x |   Дата: 01.03.2010   Прочитано: 14693

    Возможно, вас также заинтересует

    1C и Google Maps   10
    была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во.1C: Enterprise Development Tools   34
    И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем1Cv8.1CD - Файл данных достиг максимального размера!   3
    1С выдает предупреждение " Файл данных достиг максимального размера". Подскажите из - за чего это и как можно решить. Превышен размер файла, обычно это сообщение возникает, когда размер файла 1Cv8.1CD приближается к 10.1С 7.x. Как получить курсы валют с сайта НБУ http://www.bank.gov.ua/ за любую дату ?   2
    Функция ПолучитьТаблицуКурсовНБУ(ДатаКурса, Ежедневно = 1) // если в качестве второго параметра указать число отличное от 1 - получем валюты, которые котируются на ежемесячной основе Перем Reader, Url, Точки, HtmlTab, Строк, Р.Excel файл как Внешний источник данных   1
    Подключимся и загрузим из файла Excel данные в таблицу значений 1С. Сделать теперь это очень просто. 1. В конфигурации добавляет новый объект метаданных типа " Внешние источники данных" и назовем его просто " Excel".Посмотреть все результаты поиска похожих

    Парсер XML в дерево значений   4
    // Чтение XML НаСервере Функция ЧтениеXMLВДерево(Путь) Дерево = Новый ДеревоЗначений; Дерево.Колонки.Добавить(" Имя" ); Дерево.Колонки.Добавить(" Значение" ); XMLФайл = Новый ЧтениеXML; XMLФайл.ОткрытьФайл(Путь);.Создание XML файла выгрузки Работников организации с Группировкой по Подразделению   2
    Нужен XML файл выгрузки данных вида(выделю как код 8-рки, т.к. выделение xlm кода нет). xml version=" 1.0" encoding=" UTF-8". orgstructure department dep_id=" 7ebb913c-e9c6-11dc-a4f2-0017311416a1" dep_name=" генеральный директор" dep_codНедопустимые символы XML   2
    Ввести недопустимые символы в оболочке 1С Предприятия 8.х весьма затруднительно, но вот загрузить их из внешних источников вполне возможно (напр. файл обмена DBF). Чтобы избежать этого - при загрузке удаляем недопустимые.Импорт в 1С из текстовых файлов (TXT, CSV)   2
    Не редко возникает необходимость загрузить в справочники или документы 1С данные из текстового файла. Приведенный пример внешней обработки позволит преобразовать текстовый файл с известным разделителем данных в.Выгрузка картинок из базы 1С в XML   2
    В нынешнее время для электронного каталога или интернет-магазина необходимо выгружать не только информацию о цене и характеристиках товара, но и сопутствующие изображения. Хранящиеся в базе или связанные с.Посмотреть все в категории XML, DBF, TXT, CSV

    Слова упорядочены по частоте использования в тексте

    Полный каталог статей и программ для 1С: Предприятия 8

    Быстрое преобразование XML в Таблицу значений

    Разработчики которые начинают интегрировать 1С8 с внешними системами достаточно часто сталкиваются с необходимость чтения XML. В свое время для унификации обработки чтения была создана обработка разворачивающая дерево XML по определенному узловому элементу в таблицу значения, где имена колонок являются по сути путем к данным XPATH.

    Но такая схема устраивала всех только до определенного предела, по мере роста объёмов разбираемых файлов скорость перестала устраивать даже самых терпеливых пользователей, и этот механизм был переписан на C#, для передачи результата в 1с использовалась функция "ЗначениеИзФайла". Приложение является консольным, принимающим на вход следующие параметры:
    1. Путь к XML файлу

    2. Имя узлового элемента (элемент который развернётся в строку таблицы значений,)

    3. Имя файла в который будет записано сериализованное представление таблицы значений

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

    В случае если утилитка вложена в качестве макета в обработку то её можно вызвать следующей функцией

    Функция ПрочитататьВТЧXMLИерархВнеш(пСТрДанных,пТЗ,пИмяУзловогоЭлемента,пСубпуть = "") Экспорт
    лПуть = КаталогВременныхФайлов()+"CreatingTZFor1C.exe";
    Попытка
    ЭтотОбъект.ПолучитьМакет("CreatingTZFor1C").Записать(лПуть);
    Исключение
    лФайл = Новый Файл(лПуть);
    Если НЕ лФайл.Существует() Тогда
    Возврат Неопределено;
    КонецЕсли;
    КонецПопытки;

    лВремФайл = ПолучитьИмяВременногоФайла("xml");
    лЗаписьТекста = Новый ЗаписьТекста(лВремФайл);
    лЗаписьТекста.Записать(пСТрДанных);
    лЗаписьТекста.Закрыть();

    лВремРезФайл = ПолучитьИмяВременногоФайла("data");
    лТЧ = Новый ТаблицаЗначений;
    ЗначениеВФайл(лВремРезФайл,лТЧ);

    Если ПустаяСтрока(пСубпуть) Тогда
    лКоманда = """"+лПуть+""" """+лВремФайл+""" """+пИмяУзловогоЭлемента+""" """+лВремРезФайл+"""";
    Иначе
    лКоманда = """"+лПуть+""" """+лВремФайл+""" """+пИмяУзловогоЭлемента+""" """+лВремРезФайл+""" """+пСубпуть+"""";
    КонецЕсли;
    //КомандаСистемы(лКоманда,КаталогВременныхФайлов());
    ЗапуститьПриложение(лКоманда,КаталогВременныхФайлов(), Истина);

    пТЗ = ЗначениеИзФайла(лВремРезФайл);
    Возврат лВремРезФайл;
    КонецФункции

    И собственно вызов

    ТЧДанных = Новый таблицазначений;

    // лСтрРез - Строка с XML

    // Policy - Имя узла разворачиваемого в строку

    Такой финт ушами позволяет из XML файла весом более 17 МБ за 10 секунд положить в таблицу значений 6000 строк и 2700 колонок. Так что польза очевидна :-)

    Преобразование массива в XML (экспорт таблицы в файл XML)

    Комментарии

    # 1 Valeri, 24 Мар 2014 - 17:42.

    Хотелось бы создавать Xml также из массива таблицы, верхние строки которой будут заголовками (подзаголовками)в несколько уровней?

    Например:
    1 Уровень <ФайлПФР>
    . 2 Уровень <ИмяФайла>.
    . 2 Уровень <ЗаголовокФайла>.
    . 2 Уровень <ПачкаВходящихДокументов.ДоставочнаяОрганизация="БАНК">
    . 3 Уровень <ВХОДЯЩАЯ.ОПИСЬ>.
    . 3 Уровень <СПИСОК.НА.ЗАЧИСЛЕНИЕ>
    . 4 Уровень <НомерВпачке>2
    . 4 Уровень <СведенияОполучателе>
    . 5 Уровень <НомерВмассиве>1
    . 5 Уровень <НомерВыплатногоДела>930158
    . 5 Уровень <КодРайона>016-001-000
    . 5 Уровень <СтраховойНомер>123-456-789.45
    . 6 Уровень <ФИО>
    . 7 Уровень <Фамилия>ИВАНОВ
    . 7 Уровень <Имя>ИВАН
    . 7 Уровень <Отчество>ИВАНОВИЧ

    К сожалению в настоящий момент не имею материальной возможности оформлять заказы, поэтому приходится только советы спрашивать, перебирать чужие коды и по форумам попрошайничать :(

    Здравствуйте, Valeri.
    Сделать-то всё можно, - но, скорее всего, макрос надо писать «с нуля» (а не переделывать какой-то готовый код)

    Оформляйте заказ на сайте, прикрепляйте примеры файлов (исходный файл, и пример результата), и подробно описывайте, что и как должно работать (что куда подставляться).

    # 3 Valeri, 24 Мар 2014 - 16:31.

    Подскажите пжт можно ли сделать иерархические заголовки вашим методом (в три уровня)
    1 Уровень (Root)- Заголовок 1 >
    2 Уровень - Подзаголовок 1, Подзаголовок 2, Подзаголовок 3 >
    3 Уровень - Подподзаголок 1, Подподзаголок 2, Подподзаголок 3 и т.д. >
    > Ниже Элементы (массив)
    Спасибо

    # 4 Igor, 21 Мар 2014 - 16:27.

    Bведение в XSLT

    Библиотека Интернет Индустрии I2R.ru Bведение в XSLT. Преобразование в XML, HTML, XHTML, RTF Inside XSLT, S. Holsner

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

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

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

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

    <DATA>
    <DENSITY>
    <VALUE>.983</VALUE>
    <NAME>Mercury</NAME>
    <MASS>.0553</MASS>
    <DAY>58.65</DAY>
    <RADIUS>1516</RADIUS>
    </DENSITY>

    <DENSITY>
    <VALUE>.943</VALUE>
    <NAME>Venus</NAME>
    <MASS>.815</MASS>
    <DAY>116.75</DAY>
    <RADIUS>3716</RADIUS>
    </DENSITY>

    <DENSITY>
    <VALUE>1</VALUE>
    <NAME>Earth</NAME>
    <MASS>1</MASS>
    <DAY>1</DAY>
    <RADIUS>2107</RADIUS>
    </DENSITY>

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

    До сих пор мы создавали новые элементы только при помощи элементов буквального результата, то есть рассматривая новые элементы как текст и встраивая их в таблицу стилей. Но, как мы увидим в этой главе, не всегда возможно знать имена создаваемых новых элементов. Можно состыковать вместе создаваемые элементы по ходу дела, рассматривая их как сырой текст, но это явная недоработка, поскольку разметка трактуется как текст. В этой главе мы начнем применять элементы XSLT <xsl:element>, <xsl:attribute>, <xsl:processing-instruction> и <xsl:comment> для создания новых элементов, атрибутов, инструкций обработки и комментариев на этапе выполнения. Хорошее знание этих элементов необходимо при реорганизации содержимого XML.

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

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

    С элементом <xsl:output>, элемент мы впервые познакомились в главе 2 и использовали его, главным образом, для задания типа результирующего документа. Этот тип может задать, например, будет ли процессор XSLT записывать инструкцию обработки XML, <?xml version="1.0"?>, в начале документа, а также задать тип MIME (такой, как "text/xml" или "text/html") документов, отправляемых процессором XSLT из web-сервера браузеру. Кроме того, если вы установите выходной тип в HTML, большинство процессоров XSLT смогут распознать, что не всем элементам HTML необходимы закрывающие или открывающие теги и т. п.

    В следующем списке перечислены атрибуты <xsl:output>:

    cdata-section-elements (необязательный). Задает имена тех элементов, чье содержимое должно выводиться как разделы CDATA. Принимает значения списка QName, разделенного символами-разделителями;

    doctype-public (необязательный). Задает открытый идентификатор, который будет использован в объявлении <!DOCTYPE> в выходных данных. Устанавливается в строковое значение;

    doctype-system (необязательный). Задает системный идентификатор, который будет использован в объявлении <!DOCTYPE> в выходных данных. Устанавливается в строковое значение;

    encoding (необязательный). Задает кодировку символов. Устанавливается в строковое значение;

    indent (необязательный). Определяет, будет ли выходной документ выровнен с отражением структуры вложенности. Устанавливается в yes или no;

    media-type (необязательный). Задает тип MIME вывода. Устанавливается в строковое значение;

    method (необязательный). Задает формат вывода. Принимает значения "xml", "html", "text" или допустимое имя QName;

    omit-xml-declaration (необязательный) Определяет, будет ли включено в вывод объявление XML. Устанавливается в "yes" или "no";

    standalone (необязательный). Определяет, будет ли включено в вывод отдельное объявление XML, и если да - устанавливает его значение. Устанавливается в yes или no;

    version (необязательный). Задает версию вывода. Принимает значение допустимого NMToken.

    Чаще всего используется атрибут method, поскольку именно он определяет требуемый тип выходного дерева. Официально методом выводаметод вывода по умолчанию является HTML, при условии, что выполняются все три следующих условия:

    корневой узел результирующего дерева имеет дочерний элемент;

    в названии элемента документа результирующего дерева присутствует часть "html" (в любой комбинации верхнего и нижнего регистров) и пустой URI пространства имен;

    все текстовые узлы перед первым дочерним элементом корневого узла содержат только символы-разделители.

    Если выполняются все три этих условия, то по умолчанию метод вывода устанавливается в HTML. В ином случае методом вывода по умолчанию является XML.

    Тем не менее, не стоит полагаться на установки метода вывода по умолчанию, лучше явно присвоить этому атрибуту значение. Три распространенных значения атрибута method - "html", "xml" и "text", и мы познакомимся с ними в следующих разделах.

    Метод вывода: HTML

    Для метода вывода HTMLметод вывода;HTML процессор XSLT должен предпринять определенные действия. Например, для этого метода атрибут version определяет версию HTML. Значение по умолчанию - 4.0.

    Этот метод не должен добавлять завершающий тег для пустых элементов. (Для HTML 4.0 пустыми элементами являются <AREA>, <BASE>, <BASEFONT>,<BR>, <COL>, <FRAME>, <HR>, <IMG>, <INPUT>, <ISINDEX>, <LINK>, <META> и <PARAM>.) Метод вывода HTML должен распознавать названия элементов HTML независимо от регистра.

    В соответствии с W3C, метод вывода HTML не должен скрывать содержимое элементов <SCRIPT> или <STYLE>. Например, следующий элемент буквального результата:

    <SCRIPT>
    if (x < y)
    </SCRIPT>
    или следующий, использующий раздел CDATA:
    <SCRIPT>
    <![CDATA[if (x
    </SCRIPT>
    должен быть преобразован в:
    <SCRIPT>
    if (x

    Метод вывода HTML не должен также подавлять символы <, встречающиеся в значениях атрибутов.

    При установке метода вывода в HTML процессор может учесть атрибут выравнивания. Если этот атрибут установлен в yes, процессор XSLT может добавить (или удалить) символы-разделители для выравнивания результирующего документа, поскольку это не влияет на отображение документа в браузере. Для метода вывода HTML значением по умолчанию является "yes".

    Как вы могли предположить, метод вывода HTML завершает инструкции обработки при помощи >, а не ?>, а также поддерживает отдельные атрибуты, как и HTML. Например, тег

    <TD NOWRAP="NOWRAP"> будет преобразован в: <TD NOWRAP>

    Для этого метода можно установить атрибут media-type, значением по умолчанию для которого является "text/html". Метод HTML не должен убирать символ &, который появляется в значении атрибута, если сразу за ним следует фигурная скобка. Атрибут encoding задает используемую кодировку. Если присутствует элемент <HEAD>, этот метод вывода должен добавить элемент <META> сразу же после тега <HEAD>, определяя кодировку символов:

    <HEAD>
    <META http-equiv="Content-Type" content="text/html; charset=utf-8">
    .
    .
    .

    При помощи атрибутов doctype-public или doctype-system можно вывести объявление типа документа непосредственно перед первым элементом, как мы увидим при преобразовании XML в XHTML.

    Таковы правила вывода HTML. Ниже приведен пример преобразования из XML в HTML с небольшими отклонениями. В этом случае таблица стилей будет фактически генерировать код JavaScriptJavaScript;генерация из XML, демонстрируя создания JavaScript при помощи XSLT. В частности, мы прочитаем planets.xml и создадим новый документ HTML, отображающий три кнопки - по одной для каждой из трех планет в planets.xml. При щелчке на кнопке на странице будет выведена масса соответствующей планеты.

    Все, что нам понадобится (листинг 6.1), - это два элемента <xsl:for-each>: один для прохода в цикле по трем планетам и создания для каждой кнопки HTML; и один для прохода по планетам и создания для каждой функции JavaScript. В качестве имен функций JavaScript я воспользуюсь названием планет; при вызове функция выведет массу соответствующей планеты. Заметьте, что для создания нужного кода JavaScript нужно всего лишь применить элемент <xsl:value-of> для получения названий и масс планет. Я также применю два новых элемента XSLT, <xsl:element> и <xsl:attribute-set>, которые мы рассмотрим позже в этой главе, для создания нового элемента и задания для него набора атрибутов.

    Листинг 1. Преобразование в JavaScript

    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html"/>

    <xsl:template match="/PLANETS">
    <HTML>

    <HEAD>
    <TITLE>
    The Mass Page
    </TITLE>

    <xsl:for-each select="PLANET">
    <xsl:text>
    function </xsl:text><xsl:value-of select="NAME"/><xsl:text>()
    <
    display.innerHTML = 'The mass of </xsl:text>
    <xsl:value-of select="NAME"/>
    <xsl:text> equals </xsl:text>
    <xsl:value-of select="MASS"/>
    <xsl:text> Earth masses.'</xsl:text>
    >
    </xsl:for-each>
    </SCRIPT>
    </HEAD>

    <BODY>
    <CENTER>
    <H1>The Mass Page</H1>
    </CENTER>
    <xsl:for-each select="PLANET">
    <P/>
    <xsl:element name="input" use-attribute-sets="attribs"/>
    </xsl:for-each>
    <P/>
    <P/>
    <DIV ID='display'></DIV>
    </BODY>

    <xsl:attribute-set name="attribs">
    <xsl:attribute name="type">BUTTON</xsl:attribute>
    <xsl:attribute name="value"><xsl:value-of select="NAME"/></xsl:attribute>
    <xsl:attribute name="onclick"><xsl:value-of select="NAME"/>()</xsl:attribute>
    </xsl:attribute-set> </xsl:stylesheet>

    Результат, включая элемент <SCRIPT> для нового кода JavaScript (листинг 2).

    Листинг 2. Результирующий документ с JavaScript

    <HTML>
    <HEAD>
    <TITLE>
    The Mass Page
    </TITLE>

    <SCRIPT LANGUAGE="javascript">
    function Mercury()
    <
    display.innerHTML =
    'The mass of Mercury equals .0553 Earth masses.'
    >

    function Venus()
    <
    display.innerHTML = 'The mass of Venus equals .815 Earth masses.
    ' >
    function Earth()
    <
    display.innerHTML = 'The mass of Earth equals 1 Earth masses.'
    >
    </SCRIPT>
    </HEAD>
    <BODY>
    <CENTER>
    <H1>The Mass Page</H1>
    </CENTER>

    <P></P>
    <input type="BUTTON" value="Mercury" >
    <P></P>
    <input type="BUTTON" value="Venus" >
    <P></P>
    <input type="BUTTON" value="Earth" >
    <P></P>
    <P></P>
    <DIV ID="display"></DIV>
    </BODY>
    </HTML>

    Как видите, при помощи XSLT я написал код JavaScript для прохода в цикле по планетам. Этот документ HTML показан на рис. 1. При щелчке на кнопку выводится масса соотвествующей планеты.

    Рис. 1. Преобразование XML в HTML при помощи JavaScript

    Эта книга призвана дать вам столько посвященного XSLT материала, сколько может содержать одна книга. В ней не только рассматривается весь синтаксис XSLT, от основ до всех специальных аспектов, но и подробно излагаются современные способы использования XSLT. Вы найдете сотни практических примеров, таких как осуществление преобразований XSLT на Web-серверах, подключение к базам данных и использование браузеров для осуществления преобразований на лету. Книга рассчитана практически на всех, кто хочет изучать XSLT и использовать его на практике.

    Содержание

    О технических редакторах

    Благодарности Введение Материал книги Для кого предназначена эта книга На каком уровне написана книга Используемые соглашения От издательства Глава 1. Основы XSLT XSL = XSLT + XSL-FO
    Краткая историческая справка Преобразования XSLT-XSL XSL-FO: форматирующие объекты XSL Спецификации W3C Версии XSLT Документы XML Хорошо сформированные документы XML Допустимые документы XML Как XML выглядит в браузере?
    XSLT-преобразования
    Что нужно для XSLT-преобразования
    Использование отдельных процессоров XSLT
    Использование процессора XSLT на Java XT Джеймса Кларка Saxon Oracle XSLT Xalan Преобразование документов XML при помощи браузеров
    Работа с XSLT и JavaScript в Internet Explorer
    XSLT-преобразования на web-серверах
    Преобразования из XML в XML
    Преобразования из XML в XHTML
    Ресурсы XSLT Спецификации, руководства и примеры XSLT Редакторы XSLT Утилиты XSLT Форматирующие объекты XSL: XSL-FO Ресурсы XSL-FO Форматирование документа XML
    Таблица стилей XSLT
    Преобразование документа в представление с форматирующими объектами
    Создание форматированного документа Глава 2. Создание и применение таблиц стилей Деревья и узлы Символ-разделитель Модель информационного множества против модели дерева XSLT
    Работа с элементами XSLT
    Инструкция обработки <?xsl:stylesheet?>
    Элемент <xsl:stylesheet> Пространство имен XSL Элементы таблиц стилей высокого уровня
    Элемент <xsl:template>
    Тела шаблонов Инструкции XSLT Элементы расширения Элементы буквального результата Совпадающие элементы в шаблонах Элемент <xsl:apply-templates>
    Доступ к значениям узлов
    Поддержка XML Base
    Выбор методов вывода Метод вывода: HTML Метод вывода: XML Метод вывода: текст Упрощенные таблицы стилей
    Встроенные таблицы стилей
    Элемент <xsl:include>
    Элемент <xsl:import>
    Элемент <xsl:apply-imports>
    Преобразование документов XML при помощи Internet Explorer

    Глава 3. Создание и применение шаблонов
    Создание шаблона
    Обработка дочерних узлов
    Доступ к значениям узлов
    Создание образцов выбора
    Выбор применяемого шаблона
    Чтение значений атрибутов
    Элемент <xsl:text>
    Отключение вывода эскейп-последовательностей
    Написание значений атрибутов
    Шаблоны значений атрибутов
    Обработка символов-разделителей
    Элементы <xsl:strip-space> и <xsl:preserve-space>
    Автоматическое выравнивание
    Правила по умолчанию в шаблоне
    Удаление содержимого
    Разрешение конфликтов шаблонов
    Элемент <xsl:copy>
    Элемент <xsl:copy-of>
    Элемент <xsl:message>Глава 4. Создание образцов выбора Выбор корневого узла
    Выбор элементов
    Выбор дочерних элементов
    Выбор потомков элемента
    Выбор атрибутов
    Формальное определение образцов выбора
    Образцы шага, часть 1: оси образца Сокращенный синтаксис Образцы шага, часть 2: условия узла Выбор комментариев Выбор узлов при помощи node() Выбор текстовых узлов при помощи text() Выбор инструкций обработки Образцы шага, часть 3: предикаты
    Создание предикатов Предикаты: наборы узлов Предикаты: логические значения Предикаты: числа Строки Предикаты: фрагменты результирующего дерева Сокращенный синтаксис предикатов Выбор по ID
    Выбор по ключу
    Применение операции Or
    Примеры образцов Глава 5. Принятие решений и сортировка данных Элемент <xsl:if>
    Элементы <xsl:choose>, <xsl:when> и <xsl:otherwise>
    Элемент <xsl:for-each>
    Сортирующие элементы Сортировка по нескольким критериям Элемент <xsl:number> Одноуровневая нумерация Нумерация на произвольных уровнях Многоуровневая нумерация Расширяемость XSLT
    Функции расширения Элемент <xsl:script> Применение функции function-available Внешние объекты Элементы расширения Применение функции element-available Элемент <xsl:fallback>Глава 6. Преобразование в XML, HTML, XHTML, RTF Элемент <xsl:output> Метод вывода: HTML Метод вывода: XML Метод вывода: текст Вывод в формате XHTML Изменение структуры документа на основе входных данных
    Элемент <xsl:element>: создание новых элементов на этапе выполнения
    Элемент <xsl:attribute>: создание новых атрибутов
    Элемент <xsl:comment>: создание комментариев
    Элемент <xsl:processing-instruction>: создание инструкций обработки
    Элемент <xsl:document>: создание нескольких выходных документов
    Элемент <xsl:namespace>: создание объявлений пространств имен
    Элемент <xsl:attribute-set>: создание наборов атрибутов
    Пропуск объявления XML и создание фрагментов XML
    Создание уникальных идентификаторов при помощи generate-id
    Создание разделов CDATA
    Установка кодировки символов
    Режимы: форматирование в зависимости от контекста Глава 7. Работа с XPath Изучаем XPath
    Типы данных XPath Наборы узлов XPath Числа XPath Строки XPath Логические значения XPath Создание путей расположения XPath
    Шаги расположения XPath, часть 1: оси
    Шаги расположения XPath, часть 2: условия узлов
    Шаги расположения XPath, часть 3: предикаты
    Применение осей XPath
    Применение оси ancestor
    Применение оси ancestor-or-self
    Применение оси descendant
    Применение оси descendant-or-self
    Применение оси following
    Применение оси following-sibling
    Применение оси namespace
    Применение оси parent
    Применение оси preceding
    Применение оси preceding-sibling
    Применение оси self
    Примеры путей расположения
    Сокращенный синтаксис XPath
    Проверка выражений XPath
    XPath 2.0 Глава 8. Работа с функциями XSLT и XPath Функции XSLT current() document() element-available() format-number() function-available() generate-id() key() system-property() unparsed-entity-uri() Функции XPath для работы с наборами узлов count() id() last() local-name() name() namespace-uri() position() Функции XPath для работы со строками concat() contains() normalize-space() starts-with() string() string-length() substring() substring-after() substring-before() translate() Функции XPath для работы с числами ceiling() floor() number() round() sum() Логические функции XPath boolean() false() lang() not() true() Элемент <xsl:decimal-format>: создание числовых форматов
    Новые функции в XSLT 2.0 и XPath 2.0 Глава 9. Именованные шаблоны, параметры и переменные Элемент <xsl:variable>: создание переменных Область видимости переменной Работа с переменными Элемент <xsl:call-template>: применение именованных шаблонов
    Элементы <xsl:param> и <xsl:with-param>: создание параметров Рекурсивный вызов шаблонов Шаблон: значение по умолчанию Как задавать значения шаблона в командной строке Элемент <xsl:key>: выбор по ключу
    Элемент <xsl:document>: создание нескольких результирующих документов
    Элемент <xsl:namespace-alias>: генерация таблиц стилей

    Глава 10. Работа с API процессоров XSLT
    XSLT и JavaScript в Internet Explorer
    Обработка ошибок разбора
    Internet Explorer и динамические стили
    Internet Explorer и участки данных XML
    Вызов Java непосредственно из процессоров XSLT
    Работа с API XSLT для Java
    Взаимодействие Xalan с Java
    Взаимодействие Saxon с Java
    Взаимодействие процессора XSLT Oracle с Java
    Взаимодействие XT с Java
    Преобразование XML в реляционную базу данных
    Применение XSLT с активными серверными страницами
    Применение XSLT с Java Server Pages
    Применение XSLT с сервлетами Java

    Глава 11. Применение XSLT для создания документов XSL-FO
    Форматирование XSL
    Форматирующие объекты XSL-FO
    Форматирующие свойства XSL-FO
    Форматирование документа XML
    Преобразование в XSL-FO при помощи таблицы стилей XSLT
    Создание корня документа: <fo:root>
    Создание схемы набора шаблонов: <fo:layout-master-set>
    Создание шаблона страницы: <fo:simple-page-master>
    Создание областей
    Создание последовательностей страниц: <fo:page-sequence>
    Создание объектов потока: <fo:flows>
    Создание содержимого уровня блока: <fo:block>
    Создание таблиц
    Создание таблиц: <fo:table>
    Создание столбцов таблицы: <fo:table-column>
    Создание тел таблицы: <fo:table-body>
    Создание строк таблицы: <fo:table-row>
    Создание ячеек таблицы: <fo:table-cell>Глава 12. Документы XSL-FO Создание списков XSL-FO Создание списка: <fo:list-block> Создание элементов списка: <fo:list-item> Создание меток элемента списка: <fo:list-item-label> Создание тел элементов списка: <fo:list-item-body> Размещение текста при помощи контейнеров блоков: <fo:block-container>
    Встроенные форматирующие объекты Создание встроенных областей: <fo:inline> Обработка отдельных символов: <fo:character> Создание номеров страниц: <fo:page-number> Вставка графики: <fo:external-graphic> Форматирование первых строк: <fo:initial-property-set> Создание сносок: <fo:footnote> и <fo:footnote-body>
    Создание ссылок: <fo:basic-link>
    Создание колонок
    Последовательности страниц и нумерация страниц Приложение А. DTD XSLT Фрагмент DTD для таблиц стилей XSLT

    Приложение Б. Форматирующие свойства XSL-FO

    Реферат: “ Поддержка xml

    Реферат: “ Поддержка xml. Краткий обзор Oracle xdk”

    студент гр. 38-41 Кривоносов Д.В.

    Краткий обзор Oracle XDK

    Oracle XML Developer's Kit <http://otn.oracle.com/tech/xml/> (XDK) доступен для: Java, JavaBeans, C, C++, и PL/SQL, и включает в себя XML Parsers, XSL Processors, XML Class Generator, XML Transviewer Beans, and XML Schema Processor.

    XMLParsers(Синтаксические анализаторы)

    Компанией Oracle реализованы XML Parserы для Java, C, C++, и PL/SQL. Каждый из них - автономный XML компонент, который анализирует XML документ (или автономный DTD) для последующей обработки программным приложением. Данные синтаксические анализаторы поддерживают DOM (Document Object Model) и SAX (Simple API for XML) интерфейсы, XML Namespaces, режимы проверки структуры XML файла и XSL преобразования. Они реализованы на всех платформах Oracle.

    Поддержка XSL преобразования

    Начиная с версии 2, XML анализаторы включают интегрированный XSLT процессор для преобразования данных XML, используя XSL таблицы стилей. Используя XSLT процессор, Вы можете преобразовать документы XML в XML, HTML, или фактически любой другой основанный на тексте формат.

    Поддержка пространств имен (Namespaces)

    Java, C, и C++ анализаторы также поддерживают так называемые XML Namespaces. Namespaces - механизм, предназначенный для того, чтобы избежать коллизий имен элементов (тэгов) или атрибутов в документах XML. Этот механизм предоставляет "универсальные" пространства имен для элеменов и названий атрибутов, чья область видимости не ограничена документом, в котором они содержатся. Такие тэги определены унифицированными идентификаторами ресурса (URIs), такими как <oracle:EMP xmlns:oracle="http://www.oracle.com/xml"/ >. Например, пространство имен может использоваться, чтобы опознавать Oracle <EMP> элемент данных в отличие от определения элемента данных другой компании. Таким образом, приложение может опознавать элементы и атрибуты, которые непосредственно предназначены для нее. Java, C, и C++ анализаторы поддерживают пространства имен, распознавая универсальные элементы наравне с локальными.

    Поддержка режима проверки структуры документа

    Java, C, и C++ синтаксические анализаторы могут анализировать XML в режиме проверки структуры. При отключении режима проверки, синтаксический анализатор проверяет оформление XML документа и консолидирует данные в виде дерева объектов, которые в последствии могут управляться DOM API. В режиме проверки синтаксический анализатор кроме проверки оформления XML осуществляет проверку корректности данных XML относительно DTD. Проверка корректности подразумевает под собой проверку используемых названий атрибутов и тэгов, проверку корректности осуществления вложенности тэгов и т.д.

    DOM API иSAX API

    API для работы с XML относятся к двум категориям: основанные на событиях и основанные на деревьях. Основанный на событиях API (типа SAX) использует вызовы процедур, чтобы сообщить приложению о событиях, происходящий в процессе синтаксического анализа. Приложение получает информацию об этих событиях посредством настроенных обработчиков событий. Событиями оформляется начало и конец элементов и текстовых блоков. В отличие от API, основанных на деревьях, событийные API обычно не выстраивают в памяти представления документов XML в виде дерева. Поэтому, SAX полезен для приложений, которые не содержат операций манипулирования деревом XML, таких, как операция поиска необходимого элемента. API, основанные на деревьях (типа DOM) формируют в оперативной памяти представление документа XML в виде дерева. Кроме этого данные интерфейсы предоставляют приложению классы и методы для управления и обработки дерева. Вообще, интерфейс DOM наиболее полезен для структурных манипуляций с деревом XML, таких, как сортировка элементов, добавление или удаление элементов и атрибутов, переименование элементов, и т.д. Oracle9i XDK поддерживает и DOM 2.0, и SAX 2.0 спецификации.

    Следующей рисунок показывает исходный документ XML и соответствующие ему SAX и DOM представления.