- •Тема 4. Формат даних xml. Основи.
- •4.1. Вступ у xml
- •4.3. Організація роботи із стандартом xml у .Net
- •4.3.1. Класи XmlTextReader і XmlTextWriter
- •4.3.2. Обробка xml у пам’яті
- •XmlDocument
- •Класи XmlNode та XmlLinkedNode
- •Клас XmlDeclaration
- •Класи XmlComment та XmlAttribute
- •Клас XmlElement
- •Клас XmlDocument
- •Приклад сторення, навігації та пошук даних
- •4.3.3. Трансформація xml
4.3.3. Трансформація xml
XSL (Extensible Stylesheet Language - розширювана мова стилів), являє собою засновану на XML мову для створення таблиць стилів. Таблиці стилів (також звані трансформаціями) - це спеціальні документи, які можуть використовуватися (за допомогою процесора XSLT) для перетворення XML-документів в інші документи. Наприклад, таблицю стилів XSLT можна застосовувати для трансформації одного типу XML в іншу структуру XML. Або ж таблицю стилів можна використовувати для перетворення XML, який містить тільки дані, в інший текстовий документ, такий як таблиця HTML, що і буде продемонстровано в наступному прикладі.
Зауважимо, що таблиці стилів XSL не слід плутати з CSS (Cascading Style Sheets - каскадні таблиці стилів) - стандартом, використовуваним для форматування HTML.
Перш ніж можна буде виконувати трансформацію, необхідно створити таблицю стилів XSL, яка визначає, як має відбуватися перетворення. XSL - складний стандарт. Насправді він може розглядати окремо як справжній мову, зі своєю умовною логікою, циклічними структурами і багатьма іншими особливостями. (більше див. http://www.w3schools.com/xsl)
Базова таблиця стилів
Для перетворення списку студентів в HTML-розмітку використовується проста таблиця стилів, наведена нижче.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<div>
<xsl:apply-templates select="StudentList/student"/>
</div>
</xsl:template>
<xsl:template match="student">
<h4>
<xsl:value-of select="Name"></xsl:value-of>
</h4>
<ul>
<li>
<xsl:value-of select="@ID" />
</li>
<li>
<xsl:value-of select="Department"></xsl:value-of>
</li>
<li>
<xsl:value-of select="Group"></xsl:value-of>
</li>
<xsl:apply-templates select="BDate" />
<xsl:apply-templates select="Rating" />
</ul>
</xsl:template>
<xsl:template match="BDate">
<li style="color:green">
<xsl:value-of select="."></xsl:value-of>
</li>
</xsl:template>
<xsl:template match="Rating">
<li>
<i>
<xsl:value-of select="."></xsl:value-of>
</i>
</li>
</xsl:template>
</xsl:stylesheet>
Використання елемента управління Xml
В деяких випадках необхідно комбінувати трансформований HTML-вивід з іншим вмістом і веб-елементами управління. При цьому можна використовувати елемент управління Xml, який відображає результат XSL-трансформації як окрему частину сторінки.
Розглянемо попередній приклад XSLT, в якому виконувалася трансформація StudentList.xml із застосуванням StudentList.xslt. При використанні елемента управління Xml все, що знадобиться - це єдиний дескриптор, який встановлює властивості DocumentSource і TransformSource:
<asp:Xml
ID="Xml1"
runat="server"
DocumentSource="~/StudentList.xml"
TransformSource="~/StudentList.xslt">
</asp:Xml>
Найкраще в цьому прикладі те, що необхідно тільки вказати файли з вихідним XML-кодом і XSL-трансформацією. Ініціювати перетворення вручну НЕ буде потрібно.