1. 程式人生 > 實用技巧 >XML 02: 基本語法

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>&lt;芒果</name>  <!-- 為了避免造成混淆, 特殊標記需要使用特殊符號來表示, &lt; 表示小於號 --> <place>上海</place> </good>
   <xxx/> <!-- 這是一個單標記 --> </goodslist>

1.五個在XML文件中預定義好的實體:

&lt; < 小於號
&gt; > 大於號
&amp; & 和
&apos; ' 單引號

&quot; " 雙引號

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"