14
votes

How can I add stylesheet reference with XSLT?

I'm trying to strip down some large input XML with the first transform, and need the second transform to be applied on the client. Thus the first transform has to output the correct reference, e.g.:

<?xml-stylesheet type="text/xsl" href="client.xsl"?>

To recap it's XML->transform1(server)->XML->transform2(client)->HTML

The only way I can make it to work so far is by using xsl:text disable-output-escaping and CDATA:

<xsl:text disable-output-escaping="yes"><![CDATA[<?xml-stylesheet type="text/xsl" href="/efo/efo_class.xsl"?>]]>

Surely there must be a better method.

1
Useful link regarding processing instructions xml.com/pub/a/2000/09/13/xslt/index.htmlTomasz

1 Answers

19
votes

Based on the XSLT spec, Creating Processing Instructions:

<xsl:processing-instruction name="xml-stylesheet">
  <xsl:text>type="text/xsl" href="client.xsl"</xsl:text>
</xsl:processing-instruction>

would create the processing instruction:

<?xml-stylesheet type="text/xsl" href="client.xsl"?>