XSL - на основе на основе шаблонов.
Данные XML можно «повторно использовать» на трех уровнях. На самом базовом уровне вы можете <xsl:for-each />
через XML.
Примечание: For-each в XSL не выполняет циклический просмотр данных, он просто сопоставляет данные. Также, когда вы «внутри» для каждого, вы внутри этого «контекста» XML (который похож на концепцию «контекста» в программировании)
Пример использования и повторного использования for-each
<xsl:for-each select="/xml/data/here">
... do some stuff ...
</xsl:for-each>
<xsl:for-each select="/xml/data/here">
... do some DIFFERENT stuff ...
</xsl:for-each>
Узлы for-each содержатся в узлах шаблона (2-й уровень повторного использования). Существует два типа узлов шаблона: Match и Named. Совпадение шаблонов узлов, действуют как для каждого узла, упомянутого выше, но автоматически вызываются механизмом шаблонов, если какие-либо узлы совпадают, когда начинается обработка XSL. Сопоставление узлов шаблона также может быть применено явно. С другой стороны, Именованные шаблоны узлы всегда применяются явным образом и могут рассматриваться как подобные функции.
Пример шаблона соответствия, который будет всегда вызываться (потому что корневой узел всегда будет существовать)
<xsl:template match="/">
... do some stuff ...
</xsl:template>
Шаблон соответствия, явно вызывающий другой шаблон соответствия
<xsl:template match="/">
<xsl:apply-templates select="xml/data/too" />
</xsl:template>
<xsl:template match="xml/data/too">
... do something ...
</xsl:template>
Примечание. Для работы шаблона Match должен существовать соответствующий XML-узел. Если этого не происходит, совпадения нет, поэтому вызывается шаблон , а не .
Пример именованного шаблона
<xsl:template name="WriteOut">
... data with NO Context Here ...
</xsl:template>
Или вызов Именованного шаблона из Соответствующего шаблона
<xsl:template match="/">
<xsl:call-template name="WriteOut" />
<xsl:template>
Примечание: Вы можете смешивать и сопоставлять, откуда вы называете сопоставленные и именованные шаблоны, вам просто нужно посмотреть, в каком контексте вы находитесь.
Все узлы шаблона хранятся в XSL Stylesheets , и вы можете включать и import различных таблиц стилей. Например, вы можете хранить все шаблоны, относящиеся к узлам заголовка HTML, в одном шаблоне, а все шаблоны, относящиеся к узлам тела HTML, - в другом. Затем вы можете создать одну таблицу стилей, которая включает таблицы стилей заголовка и тела.
Пример узла включения
<xsl:include href="header.xsl" />
В заключение можно выделить три способа абстрагирования фрагментов данных: для каждого, с помощью шаблонов или с помощью таблиц стилей.