xml 簡單學習總結

1、申明xml
<?xml version=1.0 encoding="UTF-8?>


2、引入外部樣式表


<?xml-sheetstyle type="text/css" href="c.css" ?>


3、自定義實體


 <!DOCDYPE
  ROOT[
  <!ENTITY entityName  entityValue>
  ]
 >


 eg:


 <!DOCTYPE root[
    <!ENTITY name "tom">
 ]>


 4、編寫dtd


  DTD的目的:
驗證該xml文檔是否是有效的xml文檔
如果一個良構的xml文檔滿足了DTD的聲明就是一個有效的xml文檔。
注意:良構 不一定  有效,但是有效一定良構
  DTD對xml文件中元素的約束:
格式:<!ELEMENT  元素名 (內容模式)>


<!ELEMENT students (stu*)>
    <!ELEMENT stu (#PCDATA|id|name|age)*>




內容模式:
empty
1).EMPTY:元素不能包含子元素和文本(空元素)
例如:
dtd文件:
<!ELEMENT students (stu)>
<!ELEMENT stu EMPTY>
xml文件:
<students>
<!--這個stu元素中的內容必須爲空-->
<stu></stu>
</students>


2).(#PCDATA):可以包含任何字符數據,但是不能在其中包含任何子元素
例如:
dtd文件:
<!ELEMENT students (stu)>
<!ELEMENT stu (#PCDATA)>
xml文件:
<students>
<stu>tom</stu>
</students>


3).ANY:元素內容爲任意的,主要是使用在元素內容不確定的情況下
例如:
dtd文件:
<!ELEMENT students (stu)>
<!ELEMENT stu ANY>
xml文件:
<students>
<stu>tom</stu>
</students>
或者
<students>
<stu>
<name>tom</name>
</stu>
</students>


修飾元素內容的
()  用來對元素的內容分組
|  或
+  1 n
*  0 n
?  1或者0
,  按照順序
默認修飾符  有且僅有一個






屬性約束:
    <!ATTLIST 元素名稱
屬性名稱    值類型    屬性特點
屬性名稱    值類型    屬性特點
>
   <!ELEMENT students (stu*)>
<!ELEMENT stu (#PCDATA)>
<!ATTLIST stu
id   CDATA #REQUIRED
    name CDATA #REQUIRED
>






  1、值類型:




1).CDATA:屬性值可以是任何字符(包括數字和中文)


2).ID:屬性值必須唯一,屬性值必須滿足xml命名規則


3).IDREF/IDREFS
IDREF屬性的值指向文檔中其它地方聲明的ID類型的值。
IDREFS同IDREF,但是可以具有由空格分開的多個引用。


4).enumerated:(枚舉值1|枚舉值2|枚舉值3...),屬性值必須在枚舉值中
例如:
dtd文件:
<!ELEMENT students (stu*)>
<!ELEMENT stu (#PCDATA)>
<!ATTLIST stu
id     ID     #REQUIRED
name   CDATA  #REQUIRED
gender (男|女)  #REQUIRED
>




  2、屬性特點:
    1).#REQUIRED:元素的所有實例都必須有該屬性
例如:
dtd文件:
<!ELEMENT students (stu*)>
<!ELEMENT stu (#PCDATA)>
<!ATTLIST stu
name   CDATA   #REQUIRED
>
xml文件:
<students>
<stu name=""></stu>
<stu name="tom"></stu>
</students>
注意:
1. name屬性必須出現
2. name屬性的值可以爲空也可以不爲空


2).#IMPLIED :屬性可以不出現
例如:
dtd文件:
<!ELEMENT students (stu*)>
<!ELEMENT stu (#PCDATA)>
<!ATTLIST stu
name   CDATA   #IMPLIED
>
xml文件:
<students>
<stu name=""></stu>
<stu name="tom"></stu>
<stu></stu>
</students>
注意:
1. name屬性可以出現也可以不出現
2. name屬性的值可以爲空也可以不爲空


3).default-value:屬性可以不出現,並且當它不出現的時候是有默認值的,而該屬性的默認值就是atttibute-value
例如:
dtd文件:
<!ELEMENT students (stu*)>
<!ELEMENT stu (#PCDATA)>
<!ATTLIST stu
name   CDATA   "tom"
>
xml文件:
<students>
<stu name="zhangsan"></stu>
<stu></stu>
</students>
注意:
1. name屬性可以出現也可以不出現
2. name屬性如果不出現則默認值爲tom


4).#FIXED :屬性可以不出現,但是如果出現的話必須是指定的屬性值
例如:
dtd文件:
<!ELEMENT students (stu*)>
<!ELEMENT stu (#PCDATA)>
<!ATTLIST stu
name   CDATA   #IMPLIED
school CDATA   #FIXED "briup"
>
xml文件:
<students>
<stu school="briup"></stu>
<stu></stu>
</students>
注意:
1. name/school屬性可以出現也可以不出現
2. school屬性如果出現那麼值一定要是briup




引入外部dtd


<!DOCDYPE  root public id url  >
<!DOCDYPE  root system path>


內部dtd
<!DOCTYPE root[
<!--約束元素  element-->
<!ELEMENT root (test+)>
<!ELEMENT test  (id)>
]>
混合dtd
<!DOCTYPE root SYSTEM "../dtd/dtdTest1.dtd"[
<!ELEMENT test  (name)>
]>
發佈了43 篇原創文章 · 獲贊 21 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章