XML入門筆記
阿新 • • 發佈:2021-01-25
XML文件結構(https://www.runoob.com/xml/xml-syntax.html)
- 第一行必須是xml宣告 :<?xml version="1.0" encoding="UTF-8"?>,定義 XML 的版本(1.0)和所使用的編碼(UTF-8 : 萬國碼, 可顯示各種語言)。
- 有且只有一個根節點。
- xml標籤的書寫規則與HTML相同。
- 標籤名使用英文小寫,單詞之間用“-”分隔:<shop-cart>購物車</shop-cart>
- 把字元 "<" 放在 XML 元素中,會發生錯誤,如:message>if salary < 1000 then</message>,解決辦法1,實體引用。2,CDATA標籤:CDATA 部分由 "<![CDATA[
- xml多層巢狀中的子元素中,標籤前後順序要保持一致。
例子:
hr.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hr SYSTEM "hr.dtd"> <!-- 註釋,人力資源管理系統 --> <hr> <employee no="001"> <name>李白</name> <age>21</age> <salery>5000</salery> <department> <dname>開發部</dname> <address>北京</address> </department> </employee> <employee no="002"> <name>杜甫</name> <age>23</age> <salery>7000</salery> <department> <dname>市場部</dname> <address>廣州</address> </department> </employee> </hr>
xml語義約束:DTD和xml Schema
DTD 的目的是定義 XML 文件的結構:https://www.runoob.com/dtd/dtd-intro.html
1,使.xml和對應.dtd檔案繫結:
<!DOCTYPE hr SYSTEM "hr.dtd">
hr.dtd
<?xml version="1.0" encoding="UTF-8"?> <!ELEMENT hr (employee+)> <!ELEMENT employee (name,age,salery,department)> <!ATTLIST employee no CDATA ""> <!ELEMENT name (#PCDATA)> <!ELEMENT age (#PCDATA)> <!ELEMENT salery (#PCDATA)> <!ELEMENT department (dname,address)> <!ELEMENT dname (#PCDATA)> <!ELEMENT address (#PCDATA)>
xml Schema
繫結:
<hr xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="hr.xsd">
Schema檔案:hr.xsd
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
<element name="hr">
<!--complexType標籤的含義是複雜節點,包含子節點是必須使用這個標籤 -->
<complexType>
<sequence>
<element name="employee" minOccurs="1" maxOccurs="9999">
<complexType>
<sequence>
<element name="name" type="string"></element>
<element name="age" >
<simpleType>
<restriction base="integer">
<minInclusive value="18"></minInclusive>
<maxInclusive value="60"></maxInclusive>
</restriction>
</simpleType>
</element>
<element name="salery" type="string"></element>
<element name="department">
<complexType>
<sequence>
<element name="dname" type="string"></element>
<element name="address" type="string"></element>
</sequence>
</complexType>
</element>
</sequence>
<attribute name="no" type="string" use="required"></attribute>
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>