Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
java / лекции / лекция 6.ppt
Скачиваний:
105
Добавлен:
17.04.2018
Размер:
203.78 Кб
Скачать

Стили шаблонов преобразования

<?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

Соседние файлы в папке лекции