1

Тема: XML и XSL преобразования. Синтаксис XSL.

Задача: преобразовать с помощью XSL лотусовый XML в собственный формат XML  в рамках XHTML.

XML:
<корень>
  <узел1>
            <узел2>Вася</узел2>
            <узел3>Петя</узел3>
  </узел1>
<registry country="Россия" city="Москва" />
</корень>

XSL:
<xsl:template match="/">
....
</xsl:template>
Шаблон для корневого узла.

XPATH
Вместо "/" может быть:


/корень/узел1/ - абсолютный путь к элементу узел1, содержащему узлы 2 и 3
/корень/узел1/узел2/ абсолютный путь к "Вася"
//узел1 -  если не знаешь пути, то адресация по имени
registry/@country - обращение к атрибуту  country, элемента  registry


<xsl:value-of select="XPATH"/>  -  вывести содержимое узла, указанного в параметре select
select="." выборка текущего элемента.

<xsl:sort select="поле1"/>  -  сортировка по полю "поле1"
<xsl:for-each select="авторы"> - перебирает поля "авторы"
position() - функция возвращает порядковый номер элемента. Аналогично {@id} .

Подгрузка шаблона в другой шаблон:  <xsl:import href="имя.xsl"/>
Вызов шаблона: <xsl:call-template name="имя элеменгта подгружаемого шаблона" />

Поделиться

2

Re: XML и XSL преобразования. Синтаксис XSL.

Попробуем написать для

XML:
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns='http://_.lotus.com/dxl' version='7.0' maintenanceversion='3.0' replicaid='C2257B36002D2217' form='fmejved'>

<noteinfo noteid='9ae' unid='797F122934FF755BC2257C2F0033EE69' sequence='1'>
<created><datetime>20131126T112713,69+02</datetime></created>
<modified><datetime>20131126T112713,70+02</datetime></modified>
<revised><datetime>20131126T112713,69+02</datetime></revised>
<lastaccessed><datetime>20131126T112713,69+02</datetime></lastaccessed>
<addedtofile><datetime>20131126T112713,69+02</datetime></addedtofile></noteinfo>
<updatedby><name>CN=Бор Н Эфрс/O=inf</name></updatedby>

<item name='ОРГАНИЗАЦИЯ'><text>ГССИиСМИ</text></item>
<item name='Sprav_PI'><text>3200</text></item>
<item name='Sprav_Tel'><text>8-55-35</text></item>
<item name='Sprav_Bank'><text>2182000023101</text></item>
<item name='Sprav_email'><text>minin@gmail.com</text></item>
<item name='ЗАГОЛОВОК'><text>Теккст заголовка 11</text></item>
<item name='АДРЕСАТ'><text>Председателю Правительства  П.П. Степанову</text></item>
<item name='РЕГИСТРАЦИОННЫЙ_НОМЕР'><text>0000000</text></item>
<item name='ДАТА_РЕГИСТРАЦИИ'><datetime>20131113</datetime></item>
</document>




XSL 1:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://_.w3.org/1999/XSL/Transform">
  <xsl:output method="html" />
 
<xsl:template match="item">
<html xmlns="http://_.w3.org/1999/xhtml">
<title>
<xsl:value-of select="@name" />
</title>

<test1>
<xsl:value-of select="/text"/>
</test1>

</html>
</xsl:template>

</xsl:stylesheet>



XSL2:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://_.w3.org/1999/XSL/Transform">
  <xsl:output method="html" />
 
<xsl:template match="/">
<html xmlns="http://_.w3.org/1999/xhtml">
<title>
<xsl:value-of select="document/item/@name"/>
</title>

<test1>
<xsl:value-of select="document/item/text"/>
</test1>

</html>
</xsl:template>
</xsl:stylesheet>

Поделиться

3

Re: XML и XSL преобразования. Синтаксис XSL.

<xsl:copy-of select="XPATH"/> - копирует содержимое XPATH

XML:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" ?>
<family>
  <person>
    <fio age="10">
      <name>Вася</name>
      <otch>Юрьевич</otch>
    </fio>
    <family>Пупкин</family>
  </person>
</family>


XSL:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
      xmlns:xsl="http://_.w3.org/1999/XSL/Transform" >
<xsl:template match="family/person">
  <p>
    <xsl:copy-of select="fio"/>
  </p>
</xsl:template>
</xsl:stylesheet>

Выводит:
<p><fio age="10">
      <name>Вася</name>
      <otch>Юрьевич</otch>
    </fio></p>


<xsl:copy-of select="family/*"/>  - выведет всё что внутри узла family.

Поделиться

4

Re: XML и XSL преобразования. Синтаксис XSL.

Онлайн сервис XSL Transformation:
xslt.online-toolz.com/tools/xslt-transformation.php

Поделиться

5

Re: XML и XSL преобразования. Синтаксис XSL.

Офигенный самоучитель XSL с примерами:
erum.ru/34.htm

Поделиться