xml文檔書寫需要遵循的規則(dtd和schema)
1.DTD約束
1.1 概念:
document type definition文檔類型定義。
dtd是關於一套標記的語法規則。它定義了可以在文檔中使用的元素,屬性和實體以及這些之間的關係。
1.2 dtd的使用:
xml文檔內部使用,也可以在外部使用(規則dtd文件是一個單獨的文件)
1.3dtd內部使用:
在xml文檔的頂部進行dtd的規則聲明:
<!DOCTYPE 根元素[子元素]>
<!ELEMENT 元素名 (元素類型)>
<!ATTLIST 元素名 屬性名 屬性類型 屬性的值的約束
示例:<!ATTLIST name ss CDATA #REQUIRED> 給name元素添加ss屬性,而且必須要有該屬性。
備註: 在屬性值中如果有實體引用出現必須轉義:(xml解析器要解析)
實體引用: < < > > & & " " 空格
額外: 如果不想使用xml解析器解析內容直接原樣輸出:
<!CDATA[[不需要xml解析器解析的內容]]>
總結:
#PCDATA:主要用於規定標籤的文本內容是字符類型。修飾的內容也要使用轉義。
如果不想轉義,使用 <!CDATA[[不需要xml解析器解析的內容]]> xml解析器 不解析了,直接原樣輸出,
CDATA:主要是修改屬性的值爲字符型。xml解析器會解析,如果用到實體引用要轉義。
1.4 內部dtd約束示例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE student[
<!ELEMENT student (id,name,age)>
<!ELEMENT id (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
]>
<student>
<id>1001</id>
<name>sky</name>
<age>18</age>
</student>
1.5外部dtd約束本地文件: 重點
外部約束文件: student.dtd
<!ELEMENT student (id,name,age)>
<!ELEMENT id (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
xml引入本地dtd約束文件:
<?xml version="1.0" encoding="UTF-8"?>
<!-- 引用本地的外部dtd約束文件,struts2 ,mybatis數據庫 (配置文件xml dtd) -->
<!DOCTYPE student SYSTEM "student.dtd">
<student>
<id>1001</id>
<name>sky</name>
<age>18</age>
</student>
1.6 外部dtd約束網絡文件: 重點
格式:
<!DOCTYPE 根元素名稱 PUBLIC
"名稱空間"
"網絡dtd地址文件一般是http://開頭">
<?xml version="1.0" encoding="UTF-8"?>
<!-- 引入外部的網絡dtd約束文件
如果是框架的,一般框架告訴開發者如何引用 ,根據約束提示來書寫xml文件
-->
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
</struts>
備註:如果加入以上約束,該xml文件不提示(原因是讀取不到網絡指定的約束文件),
用戶自己配置本地的約束文件就可以進行提示,
步驟: 1.Window-preferences- XML -XML Catalog- user Specified Entries - Add -添加本地文件dtd (URI 本地dtd對應的網絡地址)
2.schema約束
Schema是dtd約束的替代者。
2.1 Schema的規則地址:
http://www.w3school.com.cn/schema/schema_elements_ref.asp
Schema約束文件的引入:
2.2 引入默認的命名空間萬維網組織:
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
備註: 切換xml的瀏覽模式到Design - 選中標籤元素-右鍵-Edit NameSpaces -
彈窗 Add- 選擇xsi默認確認即可
2.3 添加自己的約束文件(自己約束文件的命名空間和xsd位置): 重點
備註: 切換xml的瀏覽模式到Design - 選中標籤元素-右鍵-Edit NameSpaces -
彈窗 Add- Specified New NameSpace - Browse – 彈窗-
Select XML Catalog Entry - 查找自己的命名空間的內容–
具體後續看圖
練習操作 web.xml
備註: xml約束主要是定義規則,根據規則提示寫xml配置文件。
schema配置約束重點的重點,框架中很多配置文件都是使用xml約束。
json 和xml 進行數據存儲和傳遞配置
web程序中 json主要用於數據存儲和傳輸 json結構簡單(json對象和數組)
xml主要用於配置 (結構複雜,學習和解析很麻煩)