`
Jameslyy
  • 浏览: 403336 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

XML和XSLT

阅读更多

XML: Extensible Markup Language 可扩展标记语言

1、XML相关知识

        XML是从1996年开始有其雏形,并向 W3C(全球信息网联盟)提案,而在1998二月发布为W3C的标准(XML1.0)。 XML的前身是SGML(The Standard Generalized Markup Language),是自IBM从60年代就开始发展的 GMLGeneralized Markup Language)标准化后的名称。

        DTD,XML文件的文件类型描述(DTD)可以看成一个或者多个XML文件的模板,在这里可以定义XML文件中的元素、元素的属性、元素的排列方式、元素包含的内容等等。 Document type Definition(文档类型定义),它为一个XML文档或者文档集合建立一套规则。它本身不是独立的技术规范,而是属于规范的一部分,XML文档中的文档类型声明既可以是标记约束,也可以是带有标记约束的外部文档。这两种约束的总和就是DTD。它规定了XML文档的构建方式。

       XML Schema,XML Schema描述了XML文档的结构。可以用一个指定的XML Schema(通常以xsd扩展名结尾)来验证某个XML文档,以检查该XML文档是否符合其要求。如果符合的话,那么该XML文档被称为是有效的(valid),否则它就是非有效的(invalid)。可以通过XML Schema指定一个XML文档所允许的结构和内容,并可据此检查一个XML文档是否是有效的。

      XML Schema不是唯一的描述XML结构化文档的方法,相类似的技术还有DTDs和RNG Schema。

      XSD是XML Schemas Definition的缩写,也是XML Schema文件的扩展名。

 2、XML示例

       有三个通用术语用来描述 XML 文档的组成部分:标记、元素和属性。XML是被设计用来存储数据、携带数据和交换数据的。

       命名空间

       它指定一组可以在特定文档中使用的元素名称和属性名称。命名空间的作用是避免命名冲突。命名空间由文档声明中的 xmlns 属性指定,实际上就是网站的地址(例如 http://www.w3.org/1999/XSL/Transform)。其基本原理是 URI 具有唯一性,因此相应的命名空间也是唯一的。文档声明中的 URI 仅用作名称。

XSLT: Extensible Stylesheet Language Transformation 可扩展样式表语言转换

 

        XSL(EXtensible Stylesheet Language)它是指可扩展样式表语言。 XSL之于 XML 就像 CSS 之于 HTML。说白了就是将XML中的数据用指定的显示格式输出.XML不像HTML,它不包含任何显示格式的信息. XSL 包含两个部分:

  • XSLT – 用于转换 XML 文档的语言. XSLT 是指 XSL 转换 (XSL Transformation)
  • XPath – 用于在 XML 文档中导航的语言

XSL 语法

任何 XSL 文档的第一行实际上都是 XML 声明:<?xml version="1.0" encoding="GB2312"?>

XSL 与 XML ?遵循相同的语法规则
在 XML 声明之后,就是 XSL 声明,例如:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
......
</xsl:stylesheet>

XSL声明必须要有结束标签,上面的声明中还包含命名空间和 XSL 规范的版本。

模板或规则

XSL 文档是由模板或规则构成,每个模板定义应用于特定 XML 节点的规则。XSL 模板如下所示:

<xsl:template match="/">......</xsl:template>

模板的作用是用来承载XML文档中的数据的,就像一个模具,如果这个模具是方形的,那么用这个模具做出来的模型也一定是方形的,而XML文档中的数据就是用来真充模具的原料。实际上在模板中可以嵌套子模板,但最上层模板必须将match设为"/"。

happyold.xml

xml 代码
  1. <?xml version="1.0" encoding="GB2312"?>     
  2. <俱乐部>     
  3. <会员>          
  4. <姓名>cnbruce </姓名>     
  5. <年龄>10 </年龄>     
  6. <性别>男 </性别>     
  7. <描述>他是一个糟糕的家伙!</描述>     
  8. </会员>     
  9. <会员>     
  10. <姓名>yufuzi</姓名>     
  11. <年龄>80 </年龄>     
  12. <性别>男 </性别>     
  13. <描述>他是一个优秀的男人!</描述>       
  14. </会员>     
  15. <会员>     
  16. <姓名>xiaojin</姓名>     
  17. <年龄>20 </年龄>     
  18. <性别>男 </性别>     
  19. <描述>他人品有问题!</描述>       
  20. </会员>     
  21. </俱乐部>    

      循环构造 <xsl:for-each select="...">......</xsl:for-each>

      与典型的 for 循环作用相同。
      old.xsl

xml 代码
  1. <?xml version="1.0" encoding="GB2312"?>  
  2. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">  
  3. <xsl:template match="/">  
  4. <table border="1">  
  5. <tr>  
  6. <th>姓名</th>  
  7. <th>年龄</th>  
  8. <th>性别</th>  
  9. <th>描述</th>  
  10. </tr>  
  11. <xsl:for-each select="俱乐部/会员">  
  12. <tr>  
  13. <!--表达式为何不需要包括父节点或从文档根开始。这是因为这些元素的路径是根据 <xsl:for-each> 构造中的 XPath 表达式来计算的-->  
  14. <td><xsl:value-of select="姓名"/></td>  
  15. <td><xsl:value-of select="年龄"/></td>  
  16. <td><xsl:value-of select="性别"/></td>  
  17. <td><xsl:value-of select="描述"/></td>  
  18. </tr>  
  19. </xsl:for-each>  
  20. </table>  
  21. </xsl:template>  
  22. </xsl:stylesheet>  

 然后在happyold.xml第二行插队入 <?xml-stylesheet type="text/xsl" href="old.xsl"?>,然后在浏览器中预览一下显示结果。

使用循环构造,还可以根据条件过滤输出。假设只想显示会员中年龄大于30的会员。

xml 代码
  1. <?xml version="1.0" encoding="GB2312"?>  
  2. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">  
  3. <xsl:template match="/">  
  4. <table border="1">  
  5. <tr>  
  6. <th>姓名</th>  
  7. <th>年龄</th>  
  8. <th>性别</th>  
  9. <th>描述</th>  
  10. </tr>  
  11. <xsl:for-each select="俱乐部/会员[年龄>30]">  
  12. <tr>  
  13. <td><xsl:value-of select="姓名"/></td>  
  14. <td><xsl:value-of select="年龄"/></td>  
  15. <td><xsl:value-of select="性别"/></td>  
  16. <td><xsl:value-of select="描述"/></td>  
  17. </tr>  
  18. </xsl:for-each>  
  19. </table>  
  20. </xsl:template>  
  21. </xsl:stylesheet>  

要定义 XML 节点的条件,可以使用下列任何运算符:

等于 (=)
不等于 (!=)
小于 (<)
小于或等于 (<=)
大于 (>)
大于或等于 (>=)

使用<xsl:sort / >构造使输出的结果按指定的节点进行排序,<xsl:sort /> 元素必须嵌套在 <xsl:for-each > 元素中,以确保应用程序可以循环通过所有的项目。sort 元素没有相应的结束标签,所以在其结尾加上"/"使其自结束。
old_sort.xsl

xml 代码
  1. <?xml version="1.0" encoding="GB2312"?>  
  2. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">  
  3. <xsl:template match="/">  
  4. <table border="1">  
  5. <tr>  
  6. <th>姓名</th>  
  7. <th>年龄</th>  
  8. <th>性别</th>  
  9. <th>描述</th>  
  10. </tr>  
  11. <xsl:for-each select="俱乐部/会员">  
  12. <xsl:sort select="年龄" order="descending"/>  
  13. <tr>  
  14. <td><xsl:value-of select="姓名"/></td>  
  15. <td><xsl:value-of select="年龄"/></td>  
  16. <td><xsl:value-of select="性别"/></td>  
  17. <td><xsl:value-of select="描述"/></td>  
  18. </tr>  
  19. </xsl:for-each>  
  20. </table>  
  21. </xsl:template>  
  22. </xsl:stylesheet>  

条件构造:

xml 代码
  1. <xsl:choose>  
  2. <xsl:when test="表达式">  
  3.   
  4. </xsl:when>  
  5. <xsl:otherwise>  
  6.   
  7. </xsl:otherwise>  
  8. </xsl:choose>  

条件构造中可以有多个when,但只能有一个otherwise,用于处理未包括在初始测试条件中的所有其它情况.

xml 代码
  1. <?xml version="1.0" encoding="GB2312"?>  
  2. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">  
  3. <xsl:template match="/">  
  4. <table border="1">  
  5. <tr>  
  6. <th>姓名</th>  
  7. <th>年龄</th>  
  8. <th>性别</th>  
  9. <th>描述</th>  
  10. </tr>  
  11. <xsl:for-each select="俱乐部/会员">  
  12. <xsl:choose>  
  13. <xsl:when test="年龄 > 70">  
  14. <tr bgcolor="#66CCFF">  
  15. <td><xsl:value-of select="姓名"/></td>  
  16. <td><xsl:value-of select="年龄"/></td>  
  17. <td><xsl:value-of select="性别"/></td>  
  18. <td><xsl:value-of select="描述"/></td>  
  19. </tr>  
  20. </xsl:when>  
  21. <xsl:when test="年龄=10">  
  22. <tr bgcolor="blue">  
  23. <td><xsl:value-of select="姓名"/></td>  
  24. <td><xsl:value-of select="年龄"/></td>  
  25. <td><xsl:value-of select="性别"/></td>  
  26. <td><xsl:value-of select="描述"/></td>  
  27. </tr>  
  28. </xsl:when>  
  29. <xsl:otherwise>  
  30. <tr bgcolor="red">  
  31. <td><xsl:value-of select="姓名"/></td>  
  32. <td><xsl:value-of select="年龄"/></td>  
  33. <td><xsl:value-of select="性别"/></td>  
  34. <td><xsl:value-of select="描述"/></td>  
  35. </tr>  
  36. </xsl:otherwise>  
  37. </xsl:choose>  
  38. </xsl:for-each>  
  39. </table>  
  40. </xsl:template>  
  41. </xsl:stylesheet>  

参考:

http://wiki.ccw.com.cn/XML XML

http://www.itisedu.com/phrase/200604231236585.html XML

http://dsp.blueidea.com/book/study/xml/04html/index.asp  XSLT

http://www.ibm.com/developerworks/cn/xml/newto/  XML 新手入门

http://www.ibm.com/developerworks/cn/xml/tips/x-tipxsltjx/index.html  根据 XML 内容设置 XSL 样式表

 

 

分享到:
评论

相关推荐

    xml和xslt在Web开发中的应用

    XML(可扩展标记语言,eXtensible Markup Language)与XSLT(可扩展样式表语言转换,XSL Transformations)是Web开发中用于数据处理和格式化的重要工具。XML是一种标记语言,它允许开发者创建自定义的标签来结构化...

    基于XML和XSLT技术的油田钻井报表系统的设计与实现.pdf

    ### 基于XML和XSLT技术的油田钻井报表系统的设计与实现 #### 一、背景与挑战 在油气勘探与开发领域,每口钻井的详细记录——井史,是极其宝贵的数据资源。井史记录了钻井过程中的各项参数与事件,为后续的地质分析...

    商业编程-源码-用XML和XSLT进行高级的 Web UI设计(三).zip

    在本压缩包“商业编程-源码-用XML和XSLT进行高级的 Web UI设计(三).zip”中,包含的是关于如何利用XML(Extensible Markup Language)和XSLT(XSL Transformations)进行复杂Web用户界面(UI)设计的源代码和相关...

    用XML和XSLT进行高级的 Web UI设计

    在本主题“用XML和XSLT进行高级的Web UI设计”中,我们将深入探讨如何利用这两种技术来实现目录树的上下文菜单功能,包括节点元素的添加、修改、改名和删除操作。 1. **XML数据结构**:首先,我们需要建立一个XML...

    商业编程-源码-用XML和XSLT进行高级的Web UI设计(七).zip

    在本资源包“商业编程-源码-用XML和XSLT进行高级的Web UI设计(七).zip”中,我们聚焦于如何利用XML(Extensible Markup Language)和XSLT(Extensible Stylesheet Language Transformations)这两种强大的技术来...

    商业编程-源码-用XML和XSLT进行高级的Web UI设计(六).zip

    在本资源中,我们探讨了如何使用XML(可扩展标记语言)和XSLT(XSL转换)来创建复杂的Web用户界面(UI)。这是一项高级技术,它将数据的结构化表示与显示逻辑分离,从而提供了更灵活和可维护的设计方案。 XML是一种...

    商业编程-源码-用XML和XSLT进行高级的 Web UI设计(二).zip

    在本压缩包中,我们关注的是“商业编程-源码-用XML和XSLT进行高级的Web UI设计(二)”的相关知识。这个主题主要围绕XML(可扩展标记语言)和XSLT(XSL转换)在创建复杂的Web用户界面(UI)中的应用。XML是一种用于...

    在Ruby中处理XML和XSLT以及XPath的简单教程

    总之,掌握如何在Ruby中使用REXML库处理XML,以及理解和应用XSLT和XPath,是任何希望提高Web开发效率的开发者不可或缺的技能。这不仅可以帮助开发者在Ruby on Rails等框架中更加高效地处理数据,还可以在各种不同的...

    Delphi下最好用的XML/XSLT组件DIXML最新版本无需密码效率超高

    在Delphi编程环境中,XML(eXtensible Markup Language)和XSLT(eXtensible Stylesheet Language Transformations)是处理数据交换和格式转换的重要工具。本文将深入探讨DIXML组件,它是专为Delphi开发者设计的一款...

    用XML和XSLT进行高级的Web UI设计

    XML和XSL/XSLT是当今越来越流行的一种数据处理技术。本文是系列文章的第一篇,介绍如何用XML和XSL/XSLT设计和创建目录树。后续的每一篇文章都将介绍如何用XML和XSL/XSLT设计和创建一个特定的高级Web 应用程序用户...

    java中使用xslt转换xml成为另一个xml

    在Java编程环境中,XML(可扩展标记语言)和XSLT(可扩展样式表语言转换)是处理和转换XML文档的常见工具。XSLT是一种专门用于将XML文档转换为其他XML、HTML或文本格式的语言。本文将详细介绍如何在Java中使用XSLT来...

    Xml+Xslt测试工具

    XML(可扩展标记语言)和XSLT(可扩展样式表语言转换)是Web开发中的核心技术,用于数据存储和格式化。XML是一种标记语言,它允许数据以结构化的方式进行组织,而XSLT则是一种专门用于转换XML文档的语言,可以将XML...

    XML和XSLT,及XHTML讲解

    总的来说,XML提供了一种标准化的数据存储和交换方式,XSLT允许我们优雅地转换这些数据,而XHTML则为我们提供了更规范的网页制作语言。这三个技术在Web开发、数据集成和信息管理等领域有着广泛的应用,对初学者来说...

    JSP结合XML+XSLT将输出转换HTML

    XML(Extensible Markup Language)则是一种用于存储和传输结构化数据的标记语言,而XSLT(XSL Transformations)是用于转换XML文档的样式表语言。本篇将详细讲解如何利用JSP、XML和XSLT将XML数据转换为HTML格式,...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    xml与xslt应用手册

    XML(可扩展标记语言)和XSLT(可扩展样式表语言转换)是Web开发中的核心技术,用于数据的结构化存储和格式化显示。在"XML与XSLT应用手册"中,我们可以深入理解这两项技术的核心概念以及它们在实际应用中的广泛用途...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    jsp_txl.rar_XML通讯录_java XSLT_java通讯录 xml_xslt_通讯录

    标题中的"jsp_txl.rar_XML通讯录_java XSLT_java通讯录 xml_xslt_通讯录"揭示了这个项目的核心内容,这是一个基于Java JSP技术,结合XML和XSLT(Extensible Stylesheet Language Transformations)来实现的通讯录...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    用javascript以xslt显示xml_demo

    1. 加载XML和XSLT文件:这通常通过AJAX(异步JavaScript和XML)完成,使用`XMLHttpRequest`对象或者现代浏览器的`fetch` API来获取文件内容。 2. 创建XSLT处理器:在JavaScript中,可以使用`document.implementation...

Global site tag (gtag.js) - Google Analytics