下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、用xslt将xml解析成xhtml的代码_ 用法xslt进行解析的基本格式是这样的:如 代码如下: ?xml version=1.0 encoding=GB2312? xsl:stylesheet version=1.0 xmlns:xsl=l version=1.0 encoding=GB2312 indent=yes/ xsl:template match=/ html body /这里可以包含一些xhtml的标签 /body /html /xsl:template /xsl:stylesheet XSL 指扩展样式表语言(EXtensible Stylesheet Language),x
2、sl是xml的样式表,xsl 包括3部分,分别是:xslt(一种用于转换 XML 文档的语言)、x-path(一种用于在 XML 文档中导航的语言)、xsl-fo(一种用于格式化 XML 文档的语言),可以在l version=1.0 encoding=GB2312 indent=yes/ xsl:template match=/ html body xsl:apply-templates select=person xsl:with-param name=level select=0/ /xsl:apply-templates /body /html /xsl:template xsl:te
3、mplate match=person xsl:param name=level/ p style=text-indent:$levelemname:xsl:value-of select=name/,sex:xsl:value-of select=sex/,age:xsl:value-of select=age/p xsl:apply-templates select=person xsl:with-param name=level select=$level + 2/ /xsl:apply-templates /xsl:template /xsl:stylesheet 在这里我们先在模板中
4、定义了一个叫level的参数,用xsl:param name=level/这样的语法,然后在主template(xsl:template match=/./xsl:template)添加模板的时候给参数赋值, xsl:apply-templates select=person xsl:with-param name=level select=0/ /xsl:apply-templates,参数level的值一开头赋值为“0”,而我们用参数level的值($level)来作缩进的值,如text-indent:$levelem,所以渲染xml内容的时候,第一层没有缩进,渲染完第一层后,我们通过 x
5、sl:apply-templates select=person xsl:with-param name=level select=$level + 2/ /xsl:apply-templates 这样的方法将参数level的值进行了累加从而实现了递归,这样每渲染一层,参数值就加上2,从而实现了不同层次的缩进来实现家族树的结构;这里还要说一下,我们通过+属性如name来取节点属性的值。 二、用参数实现隔行换色: 还是引用上面的例子,以及参数level,我们在递归的时候给参数+1(奇数)而不是+2 (偶数),通过(. test=$level mod 2 = 0)或(. test=$level m
6、od 2 = 1)就可以实现选取奇数行还是偶数行,我们用xsl:choose xsl:when test=$level mod 2 = 0./xsl:when xsl:otherwise./xsl:otherwise /xsl:choose给奇数行和偶数行不同的background-color,从而实现了隔行换色的效果,具体代码如下: 代码如下: ?xml version=1.0 encoding=GB2312? xsl:stylesheet version=1.0 xmlns:xsl=l version=1.0 encoding=GB2312 indent=yes/ xsl:template
7、 match=/ html body xsl:apply-templates select=person xsl:with-param name=level select=0/ /xsl:apply-templates /body /html /xsl:template xsl:template match=person xsl:param name=level/ xsl:choose xsl:when test=$level mod 2 = 0 p style=text-indent:$levelem;background-color:#DDDname:xsl:value-of select
8、=name/,sex:xsl:value-of select=sex/,age:xsl:value-of select=age/p /xsl:when xsl:otherwise p style=text-indent:$levelem;background-color:#EEEname:xsl:value-of select=name/,sex:xsl:value-of select=sex/,age:xsl:value-of select=age/p /xsl:otherwise xsl:apply-templates select=person xsl:with-param name=l
9、evel select=$level + 1/ /xsl:apply-templates /xsl:template /xsl:stylesheet 三、符号转义以及CDATA语法: 目前碰到的只有“”和“” 要转义成和假如在表达式里消失这两个符号,页面在预览的时候就会报错; 另外我们需要将原文件的内容原封不动的输出来,包括换行或上面的大于和小于号等页面元素,这时候就需要CDATA这个标签, CDATA全称character data,翻译为字符数据,数据不进行转义挺直输出。语法格式如下: !CDATA这里放置需要显示的字符 例如: !CDATAperson name=ason/person
10、在页面上显示的内容将是person name=ason/person; 四、几个教程中并没有提到的名词: 1、local-name();例子:xsl:value-of select=local-name()/,这里所表达的意思就是当前节点的名字。 2、xsl:call-template name= mode=./xsl:call-template,call-template和apply-template的区分,简洁说apply是应用,call是调用。 用apply时,引擎自动搜索与当前select指定xpath的匹配节点相匹配的template(该template必需有属性match)并用法该
11、template进行处理,此时需要指定的是select的path。 用call时就跟其它语言调用函数一样,必需指定name属性,相应的,该template必需有name属性,当然,也可以在这时with-param(当然相应的模板中有对应的param才行,不过这个不强制要求)。通过设置mode属性可以调用同一内容的不同表现形式,这个由自己去定义。 3、count(ancestor:*)这种写法是计算当前节点有多少个祖先节点,当然 ancestor也可以用child,following-sibling等xpath关系。 五、对于要符合多条件的推断,xslt不能很好的支持: 以家族树为例,我要取一个位于其次层的,名字叫Lichao的人,假如按字面理解我们可以写成xsl:when test=count(ancestor:*)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论