1. 程式人生 > 其它 >XML入門筆記

XML入門筆記

技術標籤:java學習xmljava

XML文件結構(https://www.runoob.com/xml/xml-syntax.html

  1. 第一行必須是xml宣告 :<?xml version="1.0" encoding="UTF-8"?>,定義 XML 的版本(1.0)和所使用的編碼(UTF-8 : 萬國碼, 可顯示各種語言)。
  2. 有且只有一個根節點。
  3. xml標籤的書寫規則與HTML相同。
  4. 標籤名使用英文小寫,單詞之間用“-”分隔:<shop-cart>購物車</shop-cart>
  5. 把字元 "<" 放在 XML 元素中,會發生錯誤,如:message>if salary < 1000 then</message>,解決辦法1,實體引用。2,CDATA標籤:CDATA 部分由 "<![CDATA[
    " 開始,由 "]]>" 結束。
  6. 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>