This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: indent XML doc based on spaces?
- To: xsl-list at mulberrytech dot com
- Subject: Re: indent XML doc based on spaces?
- From: mnaughto at amadeus dot net
- Date: Thu, 5 Oct 2000 09:54:44 +0100
- Reply-To: xsl-list at mulberrytech dot com
Hi Joshua,
I didn't check your algorithm, but here is a stylesheet I use to display
colour-coded and indented XML, in case it provides useful ideas.
Having set the FONT to Courier, it achieves the indenting at each level with
this HTML technique:
<DIV STYLE="margin-left:1em;">
This version uses the obsolete IE5 XSL namespace.
If this is useful, I can't claim the credit - I didn't write this stylesheet...
Anyway, here's the code:
<?xml version="1.0"?>
<!-- Generic stylesheet for viewing XML -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<!-- This template will always be executed, even if this stylesheet is not run
on the document root -->
<xsl:template>
<DIV STYLE="font-family:Courier; font-size:10pt; margin-bottom:2em">
<!-- Scoped templates are used so they don't interfere with the "kick-off"
template. -->
<xsl:apply-templates select=".">
<xsl:template><xsl:apply-templates/></xsl:template>
<xsl:template match="*">
<DIV STYLE="margin-left:1em; color:gray">
<<xsl:node-name/><xsl:apply-templates select="@*"/>/>
</DIV>
</xsl:template>
<xsl:template match="*[node()]">
<DIV STYLE="margin-left:1em">
<SPAN STYLE="color:gray"><<xsl:node-name/><xsl:apply-templates
select="@*"/>></SPAN><xsl:apply-templates select="node()"/><SPAN
STYLE="color:gray"></<xsl:node-name/>></SPAN>
</DIV>
</xsl:template>
<xsl:template match="@*">
<SPAN STYLE="color:navy"> <xsl:node-name/>="<SPAN
STYLE="color:black"><xsl:value-of /></SPAN>"</SPAN>
</xsl:template>
<xsl:template match="pi()">
<DIV STYLE="margin-left:1em;
color:maroon"><?<xsl:node-name/><xsl:apply-templates select="@*"/>?></DIV>
</xsl:template>
<xsl:template match="cdata()"><pre><![CDATA[<xsl:value-of
/>]]></pre></xsl:template>
<xsl:template match="textNode()"><xsl:value-of /></xsl:template>
</xsl:apply-templates>
</DIV>
</xsl:template>
</xsl:stylesheet>
Thanks,
Martin
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list