XSD

advertisement
XSL
eXtensible Stylesheet Language
суббота, 7 мая 2016 г.
Общий принцип
преобразований
Структура документа XSL
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method ="html" media-type ="text/xml"/>
<xsl:template match=“…">
<!-Определение шаблона
-->
</xsl:template>
…
</xsl:stylesheet>
Атрибуты output
method (XML, HTML или text)
encoding
media-type – задаёт MIME-тип (text/xml)
doctype-system или doctype-public
Например:
<xsl:output doctype-system=“example.dtd”>
формирует в выходном документе
<!DOCTYPE root SYSTEM “example.dtd”>
<xsl:output doctype-public=“-//W3C//DTD XHTML 1.0 Transitional//EN”>
формирует в выходном документе
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”
“http://www.w3.org/TR/xhtml/DTD/XHTML1-transitional.dtd”>
Шаблоны
<xsl:template match=“example”>
<!-Определение шаблона, которое может
включать в себя статическое содержимое,
ссылки на шаблоны вложенных элементов,
вставку значений элемента и его атрибутов
-->
</xsl:template>
Применение шаблонов
<xsl:template match=“example”>
<html>
<head>
<title>example</title>
</head>
<body>
<!--<xsl:apply-templates/>-->
<xsl:apply-templates select=“child”/>
</body>
</html>
</xsl:template>
Обработка повторяющихся потомков
<xsl:template match=“example”>
<xsl:for-each select=“child”>
<!-- -->
</xsl:for-each>
</xsl:template>
Получение значений
узлов и атрибутов
<xsl:value-of select=“.”/>
<xsl:value-of select=“child”/>
<xsl:value-of select=“@attr”/>
Вывод текстовых фрагментов
<xsl:text>
Произвольное текстовое содержимое
</xsl:text>
Выражения XPath
example
*
@attr
@*
example[3]
example[last()]
*/example
/exapmle/child[3]/item[2]
//example
.//example
..
Выражения XPath
../@attr
example[child]
*[child]
example[child=“value”]
example[@attr=“value”]
example[5][@attr=“value”]
example[@attr1 and @attr2]
XSLT-правила по умолчанию
<xsl:template match=“/ | *”>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match=“text()”>
<xsl:value-of select=“.”/>
</xsl:template>
<xsl:template match=“@*”>
<xsl:value-of select=“.”/>
</xsl:template>
Изменение структуры
выходного документа
<xsl:template match=“example”>
<example
attr1=“<xsl:value-of select=‘child1’>”
attr2=“<xsl:value-of select=‘child2’>”
attr3=“<xsl:value-of select=‘attr’>”
/>
</xsl:template>
<xsl:template match=“example”>
<example
attr1=“{child1}”
attr2=“{child2}”
attr3=“{@attr}”
/>
</xsl:template>
НЕВЕРНО!
Изменение структуры
выходного документа
<xsl:template match=“example”>
<xsl:element name=“{@name}”>
<!-- -->
</xsl:element>
</xsl:template>
<xsl:template match=“example”>
<example>
<xsl:attribute name=“{child}”>
<!-- -->
</xsl:attribute>
</example>
</xsl:template>
Сортировка вывода
<xsl:apply-templates select=“…”>
<xsl:sort select=“name”/>
</xsl:apply-templates>
Атрибуты:
data-type=“number”
order=“descending”
Условные конструкции
<xsl:if test=“…”>
<!-- -->
</xsl:if>
<xsl:choose>
<xsl:when test=“…”>
<!-- -->
</xsl:when>
<xsl:otherwise>
<!-- -->
</xsl:overwise>
</xsl:xhoose>
Download