Xml xslt
This presentation is the property of its rightful owner.
Sponsored Links
1 / 82

Стилови езици Езици за трансформиране на XML документи - XSLT PowerPoint PPT Presentation


  • 77 Views
  • Uploaded on
  • Presentation posted in: General

Стилови езици Езици за трансформиране на XML документи - XSLT. XML стилови езици. Форматирането на XML документ се съхранява в отделен документ, наречен stylesheet .

Download Presentation

Стилови езици Езици за трансформиране на XML документи - XSLT

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Xml xslt

Стилови езициЕзици за трансформиране на XML документи - XSLT


Xml xslt

XML стилови езици

  • Форматиранетона XML документ се съхранява в отделен документ, наречен stylesheet.

  • Използва сеstylesheet processorза обединение на XML информацията с форматирането (стиловата страница) за да се получи нов “читаем” документ.

  • Stylesheetsсе пишат на стилови езици.

  • Може да се разработи собствен стилов език и стилов процесор, но XML ползва два стандартизирани стилови езика, които се подържат от всички програмни средства.

    • CSS (Cascading Style Sheets)

    • XSL (Extensible Style Language)


Xml xslt

XML стилови езици

  • По принцип таблиците със стилове (style sheets) служат за подобряване на представянето на XML данните, а таблиците с каскадни стилове (CSS) в частност се използват за задаване на медийни характеристики.

  • W3C и изграждане на архитектурата на слоя на представяне – CSS1 и CSS2.

  • Стилът се състои от набор от CSS свойства със зададени стойности.

    • Декларацията на CSS стила за всеки тип таг – правило.

    • Сборът от правилата в рамките на тага – таблица със стилове.

    • Името на тага – селектор за правилото.

    • Каскаден стил – влияе не само на елемента, а и на наследниците му.


Xml xslt

XML стилови езици

  • Стилове се присвояват към XML документ чрез инструкция за обработка.

  • Примерен XML документ notes.xmlс присвоен стил.

<?xml-stylesheet type=“език_стилове” href=stylesheetURL?>

<?xml-stylesheet type=“”text/css” href=“notes.css”?>

<document>

<body>

<note type=“warning”>This is a warning.</note>

<note type=“tip”>This is a tip.</note>

<note type=“resource”>This is a resource.</note>

</body>

</document>


Xml xslt

XML стилови езици

  • Изграждане наCSS таблицата със стилове notes.cssс механизмите на CSS2 спецификацията.

  • Правилото noteще открие всички бележки, независимо от атрибута typeсъответна граница и рамка.

note {margin-left:.5in;width:250px;border-width:3px;border-style:outset;

border-color:blue;position:relative;background-color:lightBlue;}

note[type=“warning”] {background-color:red;border-color:red;}

note[type=“tip”] {background-color:yellow;border-color:yellow;}

note[type=“resource”] {background-color:green;border-color:green;}


Xml xslt

XML стилови езици

Вътрешни XML таблици с каскадни стилове

  • Включването на правила за таблица със стилове в елемент от XML документ става с именован идентификатор.

<?xml-stylesheet type=“”text/css” href=“#myStyleSheet”?>

<document>

<st id= “myStyleSheet”>

. . .

</st>

. . .

</document>


Xml xslt

XML стилови езици

Използване на директива @media в файл css

  • CSS позволява групиране на правила, които да се прилагат към определен тип медиа, като за едно и също правило могат да се присвояват различни характеристики.

Изход на екран или принтер

@media screen,print {

. . .

}

@media aural {

note[type=“tip”] {volume:medium; voice-family:FriendlyAdvice; }

. . .

}

@media tty,braille {

note[type=“tip”]:before {content: “[TIP]”; }

note[type=“tip”]:after {content: “[END TIP]”; }

. . .

}

Изход към гласов синтезатор

Изход към телетипна или Брайлова машина


Xml xslt

XML стилови езици

  • CSSе създаден за HTML, но работи и с XML.

    • CSS е механизъм за изобразяване на XML документ в браузера.

    • Повечето от средствата за Web дизайн позволяват изобразяване на страницата и последващо генериране на CSS скрипт за постигане на исканото (позициониране; фонови изображения; задаване на позиции и мерни единици; работа със списъци и таблици, текст и шрифтове,..).

  • CSSима два съществени недостатъка:

    • Не може да създаде извеждане с добро качество.

    • Може само да “украсява” документа, а не може да променя последователността на информацията. Това налага предварителна стъпка за преобразуване на документа преди използване на CSS.


Xml xslt

XML стилови езици

  • XSLе XML-базиран стилов езикза създаване на таблици със стилове, който преодолява недостатъците на CSS.

    • Главен недостатък: няма средство за генериране на XSL stylesheets(ръчно се пише).

  • XSL е свързан с 3 стандарта:

    • Трансформиране (XSLT). XML документ се трансформира в друг формат (друг XML; DHTML или XHTML, който работи на браузер с вградени JavaScript или VBScript).

    • Указване (XPath), който позволява да се идентифицира отделна част от XML.

    • Форматиране (XSL) – процес на прилагане на форматиране към информацията без да се пишат специфични за изходното устройство инструкции.


Xml xslt

XML стилови езици

  • Основен принцип е, че се създават правила, които свързват форматиращи и обработващи инструкции към типовете информация в документа.

  • Правилата се поставят в стиловата страница под формата на темплейти, които указват елементи от информация.

  • По време на изпълнение, т.нар.“stylesheet processor”получава XML документа и стиловата страница.Тези процесори се съдържат във всяко приложение – браузери и средства за създаване на Web страница.

  • Тази техника се нарича декларативна, а не процедурна (декларират се стилови правила, а не се пишат процедурни инструкции).


Xml xslt

XML стилови езици

  • XSL може да се разглежда като организиран в две части (два езика): XSLT и XSLFO ( Formatting Objects).

  • CSS и XSLFO са близки по действие.

  • Действие на XSL процесор:

    • Зареждане на изходния документ (т.нар. сорс)

    • Осъществява се придвижване от корен към листата и на всяка стъпка се проверява за съвпадение на съответния връх и темплейта.

    • При съвпадение, процесорът генерира върхове в резултантното дърво.

    • При xsl:apply-templatesсе придвижва към наследниците на текущия връх и повтаря процеса.

    • xsl:apply-templatesе рекурсивното извикване на стиловата страница.


Xml xslt

XML стилови езици


Xml xslt

XML стилови езици


Xml xslt

XML стилови езици


Xml xslt

XML стилови езици


Xml xslt

XML стилови езици

  • Задачата, която XSLT решава – товае трансформация.

  • Защо е необходима трансформация на XML документите?

  • XSLT( eXtensible Stylesheet Language Transformations)е език, койтоспоредпървата фраза наспецификацията (намираща се на адрес http://www.w3.org/TR/xslt), е създаден за трансформиране на един XML документ в друг.

  • По-общо казано: XSLT е език за трансформиране на структурата на един XML документ.


Xml xslt

Защо да се трансформира XML?

  • XML е първоначално предназначен за комуникация междусофтуерните системи. Като такъв XML удовлетворява две задължителни изисквания:

    • Разделяне на данните от тяхното представяне.

    • Предаване на данни между приложенията.


Xml xslt

Защо да се трансформира XML?

  • За целите на комуникацията, понякога е необходим документ, който да може да се изведе на екран или отпечата: например HTML файл, PDF файл или дори звуков такъв.

  • Преобразуването на XML в HTML за целите на извеждането енай-масовото приложение на XSLT днес.

  • За да се пренасят данни между различни приложения, е необходимо трансформиране на данните от модела на едно приложение в модел, използван от друго.

  • За извличане и комбиниране на данни от множество XML документиза да се генерират други XML документи.


Xml xslt

Основна идея на XSLT

  • XSLT stylesheet:

  • Е декларативен и използва съвпадение на шаблони иtemplatesза

    специфициране на трансформацията.

  • Е по-изразителен от CSS stylesheet.

  • Може да извършва произволни изчисления.


Xml xslt

Основна идея на XSLT

  • В Web, XSLT трансформацията може да се прави или от клиента(т.е. Explorer или Mozilla) или от сървъра – т.е. или катоpre-processing, илиon-the-fly

  • В бъдеще Web браузерите трябва да разбират XSLT.

  • Типичен език, разбиран от браузерите еXHTML.

  • XSLT е широко използван.

    • Не се ограничава само със стилизиране на документа, а може да извършва и реорганизиране на структурата.

    • Добавяне и изтриване на елементи или поставяне на таблица на съдържанието в началото на документа.

    • Преобразуване между различни DTD или различни версии.


Xslt xml

Как XSLT трансформира XML?

  • Обикновено има два аспекта на този процес:

    • Първата стъпка е структурната трансформация, при която данните се преобразуват от структура на входящ XML документ в структура, която съответства на искания изход.

    • Втората стъпка е форматирането, при която новата структура се извежда в искания формат: HTML или PDF.


Xslt xml1

Как XSLT трансформира XML?

  • Структурата данни, която е резултата на първата стъпка може да се изведе като HTML, текстов файл или XML.

    • HTML изходът позволява информацията да се види директно чрез браузер от потребителя или да се въведе във всеки модерен текстов процесор.

    • Изходът във вид на текстов файл позволява форматиране на данните по начин, който съществуващото приложение да възприеме.

    • XML изходът позволява данните да се предоставят на тези приложения, които възприемат XML директно.


Xslt xml2

Как XSLT трансформира XML?

  • Първата стъпка може да включва избор на данни, агрегация и групирането им, сортиране или извършване на аритметични преобразувания (например преобразуване на сантиметри в инчове).

  • Преди появяването на XSLT е била възможна обработката на входни XML документи само чрез писане на потребителски приложения.

  • Така, че въпросът е как се използва XSLT за да извърши трансформации на XML по-добре от писане на “потребителски приложения"?

  • XSLT преобразува XML документът в “дървовидна структура". Това е структурата на документа, която XSLT манипулира, а не самия документ.


Xslt xml3

Как XSLT трансформира XML?

  • XSLT е език от високо ниво, посредством който е възможно придвижването по дървото, избора на определени върхове и извършване на манипулации върху тях.

    XSLT и SQL -Аналогия

  • Силата на релационните бази данни не е в структурата на данните; тя е в езика, който обработва данните - SQL.

  • По същия начин, XML само дефинира структурата на данните.

  • Създаденият за да манипулира структурата на XML данните в случая език е XSLT.


Xslt xml4

Как XSLT трансформира XML?

XSLT и SQL - Аналогия

  • Обработващият език трябва да включва синтактични структури за избор на данни.ВSQL, това еSELECTинструкцията. Еквивалентното вXSLT еXPathизраза.

  • Синтаксисът наXPathпозволява извличане на върхове от XML документа, базирано на път през XML документаили контекста на поява на върховете.

  • Той позволява достъп до определени върхове, съобразявайки се с йерархията и структурата на документа.

  • След това XSLT се използва за манипулиране на резултатите (пренареждане на избраните върхове, конструиране на нови върхове и т.н.).


Xslt xml5

Как XSLT трансформира XML?

XSLT процесори

  • Главната роля на един XSLT процесор е да приложи стиловата страница на XSLT към XML документ и да създаде резултатен документ. Важно е да се отбележи, че се работи с XML приложения и следователно съответстващите структури са дървовидни.

  • В действителност XSLT процесорът обработва три дървовидни структури.


Xslt xml6

Как XSLT трансформира XML?

  • Как работят XSLT таблиците със стилове?

    • Те са изградени от структури, наречени шаблони (templates). Шаблонът определя какво да се търси в изходното дърво и какво да се поставя в резултантното.

    • XSLT е написан на XML, т.е. Използват се елементи и атрибути за създаване на таблиците със стилове.

Елемент за дефиниране на шаблона

<xsl:templatematch=“first”>First tag found!</xsl:template>

атрибут

Съдържание на шаблона

  • Шаблонът ще се приложи към всички елементи с име <first>в

    изходното дърво.

  • В резултантното дърво ще се извежда текста First tag found!


Xslt xml7

Как XSLT трансформира XML?

  • Как работят XSLT таблиците със стилове?

    • Елемент <xsl:value-of> взима информация от изходното дърво и я добавя в резултантното.

    • Или произволното съдържание на всеки елемент <first>Произволно съдържание</first>ще се добави в резултантното дърво с:

    • Елемент <xsl:for-each> работи като шаблон в шаблона и се прилага за подмножество от елементи по следния начин:

<xsl:template match=“first”><xsl:value-of select=“.”/></xsl:template>

<xsl:template match=“first”>

<xsl:for-each select=“елемент”/>

</xsl:template>


Xslt xml8

Как XSLT трансформира XML?

  • Как работят XSLT таблиците със стилове?

<?xml version="1.0"?>

<strings>

<s>Para 1</s>

<s>Para 2</s>

<s>Para 3</s>

</strings>

За xml документа

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

   xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match=“/”>

. . .

<xsl:for-each select=“/strings/s”/>

<P><xsl:value-of select=“.”/></P>

</xsl:for-each>

. . .

</xsl:template>

</xsl:stylesheet>

Прилага се за елементи s

Ще се изведе съдържанието на s елементите


Xslt xml9

Как XSLT трансформира XML?

  • Пример: Ще използваме XSLT за трансформиране на прост XML документ.

    • Създаване на "Hello, world!" XSLT Стилова страница

  • Вход

  • Дървовидното представяне на документа е:

XML документ

<?xml version="1.0" encoding="iso-8859-1"?>

<greeting>Hello, world!</greeting>


Xslt xml10

Как XSLT трансформира XML?

  • Изход

  • Търсеният изход е следния HTML файл, който сменя заглавието на браузера в "Today's Greeting" и извежда поздрава от изходния XML файл:

<html>

<head>

   <title>Today's Greeting</title>

</head>

<body>

   <p>Hello, world!</p>

</body>

</html>


Xslt xml11

Как XSLT трансформира XML?

  • XSLT стилова страница за извършване на трансформацията:

<?xml version="1.0" encoding="iso-8859-1"?>

<xsl:stylesheet

   version="1.0"

   xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">

   <html>

   <head>

      <title>Today's greeting</title>

   </head>

   <body>

      <p><xsl:value-of select="greeting"/></p>

   </body>

   </html>

</xsl:template>

</xsl:stylesheet>

правило

префикс


Xslt xml12

Как XSLT трансформира XML?

Изпълнение на стиловата страница

  • Възможно е изпълнение на стиловата страница с използване на произволен XSLT процесор.

  • Със Saxon, стъпките са както следва:

    • Download на процесора

    • Инсталиране на изпълнимия файлsaxon.exeв подходяща директория, която да бъде текуща.

    • С Notepad, се въвеждат двата описани вече файла с имена hello.xml и hello.xsl в тази директория.

    • В прозореца на MSDOS:

      • Start | Programs | MSDOS Prompt

    • В command promptвъведи: 

      • saxon hello.xml hello.xsl

    • Виж изведения на стандартния изход HTML.


Xslt xml13

Как XSLT трансформира XML?

  • Ако искате изходът да бъде на ваш браузер, съхранете изхода на командния ред като HTML файл по следния начин:

    Saxon hello.xml hello.xsl > hello.html

    Какво в същност е действието?

    • XSLT стиловата страница е XML документи започва със стандартното XML заглавие.

    • То определя документа като стилова страница.

      • xmlns:xslатрибута е декларация на XML област на данни, определящ, че префиксътxslще се използва за елементидефинирани в W3C XSLT спецификацията ( XSLT ползва XML области на данни и всички имена на елементи дефинирани в стандарта с префикс за тези области за да се избегне объркване на имената с тези от изходния документ ).


Xslt xml14

Как XSLT трансформира XML?

  • Атрибутът за версия определя, че стиловата страница ползва белезите на версията 1.0 на XSLT стандарт.

  • Елементът <xsl:template>определя правило на темплейта при обработката на определена част на документа.

  • Атрибутътmatch="/"определя, че това правило се включва при започването на обработката на документа. Тук«/»е израз в XPath, който определя коренния връх на документа. XPath използва«/»за представяне на йерархията на съдържането на XML документа.


  • Xslt xml15

    Как XSLT трансформира XML?

    . . .

    <html>

       <head>

          <title>Today's greeting</title>

       </head>

       <body>

          <p><xsl:value-of select="greeting"/></p>

       </body>

       </html>

    . . .

    Тяло на темплейта

    При включване на правилото, тялото на темплейта определя какъв изход да се генерира. По-голямата част от това тяло е последователност от HTML елементи и текст, който да се копира в изходния файл. Има едно изключение: <xsl:value-of>е елемент, който представляваXSL инструкция защото използва префиксxsl. Тази инструкция копира стойността на върха от входния документв изходния.


    Xslt xml16

    Как XSLT трансформира XML?

    • АтрибутътSELECTна елемента определя върха, за който ще се оценява стойността.Изразът на XPath “greeting”означава: “намери множеството на всички елементи<greeting>, които са дъщерни на върха, обработван от това правило. В случая това означава елемент<greeting>, който е най-отдалечен

    • Инструкцията<xsl:value-of>взима текстовия връх на този елемент и го копира на изхода на съответното място, т.е. В генерирания елемент тип <p>.

    • В края остават двата завършващи реда на започнатото.

    . . .

    </xsl:template>

    </xsl:stylesheet>  


    Xslt xml17

    Как XSLT трансформира XML?

    • Защо бихме искали да поставим today's greetingв отделен XML файл и да го извеждаме, използвайки стилова страница?

    • Това е необходимостта за показване на поздрава по различни начини в зависимост от контекста; например да се показва различно на различните устройства. В този случай може да се пише различна стилова страница за трансформиране един и същи документ по различни начини. Но това поставя въпроса за това как стиловата страница ще приема избраното по време на изпълнение.На този въпрос няма еднозначен отговор.


    Xml xslt

    Модел на действие на XSLT

    • Стиловата страница на XSLT се състои от темплейтни правила (template rules).

      template rule = pattern + template

    • За даден входен XML документ, изходът се получава:

    • Дървото на сорса се обработва чрез обработка на върха-корен (връх-корен на документ е специален връх, който има коренен елемент като единствен наследник).

    • Единствен връх се обработва чрез:

      • Намиранена темплейтно правило с най-добро покритие с шаблона

      • Създаване на екземплярна темплейта (създава резултантен фрагмент + продължаване на обработката)

    • Списък от върхове се обработва чрез обработката последователно на всеки връх и конкатенация на резултатите.


    Xml xslt

    Структура на стиловата страница на XSLT

    • Стиловата страница на XSLT е добре формиран XML документ.

    <?xml version="1.0" encoding="iso-8859-1"?>

    <xsl:stylesheet 

    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 

    xmlns="http://www.w3.org/TR/REC-html140"><xsl:output method=‘html’/>   .   .

    <xsl:template match="pattern">   \ <!--template--> темплейтно правило

    (template rule)</xsl:template>                  /   .   .                  други елементи   .

    </xsl:stylesheet>

    Области на данни (за разпознаване на XSLT елементи) XSL речник+ резултат HTML


    Xml xslt

    Структура на стиловата страница на XSLT

    • Обръщане към стилова страница в XML документ.

    • Инструкция за свързване на стилова страница с документ за работа с Internet Explorer 5.0

    • Документът може да се обърне към стиловата страница и чрез следната инструкция:

    • Новите браузери съдържат XSLT процесор.

    <?xml-stylesheethref = “simple – ie5.xsl” type = “text/xsl”?>

    Параметър за указване на типа стилова страница

    Параметър за указване на стилова страница

    <?xml-stylesheet href=“name_of_XSL_file.xsl“ type="text/xsl"?>


    Xml xslt

    Използване на XSLT за извличане на информация

    • Стъпка 1: Извлича се информация от различни XML документи.

      • Получават се толкова различни XML документи, колкото са оригиналните.

    • Стъпка 2: Обединението на извлечените XML документи в един общ листинг.

    • Стъпка 3: Преобразуване на този листинг в HTML файл.


    Xml xslt

    Използване на XSLT за извличане на информация

    • Пример на стилова страница за извличане на информация за: URL, title, abstract, dateот различни документи (т.е. получаване на нов по-малък XML файл).

    <?xml version="1.0" encoding="iso-8859-1"?>

    <xsl:stylesheet

    xmlns:xsl="http://www.w3.org/1999/XSL/Transform/">

    <xsl:template match=‘/article’>

    <article>

    <url><xsl:value-of select = [email protected]/>.html </url>

    <title> ><xsl:value-of select= “title”/> </title>

    <abstract> ><xsl:value-of select= “abstract”/> </abstract>

    <date> ><xsl:value-of select= “date”/> </date>

    </article>

    </xsl:template>

    </xsl:stylesheet>


    Xml xslt

    Използване на XSLT за извличане на информация

    • Извлечената информация за1 документ: URL, title, abstract, dateима вида:

    • Сливане на получените документи (с различни средства, но резултатът е файлindex.xml)

    <article><url>19990101_xsl.html</url><title>XML Style sheets</title>

    <abstract> Style sheets add flexibility to document viewing. </abstract>

    <date>January 1999</date></article>

    <?xml version="1.0" encoding="iso-8859-1"?>

    <articles>

    . . .

    </articles>


    Xml xslt

    Използване на XSLT за извличане на информация

    • Стилова страница за преобразуване на извлечената в index.xml информация в HTML файл.

    <?xml version="1.0" encoding="iso-8859-1"?>1/2

    <xsl:stylesheet

    xmlns:xsl="http://www.w3.org/1999/XSL/Transform/">

    xmlns="http://www.w3.org/TR/REC-html140">

    <xsl:output method=“html”/>

    <xsl:template match=“/”>

    <HTML>

    <HEAD>

    <TITLE>Pineapplesoft Link:Archives <TITLE>

    </HEAD>

    <BODY>

    <UL>

    <xsl:for- each select=‘articles/article’>

    <LI><A>

    <xsl:attribute name=“HREF”>

    <xsl:value-of select=“url”/>

    </xsl:attribute>


    Xml xslt

    Използване на XSLT за извличане на информация

    • Стилова страница за преобразуване на извлечената в index.xml информация в HTML файл.

    <xsl:value-of select=“title”/> 2/2

    </A><BR/>

    <xsl:value-of select=“date”/><BR/>

    <xsl:value-of select=“abstract”/>

    </LI>

    </xsl:for-each>

    </UL>

    </BODY>

    </HTML>

    </xsl:template>

    </xsl:stylesheet>


    Xslt patterns

    XSLT – Patterns (шаблони)

    • Шаблоните са XPath изрази.

    • Даден връх съвпада с даден шаблон ако:

      • Върхът е резултат от изчислението на шаблона при отчитане на някакъв текущ връх.

    • Операционно (и интуитивно), съвпадението с шаблона се определя най-добре от дясно на ляво.

    • Структурата на XPath израз можеше да се представи:

      pattern: location path | ... | location path

      locationpath:     /step/ ... // ... /step

      step: axis nodetest predicate

    • Шаблонът е множество отXPath location paths (локализиращи пътища), разделени с| (обединение)

    • ограничения: тук са разрешени самоchild (по подразбиране) иattribute(@) axes(рамена).

    • разширения: локализиращ път може да започва сid(..) или key(..)


    Xslt patterns1

    XSLT – Patterns (шаблони)

    • Пример

    • Търси съвпадение на елементиsubsection, които се намират или катоchildелементиsection, или като наследници (descendants) на елементиappendix.

    match="section/subsection | appendix//subsection"


    Xslt patterns2

    XSLT – Patterns (шаблони)

    • Илюстриране на механизма за намиране на множеството върхове, съвпадащи с шаблона a//b/c


    Xslt templates

    XSLT - Templates

    • Те конструират фрагментите на резултантното дърво (8 вида).

    • Литерални фрагменти:

    • Текстова константа (character data)

    • Елемент, който не принадлежи на XSL област на данните

    • <xsl:text ...> ... </...>  (като текст, но с празни позиции)

    • <xsl:comment> ... </...>  (вмъква коментар<!--...-->)

      Пример:

    <xsl:template match="...">

    this text is written directly to output

    when this template is instantiated

    </xsl:template>


    Xslt templates1

    XSLT - Templates

    • Рекурсивни обработващи инструкции:

    • <xsl:apply-templates select="node-set expression" .../>прилагат съвпадение на шаблона и намиране на екземпляр на темплейта за избрани върхове (по подразбиране: всички child)

    • <xsl:call-template name="..."/>обръща се към темплейт по име (къдетоxsl:templateимаname="..."атрибут)

    • <xsl:for-each select="node-set expression"> template </...>намира екземпляр на темплейта за всеки връх в множеството от върхове

    • <xsl:copy> template </...>копира текущ връх към изхода и прилага темплейт

    • <xsl:copy-of select="..."/>копира избраните върхове към изхода (включително наследниците)

      АтрибутselectсъдържаXPath израз, който се изчислява в текущия контекст.


    Xslt templates2

    XSLT - Templates

    • Рекурсивни обработващи инструкции:Пример:

      Режими на обработка:mode="..."заxsl:templateи

      xsl:apply-templatesпозволяват един елемент да бъде обработван

      много пъти по различен начин.

    <xsl:template match="article">

    <h1><xsl:apply-templates select="title"/></h1>

    </xsl:template>


    Xslt templates3

    XSLT - Templates

    • Фрагменти в резултат на изчисление с XPath изрази

    • <xsl:element name="..." namespace="..."> ... </...>създава се елемент със зададеното име, атрибути и съдържание

    • <xsl:attribute name="..." namespace="..."> ... </...>създава атрибут (вътре вxsl:element)

    • <xsl:value-of select="..."/>създава символни данни или атрибутна стойност (израз – преобразуван в стринг)

    • <xsl:processing-instruction name="..."> ... </...>създава обработваща инструкция

      Забележка: Атрибутите могат да съдържат израз{expression}:

      XPath изрази, които се изчисляват


    Xslt templates4

    XSLT - Templates

    • Фрагменти в резултат на изчисление с XPath изрази

      Пример:

      Това темплейтно правило преобразува

      <section level="3"><kind>intro</kind></section>

      в

      <sec3 kind="intro"/>.

    <xsl:template match="section">

    <xsl:element name="[email protected]}">

    <xsl:attribute name="kind">

    <xsl:value-of select="kind"/>

    </xsl:attribute>

    </xsl:element>

    </xsl:template>


    Xslt templates5

    XSLT - Templates

    • Условна обработка

    • <xsl:if test="expression"> ... </...>Прилага темплейт, ако изразът има стойност“true”.

    • <xsl:choose>  <xsl:when test="expression"> ... </...>  ...  <xsl:otherwise> ... </...></...>Проверява условията под ред,прилага темплейт за първото, което е “true”.

      Пример:

    <xsl:template match="nutrition">

    <xsl:if test="@alcohol">

    <td align="right"><xsl:value-of select="@alcohol"/>%</td>

    </xsl:if>

    </xsl:template>


    Xslt templates6

    XSLT - Templates

    • Сортиране

    • Сортирането избира ред заxsl:apply-templatesиxsl:for-each (по подразбиране: реда на документа).

    • <xsl:sort select="expression" .../>;Последователност отxsl:sortелементи разположени вxsl:apply-templatesилиxsl:for-eachопределят лексико-графически ред.

    • Някои допълнителни атрибути:

      • order="ascending/descending"

      • lang="..."

      • data-type="text/number"

      • case-order="upper-first/lower-first"

        Пример:


    Xslt templates7

    XSLT - Templates

    • Сортиране

      Пример:

      Това темплейтно правило обработва списък от“persons”,

      сортирани по фамилното име като първичен ключ и дадено име

      като вторичен.

    <xsl:template match="personlist">

    <xsl:apply-templates select="person">

    <xsl:sort select="name/family"/>

    <xsl:sort select="name/given"/>

    </xsl:apply-templates>

    </xsl:template>


    Xslt templates8

    XSLT - Templates

    • Изброяване – за автоматично отброяване на секции, елементи на списъци и др.

      <xsl:number value="expression" преобразувано в число

      format="..."level="..."any/single/multiple

      count="..." избира какво даброи

      from="..."lang="..."

      letter-value="..."

      grouping-separator="..."

      grouping-size="..."/>


    Xslt templates9

    XSLT - Templates

    • Изброяване

    • Акоvalueе определено, то се използва тази стойност.

    • В противен случай, действието се определя отlevel:

      • level="any": брой на предшестващи върхове count, срещнати следfrom(пример: броене на“footnotes”)

      • level="single" (по подразбиране): както приany, но се имат пред вид само“ancestors”и техните“siblings”(пример: номериране на реда на елементите на списъка)

      • level="multiple": генерира номерата на целия списък(пример: номериране на секции и подсекции).

        Пример:

    <xsl:template match="footnote">

    (<xsl:number level="any" count="footnote" from="chapter" format="1"/>)

    </xsl:template>


    Xslt templates10

    XSLT - Templates

    • Променливи и параметри – за параметризирани темплейти

    • <xsl:variable name="..." select="expression"/>декларация на променлива, стойността е дадена от XPath израз<xsl:variable name="..."> template </..>декларация на променлива, стойността е получена като резултантен фрагмент от дървото чрез темплейт

    • Подобно заxsl:paramза декларации на параметри (където определените стойности са по подразбиране).

    • Използване:

      • $nameвръща XPath стойност в израз, т.е. атрибутна темплейтна стойност

      • xsl:with-paramпредава параметри вxsl:call-templateиxsl:apply-templates


    Xslt templates11

    XSLT - Templates

    • Променливи и параметри – за параметризирани темплейти

      Пример

    <xsl:template match="foo">

    <xsl:variable name="X" select="42"/>

    xsl:variable name="Y">

    <sometag><xsl:value-of elect="@bar"/></sometag>

    </xsl:variable>

    <first>

    <xsl:value-of select="$X"/>

    <xsl:copy-of select="$Y"/>

    </first>

    <second>

    <xsl:value-of select="$X"/>

    <xsl:copy-of select="$Y"/>

    </second>

    </xsl:template>


    Xslt templates12

    XSLT - Templates

    • Ключове – за автоматично създаване на връзки

    • Ключ е тройката (node, name, value), свързваща двойкатаname-valueкъм връх на дървото.

    • <xsl:key match="pattern" name="..." use="node set expression"/>

      • Декларира множество от ключове – един за всеки връх, съвпадащ с шаблона и за всеки връх от множеството

    • Допълнителна XPath ключова функция:

      key(name expression, value expression)

      • Връща върховете със зададено име и стойност на ключ

    • Това се използва често с:

      generate-id(singleton node-set expression)

      • Връща стринг, идентифициращ дадения връх


    Xslt templates13

    XSLT - Templates

    • Ключове – за автоматично създаване на връзки

    <xsl:key name="mykeys" match="section[@id]" use="@id"/>

    <xsl:template match="section">

    <h1>

    <a name="{generate-id()}">

    <xsl:number/>

    <xsl:apply-templates select="title"/>

    </a>

    </h1>

    <xsl:apply-templates select="body"/>

    </xsl:template>

    <xsl:template match="ref[@section]">

    <a href="#{generate-id(key('mykeys',@section))}">

    <xsl:for-each select="key('mykeys',@section)">

    Section <xsl:number/>

    </xsl:for-each>

    </a>

    </xsl:template>


    Xslt templates14

    XSLT - Templates

    • Ключове – за автоматично създаване на връзки

      Обяснения към примера:

    • Ключът се декларира за всеки елемент на секция с атрибутid.

    • За всяко заглавие на секция, се създава връзка (т.нар. котва) с уникално име.

    • За всекиrefелемент с атрибутsection, се създава връзка към съответната секция с използване на ключа за определяне на върха, към който е връзката.

    • В същото време, както заглавията на секции, така и връзките са номерирани.


    Xslt css

    Разлика между XSLT и CSS

    • XSLT стиловата страница преобразува XML документа в HTML.

    • CSS стиловата страница обработва директно документа за да се види на екрана.

    • CSSе механизъм, който казва на браузеракак да стилизира елементите (работи с шрифт, цвят и т.н.).

    <xsl:template match=“section/title”>

    <P><I><xsl:apply-templates/></I></P>

    XSLT стиловата страница преобразува заглавието (елемент title) в 2 HTML елемента (параграф + текст (италик))


    Xslt css1

    Разлика между XSLT и CSS

    section > title

    { display:block;

    font-style:italic;

    }

    Еквивалентната CSS стилова страница запазва оригиналните елементи и казва как да се изведат (title е независим блок от текст italic)


    Xml xslt

    Основни понятия за CSS

    • CSS(стилов език, разделящ съдържанието от стилизирането на страницата) е създаден от W3C за улеснение на работата с HTML, но се използва и с XML.

    • Създадени са CSS1 и CSS2.

    • CSS стиловата страница съдържа множество от правила, подобно на XSL темплейтите. Всяко правило започва със селектор (подобно на XSL пътя), към който се асоциират свойства.

    • За свързване на CSS стиловата страница към XML документа се използва инструкцията:

    XML документа със свързаната към него стилова страница се обработва от IE 5.0 (като процесор)

    <?xml-stylesheet href =“name_of_page.css” type=“text/css”?>


    Css xslt

    Обединение на CSS с XSLT

    <?xml version="1.0" encoding="iso-8859-1"?>

    <xsl:stylesheet 

    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 

    <xsl:template match=“/”>

    <xsl:processing-instruction name=“xml-stylesheet”>

    href=“name.css” type=“text/css”

    </xsl:processing-instruction>

    <xsl:apply – templates/>

    </xsl:template >

    <xsl:template match=“keywords”>

    <keywords> <xsl:apply – templates/> </keywords>

    <section>

    <title>Table of Contents</title>

    <xsl:for each select=“/name/section/title”>

    <p><xsl:value of select=“.”/></p>

    < /xsl:for each>

    </section>

    </ xsl:template>

    </xsl:stylesheet>

    • XSLT стилова страница може да съдържа CSS стилова страница.


    Css xslt1

    Обединение на CSS с XSLT

    • Как работи XSLT стиловата страница с включената CSS стилова страница?

      • XSLT стиловата страница се свързва с XML документа.

      • Създава се реорганизиран XML документ (с таблица на съдържанието), а не HTML документ.

      • XSLT стиловата страница включва и инструкция за връзка на XML документ към CSS стилова страница.

      • Следователно браузерът зарежда XML документа и CSS стиловата страница, която го форматира.

    • Основното предимство в сравнение с използването само на XSLT страница е, че резултантният документ е също XML документ.


    Xslfo

    Понятие за XSLFO

    • XSLFO съдържа свойствата на CSS в XSL.

    • Стиловата страница на XSLFOе списък от XSL темплейти.

    • Те създават форматираните обекти в резултантното дърво. Обектите имат свойства (така както и в CSS).

    • Включени са и обекти, които са типични за XML (например обект за създаване на хипервръзки).


    Xml xslt

    Мястото на XSLT във Фамилията

    на XML

    XSLT и XPath

    • Това е език за адресиране в дървото на XML.

    • Позволява дефиниране на хайпертекст връзки, чиито цели са адреси в дървото на XML.

    • XPath е подезик в стиловата страница на XSLT.

    • XPath изразът може да се използва за изчисления или обработка на стрингове, както и за проверка на логически условия. Но най-характерната употреба, която е дала и името е за определяне на части от документа, които да се обработват.


    Xslt xml18

    Мястото на XSLT във Фамилията на XML

    XSLT и XPath

    • Примерно следната инструкция извежда средната цена на всички книги от документа:

      • <xsl:value-of>елемент е инструкция от XSLT стандарта, която води до извеждане на стойност.

      • Атрибутът selectсъдържа XPath израз, който изчислява стойността за извеждане.

    <xsl:value-of select="sum([email protected]) div count(//book)"/>


    Xslt xml19

    Мястото на XSLT във Фамилията на XML

    XSLT и XPath

    • Ако не се знае кой документ да се чете за да се намери отговор на зададен въпрос:

      • Например, XPath израз може да указва променлива, но създаването на тази променлива и инициализирането и е задача на XSLT.

      • Друг пример: XPath изрази могат да извикват функции. Една част са дефинирани в спецификацията на XPath, но друга, чието поведение зависи от дефинициите на XSLT са дефинирани в XSLT спецификациите.


    Xml xslt

    XSLT – примери за фундаменталните принципи

    • Пример 1:илюстрира основната конструкция на XSLT - правилото

    <xsl:stylesheet xmlns:xsl=“http://www.w3.org/1999/XSL/Transform”

    xmlns=http://www.w3.org/TR/REC-html140

    version=‘1.0’>

    <xsl:template match=“/”>

    <html>

    <head>

    <title>The document</title>

    </head>

    <body>

    <p>This is a document</p>

    </body>

    </html>

    </xsl:template>

    </xsl:stylesheet>

    Стойност на атрибута match - селектор


    Xml xslt

    XSLT – примери за фундаменталните принципи

    Пример 1:илюстрира основната конструкция на XSLT – правилото

    • Всяка XSLT спецификация има елемент xsl:stylesheet.

    • Този елемент може да има много наследници от различен тип, но най-важният е този, дефиниращ правилото - xsl:template.

    • Неговият атрибут matchима за стойност селектор, който определя спрямо кой/кои елемент/и от документа-източник ще се приложи правилото. За примера, това е коренният елемент, определен със символа /.

    • Съдържание на елемента могат да бъдат:

      • Инструкции под формата на елементи, дефинирани в областта xsl .

      • Елементи, които да се прехвърлят буквално в резултантното дърво.

    • За примера няма елементи-инструкции, а само елементи от областта html. Т.е. цялото съдържание на xsl:templateще се прехвърли в дървото, създадено от XSLT процесора.


    Xml xslt

    XSLT – примери за фундаменталните принципи

    Пример 1:илюстрира основната конструкция на XSLT – правилото

    • В действителност обработеният с този пример документ-източник се игнорира.

    • Семантиката на програмата XSLT е:

      • Намиране на елемента-корен на документа-източник.

      • Създаване на резултантно дърво, което съдържа буквално съдържанието на формата. Наследниците на коренния елемент не се разглеждат.


    Xml xslt

    XSLT – примери за фундаменталните принципи

    Пример 2:илюстрира търсене в дървото-източник на всички елементи-синове на корена и включването им в елемент – body на генерираното дърво.

    • XSLT процесорът търси най-напред корена на източника. След което започва да генерира резултантно дърво с корен – doc и първи наследник – title. Прекопират се буквално от формата.

    <xsl:stylesheet xmlns:xsl=“http://www.w3.org/1999/XSL/Transform”

    version=‘1.0’>

    <xsl:template match=“/”>

    <doc>

    <title>The document</title>

    <body>

    <xsl:apply-templates/>

    </body>

    </doc>

    </xsl:template>

    </xsl:stylesheet>


    Xml xslt

    XSLT – примери за фундаменталните принципи

    Пример 2: Документът-източник е:

    • Със спецификацията XSLT се генерира следният документ:

    <?xml version=“1.0” encoding=“ISO-8859-1” ?>

    <doc>

    <directory><title>This is a directory</title>

    <person><family>Smith</family><name>John</name></person>

    <person><family>Hardy</family><name>Thomas</name></person>

    </directory>

    </doc>

    корен

    <doc><title>The document</title>

    <body>

    This is a directory

    SmithJohn

    HardyThomas

    </body>

    </doc>

    Вмъква се отварящ

    таг - body


    Xml xslt

    XSLT – примери за фундаменталните принципи

    Пример 2: Обяснения за създаване на генериран документ

    • Намерената инструкция без атрибут xsl:apply-templatesозначава: намери правилата, които се прилагат за всички синове на текущия връх и ги приложи. XSLT спецификацията не съдържа такива правила, но се съдържат правила по подразбиране за всеки процесор. Тук се прилагат две правила:

    • При отсъствие на правила за елементите на източника, търсенето продължава до крайните елементи на източника – листата.

    • Ако един елемент съдържа текст(#PCDATA), той се копира в текущия връх на генерирания документ.

    • Процесорът среща елемент directory. Прилага се правило 1.

    • Процесорът среща title. Прилага се правило 1, но този път върхът-син на текущия не е елемент, а текст. Прилага се правило 2 и съдържанието на title все вмъква в резултантен връх body.


    Xml xslt

    XSLT – примери за фундаменталните принципи

    Пример 2: Обяснения за създаване на генериран документ

    • Процесорът продължава по този начин обработката на цялото дърво-източник в дълбочина. Т.е. Разглеждат се върховете-синове и ако съдържанието име е текст – се копира в резултантния документ.

    • Отсъствието на празни позиции между текстовете на име и фамилия се решава с правилата за празни позиции в XSLT.


    Xml xslt

    XSLT – примери за фундаменталните принципи

    Пример 3: Илюстрира избор на част от дървото-източник и прилагане на правилата за избраната част.

    • Атрибутът select информира XSLT процесора да обработва само елементите с тип name, започвайки от корена на източника.

    <xsl:stylesheet xmlns:xsl=“http://www.w3.org/1999/XSL/Transform”

    version=‘1.0’>

    <xsl:template match=“/”>

    <body>

    <xsl:apply-templatesselect =“.//name”/>

    </body>

    </xsl:template>

    <xsl:template match=“name”>

    <family><xsl:apply-templates/></family>

    </xsl:template>

    </xsl:stylesheet>

    атрибут – select – добавя се правило за елементи name


    Xml xslt

    XSLT – примери за фундаменталните принципи

    Пример 3: Илюстрира избор на част от дървото-източник и прилагане на правилата за избраната част.

    • XSLT процесорът търси наследници на корена от тип name.

    • При намирането, се прилага правилотоза този тип елементи. Създава се таг family, след което се обработва съдържанието на текущия елемент.

    • Съдържанието на nameе текстово и се прилага правило 2. Съдържанието на nameсе копира в резултантния документ – елемент family.

    • Обработката продължава за всички елементи name.

      Приложена към същия документ-източник XSLT спецификацията ще

      генерира следния документ:

    <body><family>Smith</family><family>Hardy</family></body>


  • Login