- •Лекция 6
- •XPath
- •XPath
- •XPath
- •XPath
- •XPath
- •XPath
- •XPath
- •XPath
- •XPath
- •XPath
- •XPath
- •XPath в Java
- •XPath в Java
- •XPath в Java
- •Числовые Функции
- •Строковые функции
- •Булевские функции
- •XSLT преобразования
- •Пространство имен XML
- •Пространство имен XML
- •Указание пространства имен
- •Псевдонимы пространства имен
- •Пространство имен атрибутов
- •Пространства имен
- •XSLT
- •Исходный XML документ
- •Получаемый HTML документ
- •Стили шаблонов преобразования
- •Шаблоны
- •Шаблоны
- •Шаблоны
- •Преобразование средствами Java
- •Преобразование в HTML
- •Преобразование в HTML
- •Преобразование в текст
- •Преобразование в текст
Стили шаблонов преобразования
<?xml version="1.0"?> <xsl:stylesheet
xmlns:xsl="http://www.w3c.org/1999/XSL/Transfor m" version="1.0">
<xsl:output method="html"/>
шаблон преобразования 1 шаблон преобразования 2
. . .
</xsl:stylesheet>
Шаблоны
Шаблон:
<xsl:template match="шаблон элемента"> преобразование
</xsl:template>
Поиск соответствия шаблона
Если найден — то применения шаблона. Иначе действие по- умолчанию:
Для текстового узла — текст
Для элемента — обработка дочерних узлов
Шаблоны
Шаблон работника:
<xsl:template match="/staff/employee">
<tr><xsl:apply-templates/></tr> </xsl:template>
Выражение <xsl:apply-templates> продолжает обработку дочерних элементов
Шаблон имени работника
<xsl:template match="/staff/employee/name">
<td><xsl:apply-templates/></td> </xsl:template>
Шаблоны
Шаблон даты приема на работу
<xsl:template match="/staff/employee/hiredate">
<td><xsl:value-of select="@year"/>-<xsl:value-of select="@month"/>-<xsl:value-of select="@day"/></td>
</xsl:template>
Выражение value-of вычисляет строковое значение набора узлов, указанного в select.
Преобразование средствами Java
Пример:
File styleSheet = new File(filename); StreamSource styleSource = new
StreamSource(styleSheet); Transformer t =
TransformerFactory.newInstance().newTransformer(sty leSource);
t.transform(source, result);
Источники (source):
DOMSource
SAXSource
StreamSource
Результаты (result):
DOMResult
SAXResult
StreamResult
Преобразование в HTML
<?xml version="1.0"?> <xsl:stylesheet
xmlns:xsl="http://www.w3c.org/1999/XSL/Transfor m" version="1.0">
<xsl:output method="html"/>
<xsl:template match="/staff">
<table><xsl:apply-templates/></table>
</xsl:template>
<xsl:template match="/staff/employee"> <tr><xsl:apply-templates/></tr>
</xsl:template>
<xsl:template match="/staff/employee/name"> <td><xsl:apply-templates/></td>
</xsl:template>
Преобразование в HTML
<xsl:template match="/staff/employee/salary"> <td><xsl:apply-templates/></td>
</xsl:template>
<xsl:template match="/staff/employee/hiredate">
<td><xsl:value-of select="@year"/>-<xsl:value-of select="@month"/>-<xsl:value-of select="@day"/></td>
</xsl:template>
</xsl:stylesheet>
Преобразование в текст
<?xml version="1.0"?> <xsl:stylesheet
xmlns:xsl="http://www.w3c.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text"/>
<xsl:template match="/staff/employee"> employee.<xsl:value-of select="position()">.name= <xsl:value-of select="name/text()"> employee.<xsl:value-of select="position()">.salary= <xsl:value-of select="salary/text()"> employee.<xsl:value-of select="position()">.hiredate= <xsl:value-of select="hiredate/@year">-<xsl:value-of select="hiredate/@month">-<xsl:value-of select="hiredate/@day">
</xsl:template>
</xsl:stylesheet>
Преобразование в текст
Результат:
employee.1.name=Carl Cracker employee.1.salary=50000 employee.1.hiredate=2007-12-15 employee.2.name=Harry Cracker employee.2.salary=40000 employee.2.hiredate=2006-10-1 employee.3.name=Tony Tester employee.3.salary=10000 employee.3.hiredate=2008-2-15