|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Transforming XML to XML
Hi James,
If you want to let XML show up in the browser (and additionally add syntax
coloring), below is a stylesheet written originally by Jason Patterson. I
still use it without any modifications. The original link to it was:
http://www.topxml.com/snippetcentral/main.asp?view=viewsnippet&lang=&id=v200
10305161458
Try it out and you'll see what I mean :-)
HTH,
<prs/>
http://www.x2x2x.org/x2x2x/home/
http://sourceforge.net/projects/saxondotnet/
http://www.pietsieg.com/sections/XQuery/ArtXQueryBeg.aspx
**********************************
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" method="xml"/>
<xsl:param name="includexml" select="'yes'" />
<xsl:template match="/">
<blockquote>
<xsl:if test="$includexml = 'yes'">
<font style="color:green;font:10pt
'Verdana';">
<xsl:text><?xml
version="1.0"?></xsl:text>
</font>
</xsl:if>
<xsl:for-each select="node()">
<xsl:call-template name="formatxml">
<xsl:with-param name="selnode"
select="."/>
</xsl:call-template>
</xsl:for-each>
</blockquote>
</xsl:template>
<xsl:template name="formatxml">
<xsl:param name="selnode"/>
<xsl:param name="template-style">font:10pt
'Verdana';</xsl:param>
<xsl:param name="indent">0em;</xsl:param>
<xsl:param name="punctuation-style">color:blue;</xsl:param>
<xsl:param name="node-name-style">color:#990000;</xsl:param>
<xsl:param name="comment-style">color:gray;</xsl:param>
<xsl:param name="pi-style">color:green;</xsl:param>
<xsl:param name="attr-value-style">color:black;</xsl:param>
<xsl:param name="attr-name-style">color:red</xsl:param>
<div>
<xsl:choose>
<xsl:when test="self::comment()">
<xsl:attribute
name="style"><xsl:text>padding-left:</xsl:text><xsl:value-of
select="$indent"/></xsl:attribute>
<font
style="{$template-style}{$comment-style}">
<xsl:text><!--</xsl:text>
<xsl:value-of
select="$selnode"/>
<xsl:text>></xsl:text>
</font>
</xsl:when>
<xsl:when
test="self::processing-instruction()">
<xsl:attribute
name="style"><xsl:text>padding-left:</xsl:text><xsl:value-of
select="$indent"/></xsl:attribute>
<font
style="{$template-style}{$pi-style}">
<xsl:text><?</xsl:text>
<xsl:value-of
select="name()"/>
<xsl:text> </xsl:text>
<xsl:value-of select="."/>
<xsl:text>?></xsl:text>
</font>
</xsl:when>
<xsl:when test="self::text()">
<xsl:attribute
name="style"><xsl:text>display:inline;</xsl:text></xsl:attribute>
<font
style="{$template-style}{text-node-style}">
<xsl:call-template
name="html-replace-entities">
<xsl:with-param
name="text" select="$selnode"/>
</xsl:call-template>
</font>
</xsl:when>
<xsl:otherwise>
<xsl:attribute
name="style"><xsl:text>padding-left:</xsl:text><xsl:value-of
select="$indent"/></xsl:attribute>
<font
style="{$template-style}{$punctuation-style}">
<xsl:text><</xsl:text>
</font>
<font
style="{$template-style}{$node-name-style}">
<xsl:value-of
select="name($selnode)"/>
<xsl:for-each
select="$selnode/@*">
<xsl:text> </xsl:text>
<font
style="{$template-style}{$attr-name-style}">
<xsl:value-of select="name()"/>
</font>
<font
style="{$template-style}{$punctuation-style}">
<xsl:text>="</xsl:text>
</font>
<font
style="{$template-style}{$attr-value-style}">
<xsl:value-of select="."/>
</font>
<font
style="{$template-style}{$punctuation-style}">
<xsl:text>"</xsl:text>
</font>
</xsl:for-each>
<xsl:if
test="not(parent::*/parent::*)">
<xsl:for-each
select="namespace::*[position() > 1]">
<xsl:if
test="not(parent::*/parent::*)">
<xsl:text> </xsl:text>
<font style="{$template-style}{$attr-name-style}">
<xsl:text>xmlns</xsl:text>
<xsl:if test="string-length(name())>0"><xsl:text>:</xsl:text></xsl:if>
<xsl:value-of select="name()"/>
</font>
<font style="{$template-style}{$punctuation-style}">
<xsl:text>="</xsl:text>
</font>
<font style="{$template-style}{$attr-value-style}">
<xsl:value-of select="."/>
</font>
<font style="{$template-style}{$punctuation-style}">
<xsl:text>"</xsl:text>
</font>
</xsl:if>
</xsl:for-each>
</xsl:if>
</font>
<xsl:choose>
<xsl:when
test="count(node()) = 0">
<font
style="{$template-style}{$punctuation-style}">
<xsl:text>/></xsl:text>
</font>
</xsl:when>
<xsl:otherwise>
<font
style="{$template-style}{$punctuation-style}">
<xsl:text>></xsl:text>
</font>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
<xsl:for-each select="$selnode/node()">
<xsl:call-template name="formatxml">
<xsl:with-param name="selnode"
select="."/>
<xsl:with-param name="indent"
select="concat(number('2'),'em;')"/>
</xsl:call-template>
</xsl:for-each>
<xsl:choose>
<xsl:when test="self::text()"/>
<xsl:when test="count(node()) = 0"/>
<xsl:otherwise>
<font
style="{$template-style}{$punctuation-style}">
<xsl:text></</xsl:text>
</font>
<font
style="{$template-style}{$node-name-style}">
<xsl:value-of
select="name($selnode)"/>
</font>
<font
style="{$template-style}{$punctuation-style}">
<xsl:text>></xsl:text>
</font>
</xsl:otherwise>
</xsl:choose>
</div>
</xsl:template>
<xsl:template name="html-replace-entities">
<xsl:param name="text"/>
<xsl:variable name="tmp">
<xsl:call-template name="replace-substring">
<xsl:with-param name="from"
select="'>'"/>
<xsl:with-param name="to"
select="'&gt;'"/>
<xsl:with-param name="value">
<xsl:call-template
name="replace-substring">
<xsl:with-param name="from"
select="'<'"/>
<xsl:with-param name="to"
select="'&lt;'"/>
<xsl:with-param
name="value">
<xsl:call-template
name="replace-substring">
<xsl:with-param name="from" select="'"'"/>
<xsl:with-param name="to" select="'&quot;'"/>
<xsl:with-param name="value">
<xsl:call-template name="replace-substring">
<xsl:with-param name="from" select="concat('&','apos;')"/>
<xsl:with-param name="to" select="'&apos;'"/>
<xsl:with-param name="value">
<xsl:call-template name="replace-substring">
<xsl:with-param name="from" select="'&'"/>
<xsl:with-param name="to" select="'&amp;'"/>
<xsl:with-param name="value" select="$text"/>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="$tmp"/>
</xsl:template>
<xsl:template name="replace-substring">
<xsl:param name="value"/>
<xsl:param name="from"/>
<xsl:param name="to"/>
<xsl:choose>
<xsl:when test="contains($value,$from)">
<xsl:value-of
select="substring-before($value,$from)"/>
<xsl:value-of select="$to"/>
<xsl:call-template name="replace-substring">
<xsl:with-param name="value"
select="substring-after($value,$from)"/>
<xsl:with-param name="from"
select="$from"/>
<xsl:with-param name="to"
select="$to"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$value"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
**********************************
-----Original Message-----
From: Pilarski, James [mailto:James_Pilarski@xxxxxxxxxxxxxxxx]
Sent: Wednesday, August 11, 2004 3:40 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Transforming XML to XML
I have a very simple question about transforming XML to XML. I have been
using XSLT to transform XML to XHTML and displaying the result in Internet
Explorer. I would like to do the same but with XML displayed in the
browser. A search of the archives has not provided a satisfactory solution.
Here is a simplified XML file, testdata.xml:
<?xml-stylesheet type="text/xsl" href="renewal.xsl"?> <Data>
<car>Chevy</car>
<car>Dodge</car>
<car>Ford</car>
</Data>
Here is a copy of my XSL file:
<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="iso-8859-1" indent="yes"/>
<xsl:template match="/">
<xsl:apply-templates select="Data"/>
</xsl:template>
</xsl:stylesheet>
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








