Skip to content

Instantly share code, notes, and snippets.

@romanitalian
Created October 31, 2015 15:13
Show Gist options
  • Save romanitalian/c917b0398fd5972ddb71 to your computer and use it in GitHub Desktop.
Save romanitalian/c917b0398fd5972ddb71 to your computer and use it in GitHub Desktop.
How to use xslt
<?xml version="1.0"?>
<?xml-stylesheet href="file_template.xslt" type="text/xsl"?><!-- путь до xslt стилей указан в аттрибуте href -->
<data>
<title>Владелец и его собаки</title>
<owner>Владелец</owner>
<my_test>
<first>Имя</first>
<second>Фамилия</second>
<second>Ла-ла-ла</second>
</my_test>
<animals>
<title>Собаки</title>
<dogs>
<dog>
<dogName>Шарик</dogName>
<dogWeight caption="кг">18</dogWeight>
<dogColor>рыжий с черными подпалинами</dogColor>
</dog>
<dog>
<dogName>Тузик</dogName>
<dogWeight caption="кг">10</dogWeight>
<dogColor>белый с черными пятнами</dogColor>
</dog>
<dog>
<dogName>Бобик</dogName>
<dogWeight caption="кг">2</dogWeight>
<dogColor>бело-серый</dogColor>
</dog>
<dog>
<dogName>Трезор</dogName>
<dogWeight caption="кг">25</dogWeight>
<dogColor>черный</dogColor>
</dog>
</dogs>
</animals>
</data>
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/><!-- вывести как html -->
<xsl:template match="/"><!-- из корня документа с данными -->
<html>
<head>
<title><xsl:value-of select="/data/title"/></title>
</head>
<body>
<b><xsl:value-of select="/data/owner"/>:</b>&#160;<!-- вместо $nbsp; используем: &#160; -->
<xsl:for-each select="/data/my_test/*"><!-- цикл для каждого элемента из блока: /data/my_test/* -->
<xsl:if test="position()!=1" xml:space="preserve">, </xsl:if><!-- проставить запятые строго между элементами (вне элементов не ставим - ни до, ни после) -->
<xsl:value-of select="."/><!-- получить содержимое "value-of", из узла с любым именем: select="." -->
</xsl:for-each>
<table border="1">
<b><xsl:value-of select="/data/animals/title"/>:</b>
<xsl:for-each select="/data/animals/dogs/dog"><!-- цикл для каждого элемента из блока: /data/animals/dogs/dog -->
<tr>
<td>
<xsl:value-of select="dogName"/><!-- получить содержимое "value-of", из узла с именем: dogName -->
</td>
<td>
<xsl:value-of select="dogWeight"/><!-- получить содержимое "value-of", из узла с именем: dogWeight -->
<xsl:value-of select="dogWeight/@caption"/><!-- получить содержимое "value-of", из узла с именем: dogWeight и аттрибутом: caption -->
</td>
<td>
<xsl:value-of select="dogColor"/><!-- получить содержимое "value-of", из узла с именем: dogColor -->
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment