Sì, è possibile incorporare l'XSLT all'interno dell'XML.
XSLT è un file XML, quindi si sarebbe solo bisogno di fare in modo che si inserisce all'interno del documento elemento del file XML, in modo che il file XML è ancora ben formato.
Infatti, it is described in the XSLT specification:
normalmente un foglio di stile XSLT è un documento XML completo con la xsl: stylesheet come elemento documento. Tuttavia, un foglio di stile XSLT può anche essere incorporato in un'altra risorsa. Due forme di incorporamento sono possibili:
- il foglio di stile XSLT può essere testualmente incorporato in un non-XML risorsa o
- l'elemento xsl: stylesheet possono verificarsi in un documento XML diverso come il documento elemento.
Per facilitare la seconda forma di incorporamento, xsl: stylesheet è consentito avere un attributo ID che specifica un identificatore univoco.
NOTA: Affinché tale attributo da utilizzare con la funzione XPath id , si deve effettivamente essere dichiarato nella DTD come un ID.
Il seguente esempio mostra come il foglio di stile xml che elabora l'istruzione [Foglio di stile XML] può essere utilizzato per consentire a un documento di di contenere il proprio foglio di stile. Il riferimento URI utilizza un URI relativo con di frammento per localizzare l'elemento 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>
NOTA: Un foglio di stile incorporato nel documento di cui deve essere applicato o che può essere incluso o importato in un foglio di stile che è così incorporato in genere deve contenere una regola modello che specifica che xsl: gli elementi del foglio di stile devono essere ignorati.
A seconda di come si prevede di sfruttarlo, i fogli di stile incorporati potrebbero non essere supportati. Ad esempio, in IE 6/7/8.There are some workarounds.
fonte
2011-08-20 14:35:54