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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

XML —— DTD介绍

發布時間:2023/12/10 asp.net 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XML —— DTD介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、DTD介紹

?

Document Type Definition;

??????? DTD是一種XML的約束方式,除了此種約束方式外,還有XSchema,XSchema比DTD的約束能力還要強,因此DTD正在逐漸淘汰;

??????? DTD的目的就是約束XML標簽的寫法;比如在我們struts2開發當中,編寫struts.xml時,需要遵循的規則,就是通過DTD進行約束的,因此我們在開發當中通過Eclipse導入DTD文件,便于開發提示,如果在開發中開發人員不遵循DTD的規范,則會出現錯誤提示;

<struts><package name="" namespace="" extends=""><action></action> </package></struts>

??????? XML約束的重要性:在編寫XML時,對于XML進行約束是非常重要的,因為如果對于XML不約束,則會讓開發人員很難掌握;

??????? 而DTD通常是由框架設計人員定義的,一般的開發人員只需要在XML中遵循DTD規范編寫XML即可;

二、導入DTD

??????? 如果要導入DTD,可以通過兩種方式:

??????? (1)在XML中直接編寫;

??????? (2)在專門的DTD文件中編寫,然后在XML中通過特定的語句導入DTD文件;

??????? 1、在XML中直接編寫,語法如下:

?????? [html] view plaincopy
  • <!DOCTYPE?根節點[??
  • ????.........??
  • ]>?

  • ???????? 2.XML文件中導入DTD文件

    ?

    ??????? 此種方式需要考慮兩個情況:

    ? (1)如果是本地文件,則:

    ??????? [html] view plaincopy
  • ???? <!DOCTYPE?根節點?SYSTEM?"dtd的URL">??

  • ?????????? 此處的URL指的是比如 "F:\1.dtd"

    ? (2)如果是共享文件,則:

    [html] view plaincopy
  • <!DOCTYPE?根節點?PUBLIC?"dtd名稱"?"dtd的URL">??


  • 三、DTD語法

    ?

    在DTD中可以定義XML標簽的順序、個數,屬性的值,實體;

    ?

    1.XML元素定義

    ?

    語法如下:

    <!ELEMENT 元素名稱 元素類型>????????//定義元素的類型,但是只能是 ANY(表示任意類型)或EMPTY(空元素);

    <!ELEMENT 元素名稱 (元素內容)>????//定義元素的內容,一定要加上();

    ?

    對于元素內容

    ----可以定義子元素的名稱,比如:

    <!ELEMENT 元素名稱 (子元素1,子元素2,子元素3)> 表示3個子元素只能出現一次,并且按照此順序出現;

    <!ELEMENT 元素名稱 (子元素1|子元素2|子元素3)> 表示3個子元素中只能出現一個;

    我們還可以定義子元素的個數,比如:

    (1)+:1次或多次;比如 (name+)表示此name元素只能出現1次或多次。

    (2)?:0次或1次;比如(name?)表示此name元素只能出現0次或1次。

    (3)*:0次或多次;比如(name*)表示此name元素任意出現幾次。

    (4)無:只能一次;比如(name)表示此name元素只能出現1次。

    對于元素內容,

    ----也可以定義子元素內容的類型,比如#PCDATA,表示字符串;

    ?

    ?

    舉例:

    [html] view plaincopy
  • <!DOCTYPE?personlist?[????<!--?根節點為personlist-->??
  • <!ELEMENT?personlist?(person+)>????<!--?personlist的子元素為person,并且可以出現1次或多次-->??
  • <!ELEMENT?person?(name,age,salary)>????<!--?person的子元素是name,age,salary,并且可以出現一次,并且出現順序以此順序為準-->??
  • <!ELEMENT?name?ANY>????<!--name可以使任意類型?-->??
  • <!ELEMENT?age?(#PCDATA)>????<!--?age可以是字符串-->??
  • <!ELEMENT?salary?(#PCDATA)>????<!--?salary可以是字符串-->??
  • ]>??
  • ???

  • 從以上可以看出,DTD不可以定義數字等類型,此為DTD的缺陷;

    ?

    2.XML屬性定義

    ?

    語法如下:

    <!ATTLIST 標簽名

    ????屬性名1????????屬性類型????????屬性說明

    ????屬性名2????????屬性類型????????屬性說明

    >

    屬性類型可以是

    (1)CDATA:最普通的字符串;

    (2)枚舉,即(值1|值2|值3),需要括號

    (3)ID:屬性值需要以字母或下劃線開頭;

    屬性說明可以是:

    (1)#REQUIRED:必須設置;

    (2)#IMPLED:可選值,即此屬性可以設置,也可以不設置;

    (3)#FIXED:固定值,通常語法為:#FIXED? "固定值"

    (4)默認值;

    ?

    ?? 舉例:

    [html] view plaincopy
  • <!DOCTYPE?personlist?[??
  • ???
  • <!ELEMENT?personlist?(person+)>??
  • <!ELEMENT?person?(name,age,salary)>??
  • <!ELEMENT?name?ANY>??
  • <!ELEMENT?age?(#PCDATA)>??
  • <!ELEMENT?salary?(#PCDATA)>??
  • <!ATTLIST?person??
  • aaa?CDATA?#REQUIRED????????<!--?-->??
  • bbb?CDATA?#IMPLIED?????????<!--?可選屬性-->??
  • ccc?CDATA?#FIXED?"xiazdong"?<!--固定值,不需要設置?-->??
  • ddd?CDATA?"XZDONG"?????????<!--默認值為"XZDONG",?可以自己設置?-->??
  • eee?ID?#REQUIRED?????????????<!--ID?-->??
  • fff?(1|2|3)?"1"?????????????????????????<!--枚舉值,默認為1?-->??
  • >??
  • ]>??


  • ?

    3、XML實體定義

    ?

    實體類似于一個可重用常量,或者說是ant中的classpath,可以被引用;

    語法如下:

    <!ENTITY 實體名稱? "實體內容">

    引用實體語法:
    &實體名稱;??? 注意:最后的“;”一定需要;

    ?

    注意:引用實體必須在XML中引用;

    ?

    舉例:

    [html] view plaincopy
  • <!DOCTYPE?personlist?[??
  • ???
  • <!ENTITY?constant?"aaaa">??
  • <!ELEMENT?personlist?(person+)>??
  • <!ELEMENT?person?(name,age,salary)>??
  • <!ELEMENT?name?ANY>??
  • <!ELEMENT?age?(#PCDATA)>??
  • <!ELEMENT?salary?(#PCDATA)>??
  • ???
  • ]>??
  • <personlist>??
  • <person?>??
  • <name>&constant;</name>????????<!--?引用constant實體-->??
  • <age>aaa</age>??
  • <salary>aaa</salary>??
  • </person>??
  • </personlist>??
  • ???


  • 小知識點:根據XML自動生成DTD

    因為一般我們寫的XML基本都是沒有DTD的,如果要自己寫DTD,又很麻煩,因此我們可以通過工具來自動生成:trang

    功能:能夠完成如下轉換:

    (1)XML ---> DTD

    (2)XML --->XSchema

    (3)DTD--->XSchema


    使用方法:

    java -jar trang.jar -I xml -O dtd input.xml output.dtd 即可;

    -I xml 表示輸入為xml;

    -O dtd表示輸出為dtd文件;

    input.xml表示輸入文件;

    output.dtd表示輸出文件;

    總結

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

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