zoukankan      html  css  js  c++  java
  • 2020/2/4学习总结

    今天学习了xml相关内容

    1.xml是可扩展的标记语言,xml语法上和HTML比较相似,但HTML中的元素是固定的,xml的标签是可以由用户自定义的。它常用来做配置文件

    2.语法:

    文档声明:

    文档声明必须以<?xml 开头,以?>结尾

    文档声明必须从文档的0行0列开始

    文档声明只有三个属性:version:指定当前xml文档版本,encoding:指定当前文档的编码格式,standalone

    元素:

    空元素只有开始标签,而没有结束标签,但元素必须自己闭合例如<c/>

    元素命名区分大小写,不能使用空格,冒号。

    3.当大量的转义字符出现在xml文档中时,建议使用<![CDATA[ 任意内容]]>的方式书写

    4.DTD约束

    DTD文档类型定义,用来约束xml文档。规定XML文档中元素的名称,子元素的名称及顺序,元素的属性等

    DTD语法:

    • DTD<!DOCTYPE分隔符开头。
    • 元素告诉解析器从指定的根元素解析文档。
    • DTD标识符是文档类型定义的标识符,可以是系统上文件的路径或Internet上文件的URL。 如果DTD指向外部路径,则称为外部子集。
    • 方括号[]包含一个称为内部子集的可选实体声明列表。

    内部DTD

    如果在XML文件中声明元素,则这样的DTD称为内部DTD。 要将其作为内部DTD引用,XML声明中的standalone属性必须设置为yes。 它表示声明的工作独立于外部源。

    语法

    内部DTD的语法如下所示 -

    <!DOCTYPE root-element [element-declarations]>

    其中root-element是根元素的名称,element-declarations是声明元素的位置。

    示例

    以下是内部DTD的一个简单示例 -

    <?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>
    
    <!DOCTYPE address [
       <!ELEMENT address (name,company,phone)>
       <!ELEMENT name (#PCDATA)>
       <!ELEMENT company (#PCDATA)>
       <!ELEMENT phone (#PCDATA)>
    ]>
    
    <address>
       <name>Tanmay Su</name>
       <company>Yiibai Yiibai</company>
       <phone>(086) 123-4567-789</phone>
    </address>

    DTD主体 - DOCTYPE声明后跟DTD的主体,可以在主体中声明元素,属性,实体和符号 -

    <!ELEMENT address (name,company,phone)>
    <!ELEMENT name (#PCDATA)>
    <!ELEMENT company (#PCDATA)>
    <!ELEMENT phone_no (#PCDATA)>
    
     

    这里声明了几个元素,它们构成了<name>文档的词汇表。 <!ELEMENT name(#PCDATA)>将元素名称定义为“#PCDATA”类型。这里#PCDATA表示可解析的文本数据。

    结束声明 - 最后,DTD的声明部分使用右括号和闭合角括号 - ]>关闭。 这有效地结束了定义,此后就是XML文档的内容。

    规则

    • 文档类型声明必须出现在文档的开头(仅在XML标题之前) - 文档中的任何其他位置都不允许。
    • DOCTYPE声明类似,元素声明必须以感叹号开头。
    • 文档类型声明中的Name必须与根元素的元素类型匹配。

    外部DTD

    在外部DTD元素在XML文件之外声明。 可以通过指定系统属性来访问它们,这些属性可以是合法的.dtd文件或有效的URL。 要将其作为外部DTD引用,必须将XML声明中的standalone属性设置为no。 它表示声明包括来自外部源的信息。

    语法

    以下是外部DTD的语法 -

    <!DOCTYPE root-element SYSTEM "file-name">

    其中file-name是扩展名为.dtd的文件。

    示例
    以下示例显示了外部DTD用法 -

    <?xml version = "1.0" encoding = "UTF-8" standalone = "no" ?>
    <!DOCTYPE address SYSTEM "address.dtd">
    
    <address>
      <name>Tanmay Su</name>
      <company>Yiibai Yiibai</company>
      <phone>(086) 123-4567789</phone>
    </address>

    DTD文件address.dtd的内容如下所示 -

    <!ELEMENT address (name,company,phone)>
    <!ELEMENT name (#PCDATA)>
    <!ELEMENT company (#PCDATA)>
    <!ELEMENT phone (#PCDATA)>

    类型

    可以使用系统标识符或公共标识符来引用外部DTD。

    系统标识符

    系统标识符可用于指定包含DTD声明的外部文件的位置。 语法如下 -

    <!DOCTYPE name SYSTEM "address.dtd" [...]>

    如上所见,它包含关键字SYSTEM和指向文档位置的URI引用。

    PUBLIC标识符

    PUBLIC标识符提供了一种定位DTD资源的机制,如下所示 -

    <!DOCTYPE name PUBLIC "-//Beginning XML//DTD Address Example//EN">

    如上所见,它以关键字PUBLIC开头,后跟专用标识符。 PUBLIC标识符用于标识目录中的条目。 PUBLIC标识符可以遵循任何格式,但是,常用的格式称为PUBLIC公共标识符或FPI。

    有时候,在XML文件中,一个标记可能多次出现(或者不出现),那么我们除了在它们的父元素中用ANY关键字之外,还可以在元素的旁边加上特定的符号来控制标记出现的次数。 


     

     不出现或只出现一次
     
    *
     不出现或可出现多次
     
    +
     必须出现一次以上
     
    无符号
     只能出现一次
     

      例如:〈!ELEMENT 参考资料(书籍?,报纸+,杂志?,网站)〉这个元素设定,“书籍”标记在XML文件中可以不出现或者出现多次;“报纸”标记必须出现一次以上;“杂志”标记可以不出现或只出现一次;而“网站”标记必须出现而且只能出现一次。 

      在一些父元素的声明中,有可能它包含的子元素是在多个子元素中选择一个来使用,那么我们声明此父元素时,就可以把它声明成选择性元素,例如:〈!ELEMENT 配偶 (妻子|丈夫)〉。可供选择的子元素用“|”分隔

    #required
     表示在标记中必须出现此属性。
     
    #implied
     标记中可以不出现此属性。
     
    #fix
     属性的值是固定的某个值。

    字符串
     标记中如没有指定属性的值,那么此字符串就是此属性的值。


    5.Schema
        schema是DTD的替代
        语法:
    5.1命名空间:命名空间用来处理一个xml文档引用多个schema约束时,可能会出现的元素和属性名称相同的问题
    5.2声明命名空间:默认命名空间<xxx xmlns="">  显示命名空间<xxx xmlns:别名="">
    5.3自定义约束:
  • 相关阅读:
    hdoj 1010-Tempter of the Bone
    leetcode 91. 解码方法
    leetcode 925. 长按键入
    leetcode 437. 路径总和 III
    leetcode 892. 三维形体的表面积
    二分查找
    HBASE 安装
    Linux 日常指令
    Linux Centos7 配置代理
    Linux ssh 免密
  • 原文地址:https://www.cnblogs.com/wangzhaojun1670/p/12263132.html
Copyright © 2011-2022 走看看