上票县国土资源局电话:可扩展样式表语言转换XSLT技巧

来源:百度文库 编辑:中财网 时间:2024/04/25 22:41:44
可扩展样式表语言转换XSLT技巧:轻松控制HTML样式表
2003年04月01日15:50:26赛迪网 Nicholas Chase
同城约会

南昌/征友北京上海
广州深圳
成都杭州
重庆沈阳
武汉南京
全国城市上传我的照片
',1)">最近一小时热门文章
熊猫股价下跌 投资者不看好熊猫收购阿尔卡特
10日IT:微软放松硬件许可 韩国推行移动银行
直接有效成本低 互联网将成为消费维权新手段
幕后投资人首次对外开口:我们投资3721赚了5倍
手机彩屏无标准投诉难 专家呼吁出台划分标准
网易拍卖

有货要卖
频道精选
网易公司财报将实现净盈利2700万元
网易公司收入增长脚踏实地迈向盈利
网易公司第三季度财务表盈利2530万
网易公司可望率先摆脱"垃圾股"概念
可扩展样式表语言转换(Extensible Stylesheet Language Transformations,XSLT)提供了两种不同的方法来实现在转换单个源文档时组合几个样式表。在这一过程中,几乎必然有不止一个模板可以应用于单个节点。实际应用哪个模板取决于主样式表中是否包含该模板以及是如何包含的。本技巧文章说明了如何使用这些冲突解决规则向用户提供对样式问题的控制(但不是过多的控制)。
注:对于本篇技巧文章,可以使用任何XSLT处理器(如Xalan或Saxon)或基于浏览器的解决方案(如 Microsoft Internet Explorer 或 Mozilla)。
基本文档
本技巧文章描述了将XML公告转换成HTML的样式表。总体目标是提供缺省模板,但允许用户有足够的自由度来按照自己的期望更改样式表的某些方面。而其它方面则不能更改。样式表使用以下源文档:
清单 1. 源文档
Contest Announcement Do you love Pop's Homemade Mashed Potato Mix? Are you artistic? Well, here's your big big chance! Loopy Foods, the company that brings you Pop's Homemade Mashed Potato Mix and Aunt Susie's Squash in a Box is hosting a Mashed Potato Sculpting Contest. Send your entry today. Contest rules are on the back of every box of Pop's Homemade Mashed Potato Mix.
目标是要用象下面这样的样式表创建一个 HTML 页:
清单 2. 基本样式表
<xsl:value-of select="announcement/headline"/>


结果是产生一个文档,它为每一个公告创建一个段落,并以粗体表示产品名:
清单 3. 基本转换结果
Contest Announcement

Contest Announcement

Do you love Pop's Homade Mashed Potato Mix? Are you artistic? Well, here's your big big chance! Loopy Foods, the company that brings you Pop's Homemade Mashed Potato Mix and Aunt Susie's Squash in a Box is hosting a Mashed Potato Sculpting Contest. Send your entry today. Contest rules are on the back of every box of Pop's Homemade Mashed Potato Mix.


创建模板样式表
利用这些模板,管理员可以构建一个基本样式表,这个表使用户能够使用缺省样式,但允许他们根据需要使用定制样式。要这样做,需要将基本模板包含在第二个样式表(在本例中是 import.xsl)中:
清单 4. 导入的样式表(import.xsl)


从那里,事情是创建一个导入主样式的样式表。正确导入后,只包含主模板的样式表仍按期望的那样工作,但如果添加了其它模板,那个模板就在导入时覆盖了相应的模板:
清单 5. 覆盖导入的模板
<xsl:value-of select="announcement/headline"/>
导入的样式表的优先级比主样式表的低,所以使用主样式表中的产品模板,而不是导入的产品模板:
清单 6. 覆盖后的模板结果
Contest Announcement

Contest Announcement

Do you love Pop's Homade Mashed Potato Mix? Are you artistic? Well, here's your big big chance! Loopy Foods, the company that brings you Pop's Homemade Mashed Potato Mix and Aunt Susie's Squash in a Box is hosting a Mashed Potato Sculpting Contest. Send your entry today. Contest rules are on the back of every box of Pop's Homemade Mashed Potato Mix.


即使覆盖了模板,您仍有机会使用导入的模板,不过要使用 apply-imports 选项:
清单 7. 应用导入
...
结果,原始模板和导入的模板都能执行:
清单 8. 使用覆盖后的模板
Contest Announcement

Contest Announcement

Do you love Pop's Homade Mashed Potato Mix? Are you artistic? Well, here's your big big chance! Loopy Foods, the company that brings you Pop's Homemade Mashed Potato Mix and Aunt Susie's Squash in a Box is hosting a Mashed Potato Sculpting Contest. Send your entry today. Contest rules are on the back of every box of Pop's Homemade Mashed Potato Mix.


导入与包含的区别
导入元素必须始终是顶级元素,而且必须始终在任何其它元素之前。这个要求根据优先级产生了特定的结果。在XSLT样式表中,所处理的最后一个模板的优先级高于在其之前的任何东西,所以总是会覆盖导入模板。导入模板也成为导入树的一部分,因此它们可用于 apply-imports 元素。
另一方面,也可以用include元素来包含样式表,该元素简单地将样式表添加到主样式表中包含它们的位置。此外,尽管样式表必须包含在顶层,而它可以添加在任何位置,因此可以方便地将其添加在页面底部,覆盖用户可能添加的任何模板。
例如,可以创建一个设置版权信息的包含样式表,名为 include.xsl:
清单 9. 包含的样式表(include.xsl)

Copyright 2003, Loopy Foods


当主样式表的末尾包含该样式表时,该样式表覆盖任何其它模板:
清单 10. 包含样式表
...

Copyright now, by ME


所以,即使主样式表包含 copyright 模板,仍使用包含的模板:
清单 11. 包含结果:
... Sculpting Contest. Send your entry today. Contest rules are on the back of every box of Pop's Homemade Mashed Potato Mix.

Copyright 2003, Loopy Foods


请记住优先级与位置有关;如果在主样式表的开始位置而非底部包含样式表(include.xsl),就会变成使用主样式表(style.xsl)中的 copyright 模板。
结束语
除了导入和包含的基本规则外,XSLT通过使用优先级属性还允许对应用哪个模板进行细粒度的控制。通过明智地使用所有这些技术,您可以使用户能够定制样式表的特定部分,同时仍保持对其余部分的控制。
参考资料
请查看 W3C 的 XSLT 1.0 建议书。
请查看“XML for Data: XSL style sheets: push or pull?”(developerWorks,2002 年 5 月)和“Multi-pass XSLT”(developerWorks,2002 年 9 月),了解构造样式表的不同方法。
学习“Developing XSL Transformations with WebSphere Studio”教程(developerWorks,2002 年 4 月)来了解 WebSphere Studio 工具如何帮助开发 XSLT 样式表。
在 developerWorks XML 专区中找到更多 XML 参考资料。
请了解一下 IBM WebSphere Studio Application Developer,这是一个易于使用的集成开发环境,可以用来构建、测试和部署 J2EE 应用程序,包括从 DTD 和模式生成 XML 文档。
搞清楚如何成为一个 XML 及相关技术的 IBM 认证开发人员。
希望我们每周向您发送与此类似的有用 XML 技巧吗?请注册订阅 developerWorks XML 技巧时事通讯。