xsl.xmltobbs

来源:互联网 发布:阿里云搭建ss 贴吧 编辑:程序博客网 时间:2024/04/29 07:25
BBSXSL.xslt
<?xml version="1.0" encoding="GB2312"?>
<?xml-stylesheet type="text/xsl" href="#"?>
<!DOCTYPE xsl:transform [
<!ENTITY esc "&#27;"
>
]>
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    
<xsl:template match="/">
        
<xsl:apply-templates select="." mode="node"/>
    
</xsl:template>
    
<xsl:template match="*" mode="node">
        
<xsl:param name="indent" select="0"/>
        
<xsl:choose>
            
<xsl:when test="count(*)=0"><xsl:apply-templates select="." mode="nodenochild"><xsl:with-param name="indent" select="$indent"/></xsl:apply-templates></xsl:when>
            
<xsl:otherwise><xsl:apply-templates select="." mode="nodehavechild"><xsl:with-param name="indent" select="$indent"/></xsl:apply-templates></xsl:otherwise>
        
</xsl:choose>
    
</xsl:template>
    
<xsl:template match="*" mode="nodenochild">
        
<xsl:param name="indent"/>
        
<div>
            
<xsl:call-template name="indent"><xsl:with-param name="indent" select="$indent"/></xsl:call-template>
            
<xsl:call-template name="lt"/>
            
<xsl:apply-templates select="." mode="nodename"/>
            
<xsl:apply-templates select="." mode="attributes"/>
            
<xsl:call-template name="slash"/>
            
<xsl:call-template name="gt"/>
        
</div>
    
</xsl:template>
    
<xsl:template match="*" mode="nodehavechild">
        
<xsl:param name="indent"/>
        
<div>
            
<xsl:call-template name="indent"><xsl:with-param name="indent" select="$indent"/></xsl:call-template>
            
<xsl:call-template name="lt"/>
            
<xsl:apply-templates select="." mode="nodename"/>
            
<xsl:apply-templates select="." mode="attributes"/>
            
<xsl:call-template name="gt"/>
        
</div>
        
<xsl:apply-templates select="*" mode="node"><xsl:with-param name="indent" select="$indent + 1"/></xsl:apply-templates>
        
<div>
            
<xsl:call-template name="indent"><xsl:with-param name="indent" select="$indent"/></xsl:call-template>
            
<xsl:call-template name="lt"/>
            
<xsl:call-template name="slash"/>
            
<xsl:apply-templates select="." mode="nodename"/>
            
<xsl:call-template name="gt"/>
        
</div>
    
</xsl:template>
    
<xsl:template match="*" mode="attributes">
        
<xsl:for-each select="@*">
            
<xsl:text>&#32;</xsl:text>
            
<xsl:text>&esc;[1;31m</xsl:text>
            
<xsl:value-of select="name()"/>
            
<xsl:text>&esc;[0m</xsl:text>
            
<xsl:text>&esc;[1;32m=&quot;&esc;[0m</xsl:text>
            
<xsl:text>&esc;[1;35m</xsl:text>
            
<xsl:value-of select="."/>
            
<xsl:text>&esc;[0m</xsl:text>
            
<xsl:text>&esc;[1;32m&quot;&esc;[0m</xsl:text>
        
</xsl:for-each>
    
</xsl:template>
    
<xsl:template name="lt">
        
<xsl:text>&esc;[1;34m&lt;&esc;[0m</xsl:text>
    
</xsl:template>
    
<xsl:template name="gt">
        
<xsl:text>&esc;[1;34m&gt;&esc;[0m</xsl:text>
    
</xsl:template>
    
<xsl:template name="slash">
        
<xsl:text>&esc;[1;34m/&esc;[0m</xsl:text>
    
</xsl:template>
    
<xsl:template match="*" mode="nodename">
        
<xsl:text>&esc;[1;33m</xsl:text>
        
<xsl:value-of select="name()"/>
        
<xsl:text>&esc;[0m</xsl:text>
    
</xsl:template>
    
<xsl:template name="indent">
        
<xsl:param name="indent" select="0"/>
        
<xsl:text>&esc;[</xsl:text>
        
<xsl:value-of select="$indent * 2"/>
        
<xsl:text>C</xsl:text>
    
</xsl:template>
</xsl:transform><!-- Stylus Studio meta-information - (c) 2004-2005. Progress Software Corporation. All rights reserved.
<metaInformation>
<scenarios ><scenario default="yes" name="Scenario1" userelativepaths="no" externalpreview="no" url="file:///d:/XML/xs.sequence/xs.sequence.xsd" htmlbaseurl="" outputurl="" processortype="internal" useresolver="yes" profilemode="0" profiledepth="" profilelength="" urlprofilexml="" commandline="" additionalpath="" additionalclasspath="" postprocessortype="none" postprocesscommandline="" postprocessadditionalpath="" postprocessgeneratedext="" validateoutput="no" validator="internal" customvalidator=""/></scenarios><MapperMetaTag><MapperInfo srcSchemaPathIsRelative="yes" srcSchemaInterpretAsXML="no" destSchemaPath="" destSchemaRoot="" destSchemaPathIsRelative="yes" destSchemaInterpretAsXML="no"/><MapperBlockPosition></MapperBlockPosition><TemplateContext></TemplateContext><MapperFilter side="source"></MapperFilter></MapperMetaTag>
</metaInformation>
-->
 
原创粉丝点击