I. 一个简单的方法:
这种转变:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:org="some:org" exclude-result-prefixes="org">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="org:specs">
<xmp>
<xsl:copy-of select="."/>
</xmp>
</xsl:template>
</xsl:stylesheet>
当应用于此 XML 文档时(提供的格式不正确的文本构成格式正确的 XML 文档):
<t xmlns:org="some:org">
<org:specs>
<org:wild animal="6" species="land"/>
<org:fish animal="7" species="water"/>
<org:bird animal="8" species="trees"/>
<org:mammal animal="9" species="land"/>
</org:specs>
</t>
产生:
<xmp>
<org:specs xmlns:org="some:org">
<org:wild animal="6" species="land"/>
<org:fish animal="7" species="water"/>
<org:bird animal="8" species="trees"/>
<org:mammal animal="9" species="land"/>
</org:specs>
</xmp>
这以所需的方式显示在浏览器中:
<org:specs xmlns:org="some:org">
<org:wild animal="6" species="land"/>
<org:fish animal="7" species="water"/>
<org:bird animal="8" species="trees"/>
<org:mammal animal="9" species="land"/>
</org:specs>
二、漂亮的、浏览器显示的 XML
请参阅XPath Visualizer的 XSLT 代码,此应用程序如何产生这样的结果。
三、将浏览器所需的所有输入生成为文本( method="text"
):
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="utf-8"/>
<xsl:template match="/*">
<xsl:apply-templates select="*[1]" mode="textify"/>
</xsl:template>
<xsl:template match="*/*[*]" mode="textify">
<xsl:text>&lt;</xsl:text>
<xsl:value-of select="name()"/>
<xsl:apply-templates select="@*" mode="textify"/>
<xsl:text>></xsl:text>
<xsl:apply-templates select="*|text()" mode="textify"/>
<xsl:text>&lt;/</xsl:text>
<xsl:value-of select="name()"/>
<xsl:text>></xsl:text>
</xsl:template>
<xsl:template match="*/*[not(node())]" mode="textify">
<xsl:text>&lt;</xsl:text>
<xsl:value-of select="name()"/>
<xsl:apply-templates select="@*" mode="textify"/>
<xsl:text>/></xsl:text>
</xsl:template>
<xsl:template match="@*" mode="textify">
<xsl:text> </xsl:text>
<xsl:value-of select="name()"/>
<xsl:text>="</xsl:text>
<xsl:value-of select="."/>
<xsl:text>"</xsl:text>
</xsl:template>
<xsl:template match="text()" mode="textify">
<xsl:call-template name="textify">
<xsl:with-param name="pText" select="."/>
</xsl:call-template>
</xsl:template>
<xsl:template name="textify">
<xsl:param name="pText"/>
<xsl:if test="string-length($pText) >0">
<xsl:variable name="vChar" select="substring($pText,1,1)"/>
<xsl:choose>
<xsl:when test="$vChar = ' '">
<xsl:value-of select="'&#xA0;'"/>
</xsl:when>
<xsl:when test="$vChar = '	'">
<xsl:value-of select="'&#xA0;&#xA0;'"/>
</xsl:when>
<xsl:when test="$vChar = '
'">
<xsl:value-of select="'<br />'"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$vChar"/>
</xsl:otherwise>
</xsl:choose>
<xsl:call-template name="textify">
<xsl:with-param name="pText" select=
"substring($pText, 2)"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
当这个转换应用于同一个 XML 文档(上图)时,它会产生想要的结果:
<org:specs><br />  <org:wild animal="6" species="land"/><br />  <org:fish animal="7" species="water"/><br />  <org:bird animal="8" species="trees"/><br />  <org:mammal animal="9" species="land"/><br /></org:specs>
它由浏览器显示为:
<org:specs>
<org:wild animal="6" species="land"/>
<org:fish animal="7" species="water"/>
<org:bird animal="8" species="trees "/>
<org:mammal animal="9" species="land"/>
</org:specs>