zoukankan      html  css  js  c++  java
  • XML、XSL、XSLT、DTD、XSD的区别

    前言:

    在众神的努力之下,js已经可以跨出浏览器走向不同的领域了

    也因为这个,对前端工程师的要求也不仅仅是会写写h5页面做交互。前端涉及的领域越来越广,对开发人员对素质能力要求越高。

    以前因设备不同导致开发语言不同,写一个app需要招一个懂IOS和一个懂Android的,现在一套js就能写移动app了,甚至小程序在某些时候也能满足移动端的需求。

    以前写游戏的全套C++,现在js也能写,甚至在美术方面js有独特的优势。

    以前独立安装的操作系统,因为云端的崛起,甚至可以在网页浏览器上体验其他操作平台的应用。

    以前。。。

    前端涉及的领域越来越多,这些领域包括但不限网站、移动端、云端操作系统、5G智慧城市、大数据等

    这就是我们的大前端时代。

    不扯远了

    在这个大前端时代洪流中,越来越多的老人已经开始淡忘XML,而越来越多的新人对XML仅仅是浅尝辄止。XML好像快要消失在人们的眼前,但最终又无法被替代。我就是这么一个生活在这夹缝中的人,懂一点皮毛,一深入就懵逼。特别是几个雷同的东西混在一起,直接狗带。。

    于是在网上收集了XML、XSL、XSLT、DTD、XSD一系列碎片化信息,进行了整理罗列。今天就来好好看一看各自的特点和区别:

    一、XML=可扩展标记语言(EXtensible Markup Language)

    可扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用

    XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的唯一公共语言,XML不是一个依附于特定浏览器的语言

    简单的XML示例:

    <?xml version="1.0" encoding="UTF-8"?>
    <resume>
        <name>香独秀</name>
        <sex></sex>
        <birthday>2020.11.25</birthday>
        <skill>数据库设计与维护、WEB开发</skill>
    </resume>

    二、XSL=可扩展样式表语言 (EXtensible Stylesheet Language)

    如果说CSS = HTML 样式表,那么XSL = XML 样式表。
    XSL 之于 XML ,就像 CSS 之于 HTML。它是指可扩展样式表语言 (EXtensible Stylesheet Language)。这是一种用于以可读格式呈现 XML 数据的语言。用来网页展现,把一个xml文件转换成一个html文件。
    XSL 包括三部分:

    • XSLT:一种用于转换 XML 文档的语言。
    • XPath:一种用于在 XML 文档中导航的语言。
    • XSL-FO:一种用于格式化 XML 文档的语言

    三、XSLT=XSLT中的T代表英语中的“转换”(Transformation)

    XSLT用于将一种XML文档转换为另外一种XML文档,或者可被浏览器识别的其他类型的文档,比如HTML和XHTML。通常,XSLT是通过把每个XML 元素转换为(X)HTML元素来完成这项工作的。通过XSLT,您可以向或者从输出文件添加或移除元素和属性。您也可重新排列元素,执行测试并决定隐藏或显示哪个元素。描述转化过程的一种通常的说法是,XSLT把XML源树转换为XML结果树。
    XSLT使用XPath:XSLT使用XPath在XML 文档中查找 信息。XPath被用来通过 元素和属性在XML文档中进行导航。在转换过程中,XSLT使用XPath来定义源 文档中可匹配一个或多个预定义 模板的部分。一旦匹配被找到,XSLT就会把源文档的匹配部分转换为结果文档。

    XSLT是W3C标准:XSLT在1999年11月16日被确立为W3C标准。
    XSLT: 指XSLT 指 XSL 转换(XSL Transformations)。
    XSLT 是 XSL 中最重要的部分。
    XSLT 可将一种 XML 文档转换为另外一种 XML 文档。
    XSLT 使用 XPath 在 XML 文档中进行导航。
    XPath 是一个 W3C 标准

    简单的XSLT示例:

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:template match="/">
            <html>
                <head>
                    <title>个人简历</title>
                </head>
                <body>
                    <xsl:for-each select="resume">
                        <p/>
                        <table border="1" cellspacing="0">
                            <caption style="font-size: 150%; font-weight: bold">
                              个人简历
                            </caption>
                            <tr>
                                <th>姓名</th>
                                <td>
                                    <xsl:value-of select="name"/>
                                </td>
                                <th>性别</th>
                                <td>
                                    <xsl:value-of select="sex"/>
                                </td>
                                <th>生日</th>
                                <td>
                                    <xsl:value-of select="birthday"/>
                                </td>
                            </tr>
                            <tr>
                                <th>技能</th>
                                <td colspan="5">
                                    <xsl:value-of select="skill"/>
                                </td>
                            </tr>
                        </table>
                    </xsl:for-each>
                </body>
            </html>
        </xsl:template>
    </xsl:stylesheet>

    四、DTD=类型定义(Documnet Type Definition)

    DTD 是一套关于标记符的语法规则。它是XML1.0版规格得一部分,是XML文件的验证机制,属于XML文件组成的一部分。
    DTD 是一种保证XML文档格式正确的有效方法,可以通过比较XML文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确

    一个DTD文档包含:元素的定义规则,元素间关系的定义规则,元素可使用的属性,可使用的实体或符号规则。
    但是DTD 是使用非 XML 语法编写的
    DTD 不可扩展,不支持命名空间,只提供非常有限的数据类型

    简单的DTD示例:

    <!ELEMENT note (to,from,heading,body)>
    <!ELEMENT to (#PCDATA)>
    <!ELEMENT from (#PCDATA)>
    <!ELEMENT heading (#PCDATA)>
    <!ELEMENT body (#PCDATA)>

    五、XSD=XML结构定义 ( XML Schemas Definition )

    XML Schema语言也就是XSD。XML Schema描述了XML文档的结构

    可以用一个指定的XML Schema来验证某个XML文档,以检查该XML文档是否符合其要求。文档设计者可以通过XML Schema指定一个XML文档所允许的结构和内容,并可据此检查一个XML文档是否是有效的。XML Schema本身是一个XML文档,它符合XML语法结构。可以用通用的XML解析器解析它。

    一个XML Schema会定义:
    文档中出现的元素、文档中出现的属性、子元素、子元素的数量、子元素的顺序、元素是否为空、元素和属性的数据类型、元素或属性的默认和固定值。

    XSD是DTD替代者的原因:
    一是据将来的条件可扩展,二是比DTD丰富和有用,三是用XML书写,四是支持数据类型,五是支持命名空间。

    XML Schema的优点:

    1. XML Schema基于XML,没有专门的语法
    2. XML可以象其他XML文件一样解析和处理
    3. XML Schema支持一系列的数据类型(int、float、Boolean、date等)
    4. XML Schema提供可扩充的数据模型。
    5. XML Schema支持综合命名空间
    6. XML Schema支持属性组。

    简单的XSD示例:

    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://www.w3cschools.com"
    xmlns="http://www.w3cschools.com"
    elementFormDefault="qualified">
    
    <xs:element name="note">
    <xs:complexType>
        <xs:sequence>
        <xs:element name="to" type="xs:string"/>
        <xs:element name="from" type="xs:string"/>
        <xs:element name="heading" type="xs:string"/>
        <xs:element name="body" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
    </xs:element>
    
    </xs:schema> 
  • 相关阅读:
    用Eclipse+MyEclipse开发struts的一个经典的实例(转)
    TOMCAT配置虚拟目录
    翻动100万级的数据(自定义的MSSQL分页查询过程)
    MyEclipse Hibernate 快速入门中文版
    微软提供的数据访问组件SqlHelper
    Java内存管理(一、内存分配)
    使用commonlogging与log4j打印日志,发现版本冲突
    Java内存管理(二、Java垃圾回收)
    初探java内存机制_堆和栈
    关于单CPU,多CPU上的原子操作
  • 原文地址:https://www.cnblogs.com/semishigure/p/14036385.html
Copyright © 2011-2022 走看看