请注意上面的输出中,出现的第一个元素不是html而是test元素,因此不能满足条件(
2)因此得到的输出默认为XML形式;转换结果如下:
<?xml version="1.0" encoding="UTF-16"?>
<test>dfdf</test>
<html>10 + 5 + 7 = 22</html>
但是如果将test元素去掉,即原来的XSLT文档变成:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transfor
m">
<xsl:template match="/">
<html>
<xsl:text/>
<xsl:value-of select="//BBB[1]"/>
<xsl:text> + </xsl:text>
<xsl:value-of select="//BBB[2]"/>
<xsl:text> + </xsl:text>
<xsl:value-of select="//BBB[3]"/>
<xsl:text> = </xsl:text>
<xsl:value-of select="sum(//BBB)"/>
</html>
</xsl:template>
</xsl:stylesheet>
这是的转换以后的代码就变成
<html>10 + 5 + 7 = 22</html>
即原来的xml处理指令消失,转换结果是一个HTML文档。
XSLT可以将结果树输出成为纯文本,如下的例子就表示输出的结果是一个纯文本:
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v3.5 NT (http://www.xmlspy.com by Ya (amonic) -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transfor
m">
<xsl:output method="text"/>
<xsl:template match="/">
<html>
<xsl:text/>
<xsl:value-of select="//BBB[1]"/>
<xsl:text> + </xsl:text>
<xsl:value-of select="//BBB[2]"/>
<xsl:text> + </xsl:text>
<xsl:value-of select="//BBB[3]"/>
<xsl:text> = </xsl:text>
<xsl:value-of select="sum(//BBB)"/>
</html>
</xsl:template>
</xsl:stylesheet>
它的转换结果是:10 + 5 + 7 = 22,该结果是一个纯文本。
我们最后看一下encoding和indent属性
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v3.5 NT (http://www.xmlspy.com by Ya (amonic) -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transfor
m">
<xsl:output method="xml" indent="yes" encoding="utf-16"/>
<xsl:template match="/">
<html>
<xsl:text/>
<xsl:value-of select="//BBB[1]"/>
<xsl:text> + </xsl:text>
<xsl:value-of select="//BBB[2]"/>
<xsl:text> + </xsl:text>
<xsl:value-of select="//BBB[3]"/>
<xsl:text> = </xsl:text>
<xsl:value-of select="sum(//BBB)"/>
</html>
</xsl:template>
</xsl:stylesheet>
输出的结果是:
<?xml version="1.0" encoding="UTF-16"?>
<html>10 + 5 + 7 = 22</html>
可以看到默认得编码已经变成utf-16,并且自动完成缩进。
