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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【风马一族_xml】xmlp之dtd1

發布時間:2025/3/8 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【风马一族_xml】xmlp之dtd1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 什么是XML約束?
  •     在xml技術里,可以編寫一個文檔來約束一個xml文檔的寫法,這稱之為xml約束

      2. 為什么要使用xml約束?

        參看提示欄

      3. xml約束的作用?

  • 約束xml的寫法
  • 對xml進行校驗
  •   4. 常見的xml約束技術

  • xml? dtd
  • xml? Schema
  • -------------------------------------------------------------------------

    DTD 約束快速入門

  • dtd ( document type definition ) ,全稱為文檔類型定義
  • 示例
  • 1 ------------------沒有給xml設置約束-------------------------------- 2 -------------------------------book.xml--------------------------- 3 4 <?xml version="1.0" encoding="utf-8"?> 5 <書架> 6 <> 7 <書名>Java程序設計</書名> 8 <價格>¥59</價格> 9 <作者>風馬一族</作者> 10 </> 11 <> 12 <書名>C++程序設計</書名> 13 <價格>¥49</價格> 14 <作者>風馬一族</作者> 15 </> 16 </書架> 17 18 ---------使用DTD技術,給xml設置約束,使xml內容出現錯誤的示例----- 19 -----------------------book.xml------------book.dtd----------------------- 20 <?xml version="1.0" encoding="utf-8"?> 21 <!DOCTYPE 書架 SYSTEM "book.dtd"> 22 <書架> 23 <> 24 <書名>Java程序設計</書名> 25 <價格>¥59</價格> 26 <作者>風馬一族</作者> 27 </> 28 <> 29 <書名>C++程序設計</書名> 30 <價格>¥49</價格> 31 <作者>風馬一族</作者> 32 </> 33 </書架> 34 35 <!ELEMENT 書架(書+)> 36 <!ELEMENT 書(書名,作者,售價)> 37 <!ELEMENT 書名(#PCDATA)> 38 <!ELEMENT 作者(#PCDATA)> 39 <!ELEMENT 售價(#PCDATA)> 40 41 42 ---------使用DTD技術,給xml設置約束,使xml內容按照約束寫法的示例----- 43 -----------------------book.xml------------book.dtd----------------------- 44 45 <?xml version="1.0" encoding="utf-8"?> 46 <!DOCTYPE 書架 SYSTEM "book.dtd"> 47 <書架> 48 <> 49 <書名>Java程序設計</書名> 50 <作者>風馬一族</作者> 51 <售價>¥59</售價> 52 </> 53 <> 54 <書名>C++程序設計</書名> 55 <作者>風馬一族</作者> 56 <售價>¥59</售價> 57 </> 58 </書架> 59 60 <!ELEMENT 書架 (書+)> 61 <!ELEMENT 書 (書名,作者,售價)> 62 <!ELEMENT 書名 (#PCDATA)> 63 <!ELEMENT 作者 (#PCDATA)> 64 <!ELEMENT 售價 (#PCDATA)> xml的DTD技術約束
  • -------------------------------------------------------------------------

    ?

    1.編程校驗xml文檔正確性

  • 1.默認的情況下IE瀏覽器內置的xml解析器的約束校驗器是被關閉了的。所以我們需要使用JavaScript手動創建解析器對象。打開約束校驗功能,對xml進行約束校驗。
  •    ? 2.創建xml文檔解析器對象

          1.var xmldoc=new ActiveXObject("Microsoft.XMLDOM");

        3.開啟xml校驗

          1.xmldoc.validateOnParse="true";

        4.裝載xml文檔

          1.xmldoc.load("book.xml");

        5.獲取錯誤信息

          1.xmldoc.parseError.reason;

          2.xmldoc.parseError.line

      ------------------------------------

      因為IE默認不打開DTD校驗器,因此可以使用兩種方式,解決這個問題,一是使用TDE、二是編寫一段JS  

    1 <html> 2 <head> 3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 4 <title>無標題文檔</title> 5 </head> 6 7 <body> 8 行號: <div id="l"></div><br /> 9 原因: <div id="r"></div> 10 </body> 11 </html> 12 13 <script> 14 var xmldoc=new ActiveXObject("Microsoft.XMLDOM"); //使用javaScript創建一個瀏覽器內置的xml解析器 15 xmldoc.validateOnParse=true;//將xml解析器的dtd校驗打開 16 xmldoc.load("book.xml"); 17 var line=xmldoc.parseError.line; 18 var reason=xmldoc.parseError.reason; 19 document.getElementById("l").innerHTML=line; 20 document.getElementById("r").innerHTML=reason; 21 </script> 使用js 來打開DTD解析器

    ?

      ------------------------------------

    示例

    ------------book.xml-------------

    1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE 書架 SYSTEM "book.dtd"> 3 <書架> 4 <> 5 <書名>Java程序設計</書名> 6 <作者>風馬一族</作者> 7 <售價>¥59</售價> 8 </> 9 <> 10 <書名>C++程序設計</書名> 11 <作者>風馬一族</作者> 12 <售價>¥59</售價> 13 </> df 14 </書架> book.xml

    ?

    ------------book.dtd-------------

    1 <!ELEMENT 書架 (書+)> 2 <!ELEMENT 書 (書名,作者,售價)> 3 <!ELEMENT 書名 (#PCDATA)> 4 <!ELEMENT 作者 (#PCDATA)> 5 <!ELEMENT 售價 (#PCDATA)> book.dtd

    ?

    ?

    ------------check.html------------

    1 <html> 2 <head> 3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 4 <title>無標題文檔</title> 5 </head> 6 7 <body> 8 行號: <div id="l"></div><br /> 9 原因: <div id="r"></div> 10 </body> 11 </html> 12 13 <script> 14 var xmldoc=new ActiveXObject("Microsoft.XMLDOM"); //使用javaScript創建一個瀏覽器內置的xml解析器 15 xmldoc.validateOnParse=true;//將xml解析器的dtd校驗打開 16 xmldoc.load("book.xml"); 17 var line=xmldoc.parseError.line; 18 var reason=xmldoc.parseError.reason; 19 document.getElementById("l").innerHTML=line; 20 document.getElementById("r").innerHTML=reason; 21 </script> check.html

    ?

    結果:

    ?

    ?

    -----------------------------------------------------------------------------------

    二、dtd語法

      1,如何在xml中引入dtd

  • 外部引入
  • 可以將dtd的約束內容寫在外置的dtd文件中,這個文件后綴必須為.dtd而文件保存時必須用UTf-8來保存。
  • 再在xml文件中使用<!DOCTYPE 根元素名稱 SYSTEM? 文件的位置>
  •   如果寫的是SYSTEM表明當前引入的dtd在當前文件系統中,后面制定的文件位置是當前硬盤中的位置
  • 再在xml文件中使用<!DOCTYPE 根元素名稱 PUBLIC? 文件的位置>
  •   如果寫的是PUBLIC表明當前引入的dtd在網絡公共位置中,后面要指明dtd的名字和dtd所在網絡位置URL地址
  • 示例:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  • 內部引入
  • 直接在xml中書寫dtd    
  • <!DOCTYPE 根元素名稱[dtd約束]> 
  • dtd語法
  • 元素
  • ?<!ELEMENT 元素名稱? 元素約束>
  • 元素約束:
  • 存放類型:ANY/EMPTY
  • 元素約束:
  • 子元素的列表,將可以包含的子元素用小括號括起來
  • 子元素之間可以使用逗號進行分割,表明子元素必須按照順序出現
  • 子元素之間可以使用豎線進行分割,表明子元素出現其中之一
  • #PCDATA 表明包含標簽體
  • + 表示一次或多次
  • *? 0次或多次
  • ? 0次或一次
  • 也可以使用小括號進行組的操作
  • 屬性
  • <!ATTLIST 元素名
  • 屬性名???? 屬性類型?? 屬性約束
  • 屬性名2 ?? 屬性類型?? 屬性約束
  • .......................
  • >   

      示例:

  • 1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE 書架[ 3 <!ELEMENT 書架 (書+)> 4 <!ELEMENT 書 (書名,作者,售價)> 5 <!ELEMENT 書名 (#PCDATA)> 6 <!ELEMENT 作者 (#PCDATA)> 7 <!ELEMENT 售價 (#PCDATA)> 8 9 ]> 10 <書架> 11 <> 12 <書名>Java程序設計</書名> 13 <作者>風馬一族</作者> 14 <售價>¥59</售價> 15 </> 16 <> 17 18 <書名>C++程序設計</書名> 19 <作者>風馬一族</作者> 20 <售價>¥59</售價> 21 </> 22 </書架> 不用dtd,直接在xml編寫dtd約束
  • 屬性類型:? 屬性的可以是一組取值的列表,在xml文件中設置的屬性值 
  • CDATA : 表示屬性的值是一個普通字符串
  • ENUMERATED:屬性的值是一個枚舉列表中的值
  • ID: 表明屬性的值必須在整個文檔中都是唯一的,如果有重復的id則校驗不通過,ID屬性的值只能由字母,下劃線開始,不能使用數字,不能出現空白字符
  • 屬性約束:
  • #REQUIRED?? --- 表明當前屬性是一個必須存在的屬性,如果這樣的屬性不存在則在校驗時會報錯
  • #IMPLIED --- 表明當前屬性是一個可選的屬性,可以有也可以沒有
  • #FIXED '固定值'? --- 表明當前屬性具有一個固定值,這樣的屬性不需要進行賦值,自動就會取這個固定值為值,如果  
  • ’默認值‘? --- 表明當前屬性具有一個默認值,如果給了其他的值就用其他值,如果沒有給值則取這個默認值 
  • ENTITY(實體)
  • <!ENTITY> 就是對一大段內容的引用,可以簡化代碼的復用 
  • 引用實體:
  • 在xml中引用的實體叫做引用實體
  • <!ENTITY % 實體名稱 “實體內容”>
  • &實體名稱;
  • 參數實體:
  • 在dtd中引用的實體叫做參數實體
  • <!ENTITY % 實體名稱 “實體內容”>
  • &實體名稱;  
  • ?

    轉載于:https://www.cnblogs.com/sows/p/5865838.html

    總結

    以上是生活随笔為你收集整理的【风马一族_xml】xmlp之dtd1的全部內容,希望文章能夠幫你解決所遇到的問題。

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