Tak, możliwe jest osadzenie XSLT wewnątrz kodu XML.
XSLT to plik XML, więc po prostu trzeba upewnić się, że można umieścić go wewnątrz elementu dokumentu pliku XML, tak, że plik XML jest nadal dobrze uformowane.
W rzeczywistości it is described in the XSLT specification:
Normalnie stylów XSLT jest kompletnym dokumentem XML z elementem xsl: stylesheet jako element dokumentu. Jednak arkusz stylów XSLT może być również osadzony w innym zasobie. Możliwe są dwie formy osadzania:
- arkusza stylów XSLT można tekstowo wbudowane w nie-XML zasobów lub
- Element xsl: stylesheet mogą wystąpić w dokumencie XML inny niż jako dokumentu element.
Aby ułatwić drugą formę osadzania, element xsl: stylesheet element może mieć atrybut ID, który określa unikalny identyfikator.
UWAGA: W celu takiego atrybutu do użycia z funkcją id XPath , to musi być rzeczywiście zadeklarowana w DTD jako identyfikator.
Poniższy przykład pokazuje, w jaki sposób można użyć instrukcji Xml-stylesheet do przetwarzania [Arkusz stylów XML], aby umożliwić dokumentowi zawieszenie własnego arkusza stylów. Odwołanie URI używa względną URI z identyfikator fragmentu zlokalizować elementem 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>
UWAGA: arkusza stylów, jest osadzony w dokumencie, do którego jest być zastosowany lub taki, który może być zawarty lub zaimportowany do arkusza stylów, który jest tak osadzony, musi zawierać regułę szablonu, która określa, że elementy xsl: stylesheet mają być ignorowane.
W zależności od tego, w jaki sposób zamierzasz go wykorzystać, osadzone arkusze stylów mogą nie być obsługiwane. Na przykład w IE 6/7/8.There are some workarounds.