<?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet href="PrettyPrintXslt" type="text/xml"?> <!-- XML to HTML Verbatim Formatter with Syntax Highlighting Version 1.0.2 GPL (c) Oliver Becker, 2000-08-12 obecker@informatik.hu-berlin.de --> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:verb="http://informatik.hu-berlin.de/xmlverbatim" exclude-result-prefixes="verb"> <xsl:output method="html" omit-xml-declaration="yes" indent="no"/> <xsl:template match="/"> <xsl:apply-templates select="." mode="xmlverb" /> </xsl:template> <!-- root --> <xsl:template match="/" mode="xmlverb"> <xsl:text> </xsl:text> <xsl:comment> <xsl:text> converted by xmlverbatim.xsl 1.0.2, (c) O. Becker </xsl:text> </xsl:comment> <xsl:text> </xsl:text> <div class="xmlverb-default"> <xsl:apply-templates mode="xmlverb"> <xsl:with-param name="root" select="true()"/> </xsl:apply-templates> </div> <xsl:text> </xsl:text> </xsl:template> <!-- wrapper --> <xsl:template match="verb:wrapper"> <xsl:apply-templates mode="xmlverb" /> </xsl:template> <xsl:template match="verb:wrapper" mode="xmlverb"> <xsl:apply-templates mode="xmlverb" /> </xsl:template> <!-- element nodes --> <xsl:template match="*" mode="xmlverb"> <xsl:param name="root" /> <xsl:text><</xsl:text> <xsl:variable name="ns-prefix" select="substring-before(name(),':')" /> <xsl:if test="$ns-prefix != ''"> <span class="xmlverb-element-nsprefix"> <xsl:value-of select="$ns-prefix"/> </span> <xsl:text>:</xsl:text> </xsl:if> <span class="xmlverb-element-name"> <xsl:value-of select="local-name()"/> </span> <xsl:variable name="pns" select="../namespace::*"/> <xsl:if test="$pns[name()=''] and not(namespace::*[name()=''])"> <span class="xmlverb-ns-name"> <xsl:text> xmlns</xsl:text> </span> <xsl:text>=""</xsl:text> </xsl:if> <xsl:for-each select="namespace::*"> <xsl:if test="not($pns[name()=name(current()) and .=current()])"> <xsl:call-template name="xmlverb-ns" /> </xsl:if> </xsl:for-each> <xsl:for-each select="@*"> <xsl:call-template name="xmlverb-attrs" /> </xsl:for-each> <xsl:choose> <xsl:when test="count(*)=0 and .=''"> <xsl:text> /></xsl:text> </xsl:when> <xsl:otherwise> <xsl:text>></xsl:text> <xsl:apply-templates mode="xmlverb" /> <xsl:text></</xsl:text> <xsl:if test="$ns-prefix != ''"> <span class="xmlverb-element-nsprefix"> <xsl:value-of select="$ns-prefix"/> </span> <xsl:text>:</xsl:text> </xsl:if> <span class="xmlverb-element-name"> <xsl:value-of select="local-name()"/> </span> <xsl:text>></xsl:text> </xsl:otherwise> </xsl:choose> <xsl:if test="$root"><br /><xsl:text> </xsl:text></xsl:if> </xsl:template> <!-- attribute nodes --> <xsl:template name="xmlverb-attrs"> <xsl:text> </xsl:text> <span class="xmlverb-attr-name"> <xsl:value-of select="name()"/> </span> <xsl:text>="</xsl:text> <span class="xmlverb-attr-content"> <xsl:call-template name="html-replace-entities"> <xsl:with-param name="text" select="normalize-space(.)" /> <xsl:with-param name="attrs" select="true()" /> </xsl:call-template> </span> <xsl:text>"</xsl:text> </xsl:template> <!-- namespace nodes --> <xsl:template name="xmlverb-ns"> <xsl:if test="name()!='xml'"> <span class="xmlverb-ns-name"> <xsl:text> xmlns</xsl:text> <xsl:if test="name()!=''"> <xsl:text>:</xsl:text> </xsl:if> <xsl:value-of select="name()"/> </span> <xsl:text>="</xsl:text> <span class="xmlverb-ns-uri"> <xsl:value-of select="."/> </span> <xsl:text>"</xsl:text> </xsl:if> </xsl:template> <!-- text nodes --> <xsl:template match="text()" mode="xmlverb"> <span class="xmlverb-text"> <xsl:call-template name="preformatted-output"> <xsl:with-param name="text"> <xsl:call-template name="html-replace-entities"> <xsl:with-param name="text" select="." /> </xsl:call-template> </xsl:with-param> </xsl:call-template> </span> </xsl:template> <!-- comments --> <xsl:template match="comment()" mode="xmlverb"> <xsl:param name="root" /> <xsl:text><!--</xsl:text> <span class="xmlverb-comment"> <xsl:call-template name="preformatted-output"> <xsl:with-param name="text" select="." /> </xsl:call-template> </span> <xsl:text>--></xsl:text> <xsl:if test="$root"><br /><xsl:text> </xsl:text></xsl:if> </xsl:template> <!-- processing instructions --> <xsl:template match="processing-instruction()" mode="xmlverb"> <xsl:param name="root" /> <xsl:text><?</xsl:text> <span class="xmlverb-pi-name"> <xsl:value-of select="name()"/> </span> <xsl:if test=".!=''"> <xsl:text> </xsl:text> <span class="xmlverb-pi-content"> <xsl:value-of select="."/> </span> </xsl:if> <xsl:text>?></xsl:text> <xsl:if test="$root"><br /><xsl:text> </xsl:text></xsl:if> </xsl:template> <!-- =========================================================== --> <!-- Procedures / Functions --> <!-- =========================================================== --> <!-- generate entities by replacing &, ", < and > in $text --> <xsl:template name="html-replace-entities"> <xsl:param name="text" /> <xsl:param name="attrs" /> <xsl:variable name="tmp"> <xsl:call-template name="replace-substring"> <xsl:with-param name="from" select="'>'" /> <xsl:with-param name="to" select="'>'" /> <xsl:with-param name="value"> <xsl:call-template name="replace-substring"> <xsl:with-param name="from" select="'<'" /> <xsl:with-param name="to" select="'<'" /> <xsl:with-param name="value"> <xsl:call-template name="replace-substring"> <xsl:with-param name="from" select="'&'" /> <xsl:with-param name="to" select="'&'" /> <xsl:with-param name="value" select="$text" /> </xsl:call-template> </xsl:with-param> </xsl:call-template> </xsl:with-param> </xsl:call-template> </xsl:variable> <xsl:choose> <!-- $text is an attribute value --> <xsl:when test="$attrs"> <xsl:call-template name="replace-substring"> <xsl:with-param name="from" select="' '" /> <xsl:with-param name="to" select="' '" /> <xsl:with-param name="value"> <xsl:call-template name="replace-substring"> <xsl:with-param name="from" select="'"'" /> <xsl:with-param name="to" select="'"'" /> <xsl:with-param name="value" select="$tmp" /> </xsl:call-template> </xsl:with-param> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$tmp" /> </xsl:otherwise> </xsl:choose> </xsl:template> <!-- replace in $value substring $from with $to --> <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> <!-- preformatted output: space as , tab as 8 nl as <br> --> <xsl:template name="preformatted-output"> <xsl:param name="text" /> <xsl:call-template name="output-nl"> <xsl:with-param name="text"> <xsl:call-template name="replace-substring"> <xsl:with-param name="value" select="translate($text,' ',' ')" /> <xsl:with-param name="from" select="' '" /> <xsl:with-param name="to" select="' '" /> </xsl:call-template> </xsl:with-param> </xsl:call-template> </xsl:template> <!-- output nl as <br> --> <xsl:template name="output-nl"> <xsl:param name="text" /> <xsl:choose> <xsl:when test="contains($text,' ')"> <xsl:value-of select="substring-before($text,' ')" /> <br /> <xsl:text> </xsl:text> <xsl:call-template name="output-nl"> <xsl:with-param name="text" select="substring-after($text,' ')" /> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$text" /> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet>