Xslt transform reference
XSLT-трансформация - это стандартный XML-документ, поэтому первая инструкция трансформации всегда имеет вид: <?xml version="1.0"?>
Собственно XSLT-трансформация начинается с одной из двух совершенно одинаковых команд определения пространства имен:
-
<xsl:stylesheet | xsl:transform
id = id
extension-element-prefixes = tokens
exclude-result-prefixes = tokens
version = number>
<!-- Content: (xsl:import*,top-level-elements) -->
</xsl:stylesheet> | </xsl:transform>
внутри головного элемента transform или stylesheet могут содержатся элементы Import
-
<xsl:import
href = uri-reference />
и 11 видов элементов верхнего уровня - top-level-element'ы:
-
<xsl:attribute-set
name = qname
use-attribute-sets = qnames>
<!-- Content: xsl:attribute*-->
</xsl:attribute-set> -
<xsl:decimal-format
name = qname
decimal-separator = char
grouping-separator = char
infinity = string
minus-sign = char
NaN = string
percent = char
per-mille = char
zero-digit = char
digit = char
pattern-separator = char /> -
<xsl:include
href = uri-reference /> -
<xsl:key
name = qname
match = pattern
use = expression /> -
<xsl:namespace-alias
stylesheet-prefix = prefix | "#default"
result-prefix = prefix | "#default" /> -
<xsl:output
method = "xml" | "html" | "text" | qname-but-not-ncname
version = nmtoken
encoding = string
omit-xml-declaration = "yes" | "no"
standalone = "yes" | "no"
doctype-public = string
doctype-system = string
cdata-section-elements = qnames
indent = "yes" | "no"
media-type = string /> -
<xsl:param
name = qname
select = expression>
<!-- Content: template -->
</xsl:param> -
<xsl:preserve-space
elements = tokens /> -
<xsl:strip-space
elements = tokens /> -
<xsl:template
match = pattern
name = qname
priority = number
mode = qname>
<!-- Content: (xsl:param*, template) -->
</xsl:template> -
<xsl:variable
name = qname
select = expression>
<!-- Content: template -->
</xsl:variable>
Примечание.(переменные - элемент xsl:variable могут определяться глобально (на уровне всего документа) или внутри одного из элементов-инструкций)
После top-level-element'ов последовательно или вложенно друг в друга следуют собственно инструкции XSLT-преобразований - 22 преобразования:
-
<xsl:apply-templates
select = node-set-expression
mode = qname>
<!-- Content: (xsl:sort | xsl:with-param)* -->
</xsl:apply-templates> -
<xsl:attribute
name = { qname }
namespace = { uri-reference }>
<!-- Content: template -->
</xsl:attribute> -
<xsl:call-template
name = qname>
<!-- Content: xsl:with-param* -->
</xsl:call-template> -
<xsl:choose>
<!-- Content: (xsl:when+, xsl:otherwise?) -->
</xsl:choose> -
<xsl:comment>
<!-- Content: template -->
</xsl:comment> -
<xsl:copy
use-attribute-sets = qnames>
<!-- Content: template -->
</xsl:copy> -
<xsl:copy-of
select = expression /> -
<xsl:element
name = { qname }
namespace = { uri-reference }
use-attribute-sets = qnames>
<!-- Content: template -->
</xsl:element> -
<xsl:fallback>
<!-- Content: template -->
</xsl:fallback> -
<xsl:for-each
select = node-set-expression>
<!-- Content: (xsl:sort*, template) -->
</xsl:for-each> -
<xsl:if
test = boolean-expression>
<!-- Content: template -->
</xsl:if> -
<xsl:message
terminate = "yes" | "no">
<!-- Content: template -->
</xsl:message> -
<xsl:number
level = "single" | "multiple" | "any"
count = pattern
from = pattern
value = number-expression
format = { string }
lang = { nmtoken }
letter-value = { "alphabetic" | "traditional" }
grouping-separator = { char }
grouping-size = { number } /> -
<xsl:otherwise>
<!-- Content: template -->
</xsl:otherwise> -
<xsl:processing-instruction
name = { ncname }>
<!-- Content: template -->
</xsl:processing-instruction> -
<xsl:sort
select = string-expression
lang = { nmtoken }
data-type = { "text" | "number" | qname-but-not-ncname }
order = { "ascending" | "descending" }
case-order = { "upper-first" | "lower-first" } /> -
<xsl:text
disable-output-escaping = "yes" | "no">
<!-- Content: #PCDATA -->
</xsl:text> -
<xsl:variable
name = qname
select = expression>
<!-- Content: template -->
</xsl:variable>
Примечание.(переменные - элемент xsl:variable могут определяться глобально (на уровне всего документа) или внутри одного из элементов-инструкций) -
<xsl:value-of
select = string-expression
disable-output-escaping = "yes" | "no" /> -
<xsl:when
test = boolean-expression>
<!-- Content: template -->
</xsl:when> -
<xsl:with-param
name = qname
select = expression>
<!-- Content: template -->
</xsl:with-param>
В вышеприведенном описании XSLT применены следующие условные обозначения:
- Обязательные атрибуты выделены жирным шрифтом
- Некоторые элементы могут содержать в своем теле инструкции только определенных видов, что показано комментарием Content.
- Cледующие переменные определены стандартом языка.
- Повторяющееся выражение <!-- Content: template --> означает, что внутри могут содержаться только следущие 18 элементов: apply-imports, apply-templates, attribute, call-template, choose, comment, copy, copy-of, element, fallback, for-each, if, message, number, processing-instruction, text, value-of, variable.
<SITEMAP> <MVC> <ASP> <NET> <DATA> <KIOSK> <FLEX> <SQL> <NOTES> <LINUX> <MONO> <FREEWARE> <DOCS> <ENG> <CHAT ME> <ABOUT ME> < THANKS ME> |