日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

XML约束

發布時間:2025/4/16 asp.net 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XML约束 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

相關閱讀

  • XML約束
  • Xml 格式數據的生成和解析
  • XML解析器
  • XML約束概述

    一個XML文檔一旦有了約束,那么這個XML文檔就只能使用約束中創建的元素及屬性。如果約束沒有創建< a >元素,那么XML文檔就不能使用< a >元素!!!

    什么是xml約束

    因為xml文檔是可以自定義元素的,這會讓使用xml文檔的應用程序無法知道xml文檔的真實結構。通常應用程序都會要求xml文件的結構是固定的,以滿足自己的需求,這就說明,不同的應用程序要求自己的xml文檔必須符合一定的要求。

    例如,當使用xml文檔作為某個Java swing應用程序的配置文件時,要求xml文檔結構如下:

    <frame title="test xml" layout="java.awt.BorderLayout"><bgcolor><red>200</red><green>0</green><blue>0</blue></bgcolor><size><width>300</width><heigth>200</heigth></size><content><label><text>hello xml</text><label></content> </frame>

    當某個學生管理系統程序需要使用xml文檔作為數據庫時,要求xml文檔結構如下

    <?xml version="1.0" encoding="utf-8" standalone="no"?> <students><student number="1001"><name>zhangSan</name><age>23</age><sex>male</sex></student><student number="1002"><name>liSi</name><age>32</age><sex>female</sex></student><student number="1003"><name>wangWu</name><age>55</age><sex>male</sex></student> </students>

    xml文檔約束是用另一個文件來約束xml文檔的結構,例如要求xml文檔的根元素必須是< students >,在< students >元素下可以包含0~n個< student >元素,每個< student >元素必須有一個number屬性,而且還要有三個子元素,分別為< name >、< age >、< sex >,這三個子元素的內容必須為文本內容,而不能是子元素

    XML文檔約束的類型

    xml文檔約束有兩種類型:dtd和schema

    • dtd:dtd是平面式文檔,dtd文件不是xml文檔,通常擴展名為“.dtd”。它是最早的xml約束;
    • schema:schema本身也是xml文檔,它比dtd要更加強大,通常擴展名為“.xsd”。它是新的xml文檔約束,用來替代dtd。

    DTD是老的XML約束,Schema是新的,用Schema替換掉DTD

    DTD

    DTD(Document Type Definition),文檔類型定義,用來約束XML文檔。例如要求xml文檔的根元素必須是,在元素下可以包含0~n個元素,每個元素必須有一個number屬性,而且還要有三個子元素,分別為、、,這三個子元素的內容必須為文本內容,而不能是子元素。

    1、DTD展示

    <!ELEMENT students (student+)> <!ELEMENT student (name,age,sex)> <!ELEMENT name (#PCDATA)> <!ELEMENT age (#PCDATA)> <!ELEMENT sex (#PCDATA)>

    解讀上面DTD:

    • students元素中可以包含1~n個student元素;
    • student元素中必須包含name、age、sex元素,而且順序也是固定的;
    • name元素內容為文本,即字符串;
    • age元素內容為文本;
    • sex元素內容為文本。

    2、在XML文檔中指定本地DTD

    <?xml version="1.0" encoding="utf-8" standalone="no" ?> <!DOCTYPE students SYSTEM "students.dtd"> <students><student><name>zhangSan</name><age>23</age><sex>male</sex></student> </students> <!ELEMENT students (student+)> <!ELEMENT student (name, age, sex)> <!ELEMENT name (#PCDATA)> <!ELEMENT age (#PCDATA)> <!ELEMENT sex (#PCDATA)>

    其中,表示指定dtd文件。
    指定DTD的語法:

    • 指定DTD的語法,以“”結束;
    • students表示根元素;
    • SYSTEM表示dtd文件在本地;
    • “students.dtd”表示DTD文件路徑。

    3、在XML文檔中指定內部DTD

    <?xml version="1.0" encoding="utf-8" standalone="no" ?> <!DOCTYPE students [ <!ELEMENT students (student+)> <!ELEMENT student (name, age, sex)> <!ELEMENT name (#PCDATA)> <!ELEMENT age (#PCDATA)> <!ELEMENT sex (#PCDATA)> ]> <students><student><name>zhangSan</name><age>23</age><sex>male</sex></student> </students>

    4、在XML文檔中指定外部公共DTD

    <?xml version="1.0" encoding="utf-8" standalone="no" ?> <!DOCTYPE students PUBLIC "-//qdmmy6//DTD ST 1.0//ZH" "http://www.qdmmy6.com/xml/dtds/st.dtd"> <students><student><name>zhangSan</name><age>23</age><sex>male</sex></student> </students>

    外部公共DTD是說,DTD由某個公司或權威組織發布,例如如下:

    當然你需要知道要使用的DTD的名稱和網址。如果某個機構公布了DTD,那么一定也會公布DTD的名稱和網址。
    上面例子中的公共DTD是不存在的。

    DTD定義元素

    1、定義元素的語法

    使用ELEMENT聲明元素:<!ELEMENT 元素名 內容類型或內容>
    例如:<!ELEMENT name (#PCDATA)>
    表示name元素的內容為文本數據

    2、元素類型

    元素類型可以是ANY或EMPTY

    <!ELEMENT stu ANY>:表示stu元素的內容可以是任意元素,也可以是文本數據,也可以是文本數據+子元素,反正就是任意。

    <!ELEMENT stu EMPTY>:表示stu不能有任何內容,即空元素。例如:。

    3、元素內容

    元素內容可以是文本數據,也可以是子元素
    <!ELEMENT stu (#PCDATA)>表示stu元素內容為文本,例如:<stu>hello</stu>
      

    4、子元素出現次數

    可以使用“?”、“*”、“+”來指定子元素的出現次數
    <!ELEMENT stu (name?)>表示stu元素可以有0~1個name子元素,即name子元素可有可無。
    <!ELEMENT stu(name*)>表示stu元素可以有0~n個name子元素;
    <!ELEMENT stu(name+)>表示stu元素可以有1~n個name子元素。

    5、多個子元素

    <!ELEMENT stu (name,age,sex)>表示stu必須有三個子元素,分別是name、age、sex,并且子元素出現的順序也要與聲明的順序一致。

    6、枚舉子元素

    <!ELEMENT stu (name | age | sex)表示stu只有一個子元素,可以是name、age、sex中的任意一個。

    7、復合聲明1

    <!ELEMENT stu (name | age | sex)?>表示stu元素可以有0~1個(name | age | sex),而(name | age | sex)表示name、age、sex其中的一個。

    <stu></stu> <stu><name/></stu> <stu><age/></stu> <stu><sex/></stu>

    8、復合聲明2

    <!ELEMENT stu (name | age | sex)*>表示stu元素可以有0~n個(name | age | sex),而(name | age | sex)表示name、age、sex其中的一個。

    <stu></stu> <stu><name/><name/></stu> <stu><name/><age/><age/></stu> <stu><name/><age/><name/><sex/><sex/></stu>

    9、復合聲明3

    <!ELEMENT stu (name | age | sex)+>表示stu元素可以有1~n個(name | age | sex),而(name | age | sex)表示name、age、sex其中的一個。

    <stu><age/></stu> <stu><name/><name/></stu> <stu><name/><age/><age/></stu> <stu><name/><age/><name/><sex/><sex/></stu>

    10、練習

    <!DOCTYPE 課件 [ <!ELEMENT 章節 (簡介, (標題, (段落 | 圖片 | 表格 | 說明)+)+)> <!ELEMENT 簡介 (#PCDATA)> <!ELEMENT 標題 (#PCDATA)> <!ELEMENT 段落 (#PCDATA)> <!ELEMENT 圖片 (#PCDATA)> <!ELEMENT 表格 (#PCDATA)> <!ELEMENT 說明 (#PCDATA)> <!ELEMENT 課件 (章節+)>]>

      根據上面DTD寫xml文檔!!!

    DTD屬性定義

    1、屬性定義的格式

    Attribute List

    <!ATTLIST 元素名
      屬性名1 屬性類型 設置說明
      屬性名2 屬性類型 設置說明
      …>
    <!ATTLIST student number CDATA #REQUIRED>表示student元素的number為文本類型,這個屬性是必須的。

    最常見的屬性類型:CDATA,表示文本類型;
    最常見的設置說明1:#REQUIRED,表示屬性是必須的。
    最常見的設置說明2:#IMPLIED,表示屬性是可選的。

    2、屬性類型

    • CDATA:屬性值為任意文本數據;
    • Enumerated:屬性值必須是枚舉列表中的一個;
    • ID:屬性值必須是唯一的,并且屬性值不能以數字開頭;

    3、CDATA屬性類型

    CDATA,即Character Data(字符數據)。表示屬性的類型為字符類型!
    <!ATTLIST student number CDATA #REQUIRED>表示student元素的number屬性是字符數據類型,并且是必須屬性。
    <student number=”czbk_1001”>

    4、Enumerated屬性類型

    Enumerated不是關鍵字,定義枚舉類型的屬性需要給出枚舉列表。當屬性值為枚舉類型時,那么這個屬性的取值必須是枚舉列表中的一個值。
    <!ATTLIST student sex (male | female) #IMPLIED> 表示student的sex屬性取值必須是male或者是female。并且這個屬性是可選的。

    5、ID屬性類型

    一個元素最多只能有一個ID 屬性,ID屬性用來表示元素唯一性的唯一標識。ID屬性就相當與元素的身份證號,必須是唯一標識!
    如果把student元素的number屬性設定為ID類型,那么每個student元素的number屬性值必須是唯一的,并且ID類型的屬性值不能以數字開頭。

    <student number=”czbk_1001”/> <student number=”czbk_1002”/>

    注意:不能以數字開頭。

    如果<a>元素有一個ID屬性a
    如果<b>元素有一個ID屬性b

    <a a=”abc”/> <b b=”abc”/>

    上面也是錯誤的,因為ID屬性的值是不可以相同的。

    6、設置說明

    • #REQUIRED:表示屬性是必須的;
    • #IMPLIED:表示屬性是可選的,即這個屬性可以不給出;
    《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的XML约束的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。