Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
web2.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
157.49 Кб
Скачать

Файли перетворення документа

Відомо, що для форматування HTML-файлів часто використовуються CSS (Cascading Stylesheets), хоча це необов'язково, оскільки браузери співвідносять зі всіма тегами певний зовнішній вигляд. Елемент <p> задає параграф, <B> - Напівжирний шрифт; браузер знає, як їх показувати.

Оскільки XML не використовує спочатку задані теги, їх значення може бути яким завгодно: <table> може означати таблицю HTML, а може і дерев'яний стіл. Тому браузери показують XML-документи "як є". Можна задати CSS-файли і для XML-документів, але це не рекомендується.

Для того щоб задати формат відображення XML-документів, використовуються таблиці стилів XSL. XSL - Розширювана мова стилів (Extensible Stylesheet Language), він набагато більш багатий можливостями, ніж CSS. XSL - Більше, ніж просто таблиця стилів.

Один і той же файл XML можна пов'язати з різними таблицями XSL, У тому числі програмно.

XSL складається з трьох частин:

  1. XSLT - Метод перетворення XML-документів.

  2. XPath - Метод завдання частин і шляхів до елементів XML

  3. XSL Formatting Object - Метод форматування XML-документів.

Найважливіша частина XSL - Це мова перетворень XSLT (XSL Transformation). Він застосовується для перетворення XSL-документів в інші типи документів або інші XSL-документи. Часто XSLT використовується для перетворення XSL-документа у формат HTML.

Для того щоб створити XSLT-документ, виберіть в діалозі створення файлу XSLT file. VS 2005 створює каркас таблиці стилів. Оскільки таблиця стилів сама по собі є XML-документом, вона починається з декларації XML:

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

Тег xsl: stylesheet задає початок таблиці стилів:

<xsl: stylesheet version = "1.0"

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

</ xsl: stylesheet>

Якщо ви вивчали CSS, то знаєте, що для завдання стилів використовуються правила. Правило складається з селектора і опису стилю у фігурних дужках.

a

(

font-size: medium;

color: Fuchsia;

)

Це правило визначає стиль виведення гіперпосилань середнього розміру шрифтом фіолетовим кольором.

У XSL застосовуються шаблони. Для пов'язання шаблону з XML-елементом використовується атрибут відповідності.

Тег xsl: template задає початок шаблону. Атрибут шаблону match ="/"> зв'язує шаблон і кореневий елемент початкового XML-документа:

<xsl:template match="/">

</ xsl: template>

У цей тег вкладений шаблон HTML-файла. Коментар нагадує про те, що туди потрібно вставити XSL-елементи.

Створення файлів XSLT розглянемо на прикладі. Створіть у папці App_Data файл XML "Quotes.xml":

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

<! - цитати великих людей ->

 <Quotes>

  <Quote>

    <Text>

      Хотіли як краще, а вийшло як завжди. </ Text>

      <Author> Віктор Черномирдін </ Author>

    </ Quote>

  <Quote>

    <Text> Америка - континент, названий так тому, що його від -

крив Колумб. </ Text>

    <Author> Жорж Елгозі </ Author>

  </ Quote>

  <Quote>

    <Text> Я приходжу в сказ від однієї думки про те, скільки б

 я всього дізнався, якщо б не ходив до школи. </ Text>

    <Author> Джордж Бернард Шоу </ Author>

  </ Quote>

  <Quote>

    <Text> Багато придумано для того, щоб не думати. </ Text>

    <Author> Карел Чапек </ Author>

  </ Quote>

  <Quote>

    <Text> Коли скажеш правду, все одно рано чи позно потрапиш -

ся. </ Text>

    <Author> Оскар Уайльд </ Author>

  </ Quote>

  <Quote>

    <Text> Бути йому президентом, якщо його до того часу не пове -

сят. </ Text>

    <Author> Марк Твен </ Author>

  </ Quote>

</ Quotes>

Щоб внести у вихідний потік XSLT-перетворення кожен XML-елемент, застосовується тег XSL xsl: for-each. Елемент : for-each визначає місце розташування елементів у XML-документі і повторює шаблон для кожного з них:

<xsl:for-each select="Quotes/Quote"> </ xsl: for-each>

Все, що знаходиться в шаблоні, буде виводитися стільки разів, скільки в початковому документі зустрінеться елемент Quote, Ув'язнений в тег Quotes.

Щоб внести у вихідний потік XSLT-перетворення значення XML-елемента, застосовується тег XSL xsl: value-of:

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

    <hr/>

Дані можна відсортувати за допомогою тега xsl: sort, Який повинен знаходитися усередині елементу xsl: for-each:

<xsl:sort select="Author" />

XSL може застосовувати умови для показу і форматування інформації залежно від значень елементів. "Умовний оператор" має вигляд <xsl:choose>, В який вкладені елементи <xsl:when> і, можливо, <xsl:otherwise>. Умова задається в елементі <xsl:when> за допомогою парамерта test:

<xsl:choose>

      <xsl:when test="Author='Марк Твен'">

        <img src="http://www.tvkultura.ru/p/q_14406.jpg"> </ img>

          </ xsl: when>

Остаточний вид файлу трансформації:

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

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

  version = "1.0">

  <xsl:template match="/">

    <html>

      <body>

        <h1 style = "background-color: RoyalBlue; color: white;

          font-size: 24pt; text-align: center; letter-spacing: 1.0em ">

          Відомі цитати

        </ h1>

        <table border="0">

          <tr style = "font-size: 12pt; font-family: verdana;

            font-weight: bold ">

            <td style="text-align: center"> Цитата </ td>

            <td style="text-align: center"> Автор </ td>

          </ tr>

          <xsl:for-each select="Quotes/Quote">

            <xsl:sort select="Author" />

            <tr style="font-size: 10pt; font-family: verdana">

              <td>

                <xsl:value-of select="Text"/> </ td>

              <td>

                <xsl:choose>

                  <xsl:when test="Author='Марк Твен'">

                     <img src="http://www.tvkultura.ru/ p/q_14406.jpg"> </ img>

                  </ xsl: when>

                  <xsl:otherwise>

                  <i> <xsl:value-of select="Author"/> </ i>

                  </ xsl: otherwise>

                </ xsl: choose>

              </ td>

            </ tr>

          </ xsl: for-each>

        </ table>

      </ body>

    </ html>

  </ xsl: template>

</ xsl: stylesheet>

Якщо хочете побачити результат перетворення документа в браузері, включіть після XML-декларації оголошення

<? xml-stylesheet type = "text / xsl" href = "XSLTFile.xsl"?>,

або виберіть у меню XML пункт "Show XML Output" і визначте файл перетворення.

Той же самий XML-документ можна перетворити за допомогою іншого XSL-файла:

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

<xsl: stylesheet version = "1.0"

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

<xsl:template match="/">

    <html>

    <body>

      <h1 style = "background-color: Brown; color: white;

        font-size: 24pt; text-align: center; letter-spacing: 1.0em ">

        Майстер афоризму

      </ h1>

      <xsl:for-each select="Quotes/Quote">

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

        <br/>

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

        <hr width="70%"/> </ xsl: for-each>

    </ body>

    </ html>

</ xsl: template>

</ xsl: stylesheet>

В результаті будуть виводитися цитати, розділені горизонтальною лінією.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]