搜尋
首頁後端開發XML/RSS教程詳細介紹XML DTD於XML Schema學習的範例程式碼(圖文)

  XML(eXtensible Markup Language)可擴充的標記語言。 xml在web service程式設計中特別重要。在網路傳輸中可以作為傳輸資料的載體。 xml作為元語言,它可以用來標記資料、定義資料類型,是一種允許使用者對自己的標記語言進行定義的元語言。 它非常適合網路傳輸,提供統一的方法來描述和交換獨立於應用程式或供應商的結構化資料。可以實現異質語言、異質平台之間的互動。 XML 文檔定義方式有:文檔類型定義(DTD)和XML Schema。 DTD(Document Type Definition)定義了文件的整體結構以及文件的語法(下面會有相應的例子用於理解)應用廣泛並有豐富的工具支援。 XML Schema的功能更強大,用於定義管理資訊等更強大、更豐富的特徵。 XML能夠更細緻地聲明內容,定義約束,方便跨越多種平台的更有意義的傳輸內容。它提供了一種描述結構資料的格式,簡化了網路中資料交換和表示,使得程式碼、資料和表示分離,並作為資料交換的標準格式,因此它常被稱為智慧資料文件。可以把DTD比喻成鐵鏟,而XML Schema可以說是挖土機,功能更強大。  XML雖然稱作標記語言,但與HTML(超文本標記語言)不同,它的格式更嚴格,標籤必須封閉,顯示與內容分離,XML描述的是文檔的內容與語義而不是文檔該如何顯示。 HTML有固定的標籤,顯示跟內容是一起的,不能創建自己的標籤,而XML是可擴展的,內容與顯示分離,每個元素都成對出現,又開始就有結束,而且XML元素的嵌套關係要保持正確(嵌套中後開始的標記要先結束,先開始的標記要後結束),每一個XML文件中只有一個根元素(Root Element),根元素包含了其他所有的元素。 符合XML語法的XML文檔在未被DTD或XML Schema驗證時叫做良構(well form)的,如果良構的xml文檔被DTD或XML Schema驗證,這種xml文檔稱為有效(Valid)的。

下面以一個學生名冊的xml作為例子

<?xml version="1.0" encoding="utf-8"?>
<学生名册>
    <学生 学号="A1">
        <姓名>CIACs</姓名>
        <性别>男</性别>
        <年龄>22</年龄>
    </学生>

    <学生 学号="A2">
        <姓名>zhihao</姓名>
        <性别>男</性别>
        <年龄>23</年龄>
    </学生>
</学生名册>

格式良好的xml文檔,XMLSpy的輸出視窗會輸出如下結果

xml的首行一定要是處理指令,且」xml元素嚴格區分大小寫,文件編碼格式預設為“UTF-8”,版本只有1.0。上面的xml文檔只能說是格式良好的xml文檔,不能說是有效的(Vaild)xml文檔。下面我們用兩種方式去驗證它。

首先是透過DTD來對它進行驗證

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 学生名册 [
<!ELEMENT 学生名册 (学生+)>
<!ELEMENT 学生 (名字,性别,年龄)>
<!ELEMENT 名字 (#PCDATA)>
<!ELEMENT 性别 (#PCDATA)>
<!ELEMENT 年龄 (#PCDATA)>
<!ATTLIST 学生 学号 ID #REQUIRED>
<!ENTITY  sex "男">
]>

<学生名册>
    <学生 学号="A1">
        <名字>CIACs</名字>
        <性别>&sex;</性别>
        <年龄>22</年龄>
    </学生>
    
    <学生 学号="A2">
        <名字>zhihao</名字>
        <性别>&sex;</性别>
        <年龄>23</年龄>
    </学生>
</学生名册>

如果驗證通過的話,XMLSpy輸出視窗會有如下的結果顯示

否則就算是多了一個空格都不會通過驗證。這裡我把dtd的驗證寫到了xml中,當然你也可以把它寫到另一個文件中,該文件的後綴名為“.dtd”,然後把它關聯到要驗證的xml文檔中,語法如下

 1 DOCTYPE 根元素名稱SYSTEM "*.dtd">

此處ID值好像要以字元開頭,如果只是數字通不過驗證。

學生資訊中的性別,我把它定義為實體,然後透過實體引用它的值,要注意實體引用的語法是"&實體名稱;"。

下面透過XML Schema方式來驗證

要驗證的xml文件

<?xml version="1.0" encoding="utf-8"?>
<学生名册 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="学生名册.xsd">
    <学生 学号="A1">
        <姓名>CIACs</姓名>
        <性别>男</性别>
        <年龄>22</年龄>
    </学生>

    <学生 学号="A2">
        <姓名>zhihao</姓名>
        <性别>男</性别>
        <年龄>23</年龄>
    </学生>
</学生名册>

XML Schema驗證文件

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:element name="学生名册">
        <xs:complexType>
            <xs:sequence minOccurs="1" maxOccurs="unbounded">
                <xs:element ref="学生"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="学生">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="姓名" type="xs:string"/>
                <xs:element name="性别">
                    <xs:simpleType>
                        <xs:restriction base="xs:string">
                            <xs:enumeration value="男"/>
                            <xs:enumeration value="女"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:element>
                <xs:element name="年龄">
                    <xs:simpleType>
                        <xs:restriction base="xs:integer">
                            <xs:minExclusive value="0"/>
                            <xs:maxExclusive value="120"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:element>
            </xs:sequence>
            <xs:attribute name="学号" type="xs:string" use="required"/>
        </xs:complexType>
    </xs:element>
</xs:schema>

XMLSpy輸出視窗的輸出結果

 

要驗證的xml的文檔透過在根元素開始標籤中加入下面的資訊關聯XML Schema文檔

 1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="学生名册.xsd"

以上的文檔都是放在同一路徑下的,所以直接引用檔名就行了。

從上面的兩種驗證方式我們可以很清楚的看出DTD跟XML Schema驗證的區別,兩者同樣是進行xml文檔驗證的,XML Schema提供了比DTD更為強大的功能和更細粒度的資料類型,而且Schema還可以自訂資料類型,其本身就是xml文件,但dtd的語法跟xml的語法不同。雖然從程式碼量來看Schema大於dtd,但當你學過Schema後就會比較喜歡用Schema。

學好xml和它的驗證方式,對於後面學習web service程式設計很重要。

以上是詳細介紹XML DTD於XML Schema學習的範例程式碼(圖文)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
RSS文檔:Web聯合組織的基礎RSS文檔:Web聯合組織的基礎Apr 18, 2025 am 12:04 AM

RSS文檔是基於XML的結構化文件,用於發布和訂閱頻繁更新的內容。它的主要作用包括:1)自動化內容更新,2)內容聚合,3)提高瀏覽效率。通過RSSfeed,用戶可以訂閱並及時獲取來自不同來源的最新信息。

解碼RSS:內容提要的XML結構解碼RSS:內容提要的XML結構Apr 17, 2025 am 12:09 AM

RSS的XML結構包括:1.XML聲明和RSS版本,2.頻道(Channel),3.條目(Item)。這些部分構成了RSS文件的基礎,允許用戶通過解析XML數據來獲取和處理內容信息。

如何解析和利用基於XML的RSS提要如何解析和利用基於XML的RSS提要Apr 16, 2025 am 12:05 AM

RSSFEEDSUSEXMLTOSYNDICATECONTENT; PARSINGTHEMINVOLVESLOADINGINGINGINGINSSTRUCTURE,andExtractingData.ApplicationsIncludeBuildBuildingNewSagGregatorSaterNewSagGregatorSator andTrackingPodcastepodcastepisodes。

RSS文檔:他們如何提供您喜歡的內容RSS文檔:他們如何提供您喜歡的內容Apr 15, 2025 am 12:01 AM

RSS文檔的工作原理是通過XML文件發佈內容更新,用戶通過RSS閱讀器訂閱並接收通知。 1.內容髮布者創建並更新RSS文檔。 2.RSS閱讀器定期訪問並解析XML文件。 3.用戶瀏覽和閱讀更新內容。使用示例:訂閱TechCrunch的RSS源,只需複制鏈接到RSS閱讀器中即可。

用XML建造供稿:RSS的動手指南用XML建造供稿:RSS的動手指南Apr 14, 2025 am 12:17 AM

使用XML構建RSSfeed的步驟如下:1.創建根元素並設置版本;2.添加channel元素及其基本信息;3.添加條目(item)元素,包括標題、鏈接和描述;4.轉換XML結構為字符串並輸出。通過這些步驟,你可以從零開始創建一個有效的RSSfeed,並通過添加額外的元素如發布日期和作者信息來增強其功能。

創建RSS文檔:逐步教程創建RSS文檔:逐步教程Apr 13, 2025 am 12:10 AM

創建RSS文檔的步驟如下:1.使用XML格式編寫,根元素為,包含元素。 2.在內添加、、等元素描述頻道信息。 3.添加元素,每個代表一個內容條目,包含、、、等。 4.可選地添加和元素,豐富內容。 5.確保XML格式正確,使用在線工具驗證,優化性能並保持內容更新。

XML在RSS中的作用:聯合內容的基礎XML在RSS中的作用:聯合內容的基礎Apr 12, 2025 am 12:17 AM

XML在RSS中的核心作用是提供一種標準化和靈活的數據格式。 1.XML的結構和標記語言特性使其適合數據交換和存儲。 2.RSS利用XML創建標準化格式,方便內容共享。 3.XML在RSS中的應用包括定義feed內容的元素,如標題和發布日期。 4.優勢包括標準化和可擴展性,挑戰包括文件冗長和嚴格語法要求。 5.最佳實踐包括驗證XML有效性、保持簡潔、使用CDATA和定期更新。

從XML到可讀的內容:揭開RSS feed的神秘面紗從XML到可讀的內容:揭開RSS feed的神秘面紗Apr 11, 2025 am 12:03 AM

rssfeedsarexmldocuments usedforcontentAggregation and distribution.totransformthemintoreadableContent:1)parsethethexmlusinglibrarieslibrariesliblarieslikeparserinparserinpython.2)andledifferentifferentrssssssssssssssssssssssssssssssssssssssssssssssersions andpotentionparsingrorS.3)

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。