XML 02: 基本語法
<?xml version="1.0" encoding="UTF-8"?> <!-- XML的文件宣告, 必須放在第01行 --> <goodslist> <!-- 標籤是大小寫敏感的, 與HTML不同 --> <good id="1001" production_date="2018-4-1"> <!-- 每個標籤都可以擁有屬性, id是屬性名, "1001"是屬性值,必須使用雙引號引用。它們都是自定義的 --> <price>12</price> <name>香蕉</name> <place>廣州</place> </good> <good id="1002"> <price>39</price> <name>蘋果</name> <place>北京</place> </good> <good id="1003"> <price>33</price><name><芒果</name> <!-- 為了避免造成混淆, 特殊標記需要使用特殊符號來表示, <; 表示小於號 --> <place>上海</place> </good>
<xxx/> <!-- 這是一個單標記 --> </goodslist>
1.五個在XML文件中預定義好的實體:
< < 小於號
> > 大於號
& & 和
' ' 單引號
2.約束文件(給文件新增約束),一般約束都是開發好了的,遵守即可。
例如,DTD文件
<?xml version="1.0"?> <!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!-- 如果根元素是note,子元素必須依次是to,from,heading,body. 不可以新增屬性 --> <!ELEMENT to (#PCDATA)> <!-- #PCDATA means 放置文字內容 --> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> <!-- 約束規則 -->
<note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note> <!-- XML -->
3. DTD文件約束的引入方式
<1> 內部引入:直接在XML檔案裡書寫
<2> 外部引入
<a> 把DTD文件放在本地
<b> 把DTD文件放在網路上
<a-1>
在本地建立一個DTD file
<a-2>
放置DTD程式碼
<a-3>
建立一個遵守DTD的XML文件 (note2.xml)
需要新增如第二行所示的宣告, "note.dtd"表示需要遵守的DTD文件的路徑.
最終效果 (引入成功):
<b-1> 網路引入是更常見的方式
4. Schema 約束
下面這個例子是一個名為 "note.xsd" 的 XML Schema 檔案:
<4-1> 建立一個Schema檔案
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3school.com.cn" xmlns="http://www.w3school.com.cn" <!-- ns means name space, 名稱空間一般都使用網址--> elementFormDefault="qualified"> <xs:element name="note"> <!-- 定義了一個note標記, 並定義了一些約束規則 --> <xs:complexType> <xs:sequence> <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
<4-2>如果有多種約束同時存在, 需要宣告所寫的程式碼遵循了哪種約束,則需要表明名稱空間,類似於Java中的:
同理,如果需要在XML裡使用Schema約束文件:
<4-3> 建立一個新的XML文件,note3.xml
對 XML Schema 的引用
此檔案包含對 XML Schema 的引用:
<?xml version="1.0"?> <note xmlns="http://www.w3school.com.cn" <!-- 表示引入的Schema屬於哪個名稱空間 --> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3school.com.cn note.xsd"> <!-- 表示約束文件的位置, 可以解釋為名稱空間"w3"對應著"note.xsd" -->
<!-- 把xmlns, xmlns:xsi, xsi:schemaLocation 這三個屬性賦給根標籤 note -->
<!-- 遵守note.xsd 中的約束規則 -->
<to> </to>
<from> </from>
<heading> </heading>
<body> </body>
</note>
整體效果:
<4-4> 如果需要引入多個xsd (例如, 引入sikiedu釋出的,非本地的xx.xsd)
<4-5>新增名稱空間
<1>給名稱空間起一個別名
xmlns = "http://www.w3school.com.cn" <!--預設的名稱空間-->
xmlns:w3 = "http://www.w3school.com.cn" <!--起別名為w3-->
xmlns:se = "http://www.sikiedu.com" <!--起別名為se-->
<2>使用
如果不宣告名稱空間,則使用預設的名稱空間
id="1001"