Инструменты пользователя

Инструменты сайта


xml_xslt

Назад

Документация

XSLT (eXtensible Stylesheet Language Transformations) — язык трансформации XML-документов.

Как и каждый XML-документ, XSLT-документ должен начинаться с XML-декларации:

<?xml version="1.0" encoding="UTF-8"?>

После этого необходимо указать корневой элемент, которым для документа XSLT (таблицы стилей) есть элемент xsl:stylesheet

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
...
</xsl:stylesheet>

Инструкции

При преобразовании документов в XSLT существует набор инструкций

template

Вся трансформация документа задается при помощью шаблона template

	<xsl:template match="/">
 
	</xsl:template>
  • match - задается шаблон XPath
  • name - задается имя шаблону
  • mode - режим (напоминает id)
  • priority - Приоритет вызова (int)

Элементы XSLT

apply-templates

Данный элемент, позволяет повторно воспользоваться XML документом для последующего преобразования в шаблонах чаще всего вызывается в template. Но у данного элемента есть два необязательных атрибуты.

  • select - задает какие узлы отработать еще раз.
  • mode
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 
	<xsl:template match="/">
		<html>
			<body>
				<xsl:apply-templates select="/pricelist/book[price &gt;200]" />
			</body>
		</html>
	</xsl:template>
 
	<xsl:template match="book">
		<div>
			<xsl:value-of select="title" />
		</div>
	</xsl:template>
 
</xsl:stylesheet>

выведи все книжки у которых price<200

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:template match="/">
		<html>
			<body>
				<xsl:apply-templates select="/pricelist/book" />
			</body>
		</html>
	</xsl:template>
 
	<xsl:template match="book[price &gt;200]">
		<div style="color:red">
			<xsl:value-of select="title" />
		</div>
	</xsl:template>
 
	<xsl:template match="book">
		<div>
			<xsl:value-of select="title" />
		</div>
	</xsl:template>
 
</xsl:stylesheet>

Выводит все книжки ну те которые price<200 будут красные

call-template

Вызывает именование шаблоны

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:template name="test">
		<div>test</div>
	</xsl:template>
 
	<xsl:template match="//book">
		<xsl:call-template name="test" />
	</xsl:template>
</xsl:stylesheet>

xsl:attribute и xsl:element

Язык XSLT позволяет не только конвертировать существующие узлы, но и создавать.

Атрибуты:

  • name
  • namespace
  • use-attribute-sets

Пример </code>

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:template match="/">
		<html>
			<body>
				<xsl:apply-templates select="/pricelist/book" />
			</body>
		</html>
	</xsl:template>
 
	<xsl:template match="book">
		<xsl:element name="{concat('item',position())}">
			<xsl:value-of select="title" />
		</xsl:element> 
	</xsl:template>
</xsl:stylesheet>

Создаем элементы с именим item+его позиция.

Также XSLT возможна создавать и новые атрибуты.

  • name
  • namespace
<a> 
  <xsl:attribute name="href">
    www.site.com
  </xsl:attribute>
</a>

В теге а создаст атрибут href=«www_site_com»

Управляющие конструкции

Условия отбора

if

<xsl:if test="xPath">
.....
</xsl:if>

choose

Чтота типа свича

Циклическая обработка

for-each