|
XSLT的处理模型(3)
|
|
| |
|
来源:XSLT.org.cn 作者:XSLT专业站 发布时间:2007-08-04
|
|
XSLT的处理模型(3)
那么一个XML文档,在XSLT看来,它的树形模型到底是什么样的呢?我们还是以代码
<?xml version="1.0" encoding="UTF-16"?> <?xml-stylesheet type="text/xsl" href="helloworld.xslt"?> <root> <name>Hehangjun</name> <name>何杭军</name> </root>
为例,对应于该XML文档的树形用下图表示: 从上图中我们可以看出两点,XSLT的树模型非常类似于DOM规范中规定的树形结构;并且XSLT的树模型省略了处理指令,不仅如此在XSLT的源树结构中还省略了XML文档中的注释元素,因此对于源树来说根结点只有一个元素节点,这一点特别重要。结果树的模型在总体上和源树非常类似,但是也有一些细微的不同,最明显得差别表现在结果树的根元素可以有不止一个的子节点,这样XSLT的转换结果中就可能出现多个文档元素,换句话说转换出来的XML文档可能不是一个语法正确的XML文档(XML语法规定文档只能有一个文档元素)。这在XSLT的规范中是合法的,XSLT规范规定"结果树不构成良定义的XML是可能的,但是它必须可以充当良定义的XML文档的部分",它的意思是转换得到的文档除了"只有一个文档元素"这一条不满足XML语法的要求意外,其它的XML语法都满足。举例来说,下述的转换结果是XSLT能做到的:
<people> <name>Hehangjun</name> </people> <people> <name>何杭军</name> </people>
要得到上述合理的输出,可以这样写XSLT文档:
<?xml version="1.0" encoding="UTF-16"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/root"> <xsl:for-each select="name"> <people><name> <xsl:value-of select="."/> </name></people> </xsl:for-each> </xsl:template> </xsl:stylesheet>
标题: XSLT的处理模型(3)
关键字:处理模型 XML XSLT 元素 结果 转换 语法
|
| 上一篇:XSLT的处理模型(2) 下一篇:XSLT的处理模型(4) |
|
|
|
|
|