Ответ 1
Да, возможно встроить XSLT внутри вашего XML.
XSLT - это XML файл, поэтому вам просто нужно убедиться, что вы поместили его внутри элемента документа вашего XML файла, так что XML файл все еще хорошо сформирован.
Фактически описывается в спецификации XSLT:
2.7 Внедрение стилей
Обычно таблица стилей XSLT представляет собой полный XML-документ с xsl: элемент stylesheet как элемент документа. Однако XSLT таблица стилей также может быть встроена в другой ресурс. Две формы возможно внедрение:
- таблица стилей XSLT может быть встроена в текст без XML ресурс или
- Элемент xsl: stylesheet может встречаться в XML-документе, отличном от как элемент документа.
Чтобы облегчить вторую форму вложения, элемент xsl: stylesheet разрешено иметь атрибут идентификатора, который задает уникальный идентификатор.
ПРИМЕЧАНИЕ.. Чтобы этот атрибут использовался с идентификатором XPath функции, он должен быть фактически объявлен в DTD как идентификатор.
В следующем примере показано, как обработка xml-stylesheet команда [XML Stylesheet] может использоваться, чтобы позволить документу содержат собственную таблицу стилей. Ссылка URI использует относительный URI с идентификатор фрагмента, чтобы найти элемент xsl: stylesheet:
<?xml-stylesheet type="text/xml" href="#style1"?>
<!DOCTYPE doc SYSTEM "doc.dtd">
<doc>
<head>
<xsl:stylesheet id="style1"
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:import href="doc.xsl"/>
<xsl:template match="id('foo')">
<fo:block font-weight="bold"><xsl:apply-templates/></fo:block>
</xsl:template>
<xsl:template match="xsl:stylesheet">
<!-- ignore -->
</xsl:template>
</xsl:stylesheet>
</head>
<body>
<para id="foo">
...
</para>
</body>
</doc>
ПРИМЕЧАНИЕ. Таблица стилей, встроенная в документ, к которому она относится. применяется или может быть включено или импортировано в таблицу стилей, которая как правило, должно содержать правило шаблона, которое указывает, что элементы xsl: stylesheet должны игнорироваться.
В зависимости от того, как вы планируете использовать его, встроенные таблицы стилей могут не поддерживаться. Например, в IE 6/7/8. Есть некоторые обходные пути.