格式正規的XML:語法 屬性 實體 處理指令 樣式單 CDATA節


 

XML介紹

  eXtensible Markup Language

  XML是一種元標記語言,用戶可以定義自己需要的標記。

  Document Type Definition, DTD文檔類型定義。

  XML描述的是結構、內容和語義,它不描述頁面元素的格式化。

  對比:HTML側重於如何表現信息,內容描述與顯示整合為一體。

  XML中的每個元素名都是成對出現的。結束標簽前加一個/

  如:

<?xml version="1.0"?>
<Student> 
        <Name>ZhangSan</Name> 
        <ID>001</ID> 
</Student>

 

  文檔的后綴名是xml,每個文檔有且僅有一個根元素

  所謂根元素就是包含了其他所有元素的元素。

                       

XML vs HTML

 

 

  使用XML可以實現異構語言、異構平台之間的交互。

 

XML1.0語法

  XML目前只有一個版本,即1.0.

  XML是自描述數據,使用現有的國際標准。

  XML中有格式正規的XML有效的XML本文講格式正規的。

  遵循如下規則的XML文檔稱為格式正規的XML文檔:

語法規范:

  必須有XML聲明語句;

  必須有且僅有一個根元素;

  標記大小寫敏感;

  屬性值用引號;

  標記成對;

  空標記關閉;

  元素正確嵌套。

元素語法:

  名稱中可以包含字母、數字或者其他字符;

  名稱不能以數字開頭;

  不能以XML/xml/Xml…開頭;

  名稱中不能含空格;

  名稱中不能含冒號(注:冒號留給命名空間使用)。

 

XML解析器

  XML解析器是讀取XML文檔並提供對文檔內容的訪問的軟件模塊。

  類型:無驗證的解釋器和驗證的解釋器。

  解析器:

  MSXML IE

  IBM XML4J

  Apache Xerces

  Oracel XML Parser

 

XML文檔

  一個XML文檔:

<?xml version="1.0"  encoding="utf-8" standalone="yes"?>
<!--第一行是XML聲明-->
<!--這是XML處理指令的例子。處理指令以<?開始,以?>結束-->
<!--在<?后的第一個單詞是處理指令名,在本例中是xml-->
<!--處理指令一定要頂格寫,前面不能有任何空白-->

<students>
        
        
        <GREETING><!--開始標記-->
                
                Hello World<!--元素內容-->

        </GREETING><!--結束標記-->
        
        <student  gender="male" isHandsome="true">                
                <id>001</id>                
                <name>zhangsan</name>
                <address>Beijing</address>
                <score>50</score>
        </student>
        
        <student gender="female">                
                <id>002</id>                
                <name>lisi</name>
                <address>北京</address>
                <score/><!--為空的簡寫形式-->
        </student>

</students>

 

  如其中注釋:

  <!--第一行是XML聲明-->

  <!--這是XML處理指令的例子。處理指令以<?開始,以?>結束-->

  <!--在<?后的第一個單詞是處理指令名,在本例中是xml-->

  <!--處理指令一定要頂格寫,前面不能有任何空白-->

  處理指令一定要頂格寫,前面不能有任何空白。

  處理指令的?前面后面都不能有空格。

   但元素中的空白是允許的。

  文檔注釋用<!-- 和-->包圍,不允許嵌套,允許多行注釋。

  XML里面的元素嚴格區分大小寫

 

  XML文檔必須有且只有一個根元素

  根元素是一個完全包括文檔中其他所有元素的元素。

 

XML文檔聲明

  每一個XML文檔都以一個XML聲明開始,用以指明所用的XML的版本。

  XML聲明有version 、encoding和standalone特性。

  特性是由等號分開的名稱-數值對。位於等號左邊的是特姓名,而其值位於等號的右邊,並用雙引號或單引號括起來。

  在上例中,version特性表明這個文檔符合XML 1.0規范。

  XML聲明還可以有standalone特性,這告訴我們文檔是否在這一個文件里,還是需要從外部導入文件。

  encoding 屬性指定了編碼格式,默認情況下是utf-8,這個屬性要放在standalone屬性前面。

  注意本文文件保存時候默認的編碼格式是ANSI,需要利用記事本把它手動改為UTF-8保存。

 

屬性

  如上所述,

  屬性(特性)是由等號分開的名稱-數值對。

  位於等號左邊的是特姓名,而其值位於等號的右邊,並用雙引號或單引號括起來。

 

  自定義的元素也可以有一個或多個屬性,其屬性值使用單引號或者雙引號括起來。

  如果屬性值中有雙引號則使用單引號,反之亦然。

  屬性的形式為:

  屬性名= "屬性值",比如gender="male"。

  多個屬性值之間用空格隔開(一個或多個空格都可以)。

  在一個元素上,相同的屬性只能出現一次。

  屬性值不能包含<, >, &。

 

實體

  實體叫ENTITY,實體的作用是避免重復輸入。作用相當於宏或者變量。

  XML中內置的5種實體:

 

  自定義實體語法:

             <!DOCTYPE 根元素[

             <!ENTITY 實體名 "實體內容">

             ]>

  引用已定義的實體:

    &實體名;

  

  使用實體的例子:

  XML代碼:

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE test[
<!--實體聲明-->
<!ENTITY comA "Company A">

<!ENTITY addA "Some Place">        
        
]>
<test>

        <!--直接寫進去的方法-->
        <company>
                <name>Company A</name>
                <address>Some Place</address>        
        </company>
        
        <!--用實體的方法-->
        <company>
                <name>&comA;</name>
                <address>&addA;</address>        
        </company>
</test> 

 

  用Chrome打開:

  可見使用實體和直接寫值的效果是一樣的,實體所代表的值被瀏覽器代入。

 

文檔類型定義——DOCTYPE

  文檔類型聲明,緊跟XML聲明之后,包含所有實體聲明。

  語法:

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE 根元素標記名[

<!--實體聲明-->
                     
]>

 

  實例如上,實體部分。

 

處理指令PI

  處理指令用於XML解析器傳遞信息到應用程序。

  語法:<?目標 指令?>

  PI必須以一個叫做目標的標識符開頭,這個標識符遵從如同元素和屬性一樣的規則,目標是指令所指向的應用的名稱,指令是傳遞給應用程序的信息。

 

為XML文檔編寫樣式單

  XML允許用戶來創建任何所需要的標記。

  當然,由於用戶在創建標記上有完全的自由,因而通用的瀏覽器無法預期用戶標記的意義,也無法為顯示這些標記而提供規則。

  因而,用戶必須為文檔編寫樣式單,告訴瀏覽器如何顯示特定的標記。

  與標記集類似,用戶創建的樣式單可由不同的文檔不同的人所共享,還可將自己創建的樣式單與其他人編寫的樣式單集成在一起。

  比如編寫樣式hello.css:

GREETING{display:block; font-size:24pt; font-weight:bold

 

  加入樣式的方法,是在XML文檔中包括一個處理指令,指定所要使用的樣式單:

<?xml-stylesheet type="text/css" href="hello.css"?>

 

  完整的XML文檔如下:

<?xml version="1.0"  encoding="utf-8" standalone="yes"?>
<!--第一行是XML聲明-->
<!--這是XML處理指令的例子。處理指令以<?開始,以?>結束-->
<!--在<?后的第一個單詞是處理指令名,在本例中是xml-->
<!--處理指令一定要頂格寫,前面不能有任何空白-->

<!--另一個處理指令,表明要采用hello.css定義的樣式
     (使用當前目錄下的hello.css)-->
<?xml-stylesheet type="text/css" href="hello.css"?>



<students>
        
        
        <GREETING><!--開始標記-->
                
                Hello World<!--元素內容-->

        </GREETING><!--結束標記-->
        
        <student  gender="male" isHandsome="true">                
                <id>001</id>                
                <name>zhangsan</name>
                <address>Beijing</address>
                <score>50</score>
        </student>
        
        <student gender="female">                
                <id>002</id>                
                <name>lisi</name>
                <address>北京</address>
                <score/><!--為空的簡寫形式-->
        </student>

</students>

 

  通過樣式,我們可以實現XML內容與展現形式的分離。

  為XML文檔編寫樣式單可以用CSS或XSL,XSL比CSS復雜。

 

CDATA節

  用於把整段文本解釋為純字符數據而不是標記的情況。

  包含大量的<、>、&、或者"字符。CDATA節中的所有字符都會被當做元素字符數據的常量部分,而不是XML標記。

  語法:

<![CDATA[

......

]]>

 

  可以輸入任意字符(除]]外),不能嵌套。

<?xml version="1.0" encoding="utf-8"?>
<root>
        <![CDATA[

        <hello>
                <world>

                        
            這里放任何內容都是合法的
        
        ]]> 

        <subRoot>
        
        </subRoot>
</root>

 

 

參考資料

  聖思園張龍老師教學視頻。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM