• 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自定义约束:
  • 相关阅读:
    86. Partition List
    2. Add Two Numbers
    55. Jump Game
    70. Climbing Stairs
    53. Maximum Subarray
    64. Minimum Path Sum
    122. Best Time to Buy and Sell Stock II
    以场景为中心的产品设计方法
    那些产品经理犯过最大的错
    Axure教程:如何使用动态面板?动态面板功能详解
  • 原文地址:https://www.cnblogs.com/wangzhaojun1670/p/12263132.html
Copyright © 2020-2023  润新知