zoukankan      html  css  js  c++  java
  • 【XML】Extensible Markup Language 可扩展标记语言

    Extensible Markup Language 可扩展标记语言[XML]

    视频资料参考自:https://www.bilibili.com/video/BV1B441117Lu?p=186

    其他参考:https://www.w3school.com.cn/xml/index.asp

    特点:

      可扩展,标签可自定义

    功能:

      和HTML大同小异,CSS一样能对XML起效

      但是现在XML的职能主要用于存储数据和作为配置文件使用

      在网络中传输数据

    XML & HTML的区别?

      1、XML标签自定义,HTML是预定义的

      2、XML语法严格,HTML语法并不强制要求

      3、XML用来存储数据、HTML用来展示数据

    XML基本语法:

    <?xml version="1.0" encoding="UTF-8" ?>
    
    <users>
        <user id = "1">
            <name>杰哥</name>
            <age>28</age>
            <gender></gender>
        </user>
    
        <user id = "1">
            <name>阿伟</name>
            <age>23</age>
            <gender></gender>
        </user>
    </users>

    可以被浏览器打开解析

    - 1、文件后缀名必须是.xml

    - 2、文件的第一行必须定义文档声明,必须是在顶格的位置,不可以挪动到其他行【<?xml version="1.0" encoding="UTF-8" ?>

    - 3、文件有且仅有一个根标签 Root Tag

    - 4、标签的属性必须用引号修饰【单引双引都可以】

    - 5、不是自闭和标签的情况下,成对标签必须要有结束标签  

    - 6、标签名是区分大小写的!

    XML的组成部分:

    - 1、文档声明

      格式:<?xml 属性列表  ?>

      属性列表:

        version 版本号 1.0 必须属性

        encoding 字符集&编码方式 UTF-8 告知解析引擎当前文档使用的字符集【默认ISO-8859-1】 

        standalone 是否独立 yes/no  yes不依赖其他约束文件,no依赖【即使配置了yes还是可以依赖】

    - 2、指令

      可以结合CSS对标签设置样式 <?xml stylesheet typr = "text/css" href = "a.css" ?>

    - 3、标签:标签名称自定义

      1、不可以数字开头作为首标识符

      2、包含字母、数字、下划线或者其他字符

      3、不能包含空格

      4、不能以XML、Xml、xml开始作为首标识符

    - 4、属性

      id的属性值必须唯一,等同HTML的id属性

    - 5、文本

      CDATA区域:该区域的数据会被原样展示

    <![CDATA[ a < b ? true or false ]]>

    XML的约束 DTD & Schema:

    什么是约束,即规定XML的书写规则

    目标:

      - 能够在xml文件中引入约束

      - 能够简单的读懂文档

    约束的分类:

      - DTD约束,一种简单的约束规范

      - Schema约束,以种复杂的约束规范

    - 1、DTD约束:

    我们声明了一个DTD的约束文档【Student.dtd】

    <!-- !ELEMENT 规定XML文档中的标签元素 -->
    <!-- students 声明了一个标签,标签名是students   -->
    <!-- students标签声名,可允许放置(0~N)个子标签student -->
    <!-- *表示任意个数 +表示一个以上 -->
    <!ELEMENT students (student*)>
    
            <!-- 声明student标签 且可放置三个子标签,分别是name,age,gender。 -->
            <!-- 这些子标签没有加量词通配符,所以每个子标签在xml必须出现一次(有且仅有一次) -->
            <!-- 这些子标签出现的顺序也要和这个声明的顺序一致 -->
            <!ELEMENT student (name,age,gender)>
    
            <!-- (#PCDATA) 声明这些标签的元素内容只能是字符串了 -->
            <!ELEMENT name (#PCDATA)>
            <!ELEMENT age (#PCDATA)>
            <!ELEMENT gender (#PCDATA)>
    
            <!-- !ATTLIST声明了一个属性 给student声明的 -->
            <!-- 属性名称是number 属性的类型是ID #REQUIRED表示此属性是必填项 -->
            <!-- ID属性表示每一个标签的ID值是唯一的,不可重复 -->
            <!ATTLIST student number ID #REQUIRED>

    在XML文件中引入此约束,外部dtd文件引入【Student.xml】

    <?xml version="1.0" encoding="UTF-8" ?>
    
    <!-- 本地dtd文件引入 -->
    <!-- !DOCTYPE 文档声明 -->
    <!-- students表示根标签名 -->
    <!-- SYSTEM 在本地中获取-->
    <!-- "Student.dtd" 表示引入的dtd文件位置 -->
    <!DOCTYPE students SYSTEM "Student.dtd">
    
    <!-- 网络外部 dtd引入 -->
    <!-- <!DOCTYPE 根标签名 PUBLIC "dtd文件名" "dtd文件的URL位置"> -->
    <students>
        <student  number="S001">
            <name>杰哥</name>
            <age>29</age>
            <gender>male</gender>
        </student>
    
        <student  number="S002">
            <name>阿伟</name>
            <age>18</age>
            <gender>male</gender>
        </student>
    </students>

    使用内部引入dtd约束

    <?xml version="1.0" encoding="UTF-8" ?>
    
    <!DOCTYPE students[
            <!ELEMENT students (student*)>
            <!ELEMENT student (name,age,gender)>
            <!ELEMENT name (#PCDATA)>
            <!ELEMENT age (#PCDATA)>
            <!ELEMENT gender (#PCDATA)>
            <!ATTLIST student number ID #REQUIRED>
            ]>
    <students>
        <student  number="S001">
            <name>杰哥</name>
            <age>29</age>
            <gender>male</gender>
        </student>
    
        <student  number="S002">
            <name>阿伟</name>
            <age>18</age>
            <gender>male</gender>
        </student>
    </students>

    - 2、Schema约束:

    https://www.w3school.com.cn/schema/index.asp

    -  Schema约束文件的后缀名是.xsd

    - 一般不用自己手写Schema

    只需要看懂和会引入约束  https://www.w3school.com.cn/schema/schema_howto.asp

    XML的解析方式:

     1、DOM  【解析思想?服务器】

        将xml文档一次性加载进内存,在内存中解析出一个DOM树,每一个标签既是一个节点【node】

        操作方便快速、可进行CRUD操作、但是xml内容过多,非常占用内存资源

     2、SAX  【解析思想?客户端】

        逐行读取、基于事件驱动,相比DOM是不占用内存资源的

        功能有限,仅读取,不能增删改

     

      

  • 相关阅读:
    BZOJ 1008 [HNOI2008]越狱 (简单排列组合 + 快速幂)
    BZOJ 1007 [HNOI2008]水平可见直线 (栈)
    Java Date,long,String 日期转换
    android学习---- WindowManager 接口 (
    ListView 使用详解
    @synchronized (object)使用详解
    Android View坐标getLeft, getRight, getTop, getBottom
    Android:Layout_weight的深刻理解
    onTouch事件试验(覆写onTouchEvent方法,同时设置onTouchListener)
    FragmentPagerAdapter与FragmentStatePagerAdapter区别
  • 原文地址:https://www.cnblogs.com/mindzone/p/12776628.html
Copyright © 2011-2022 走看看