考試終于考好了,休息了一天然后繼續以前未完成的struts框架學習。其實我知道怎么用config.xml。就是沒搞懂為什么config.xml能夠把MVC給聯系起來,于是決定復習一下XML。
XML 可用于各種不同的應用程序,但其實質是:XML 是一種表示數據的方式。
1。文檔定義類型和命名空間
1.1 XML的強大之處在于它可以自己定義標記,但是需要一個文檔來定義標記的含義,這樣解析器才能核查數據是否正確。這個文檔定義類型被成為(Document Type Definition)DTD.
比方說一個XML文件
<peson name="john" sex="male"/>
里有個sex屬性,那性別的話除了男就是女了,解析器本來是不知道sex是性別的意思,那屬性值怎么填都不會錯的。如果想讓解析器知道sex值只能是男或女,那就要定義DTD
<!DOCTYPE 根元素 [
<!ELEMENT peson EMPTY>
<!ATTLIST peson
name CDDATA #REQUIRED
sex (MALE | FEMALE) #REQUIRED
>
]>
我其實并不喜歡DTD,DTD和XML怎么看都很不舒服。
1.2 命名空間 主要目的是為了避免(元素名相同,內容不同)。不過前面翻閱IBM資料庫的時候一篇文章里寫命名空間可能要被W3C取消掉了。
2。用CSS和XSL顯示XML文檔
2.1 由于XML主要是用來描述數據的,所以在顯示數據方面沒有HTML那么直接,想要達到HTML那樣的效果,就需要CSS和XSL樣式表。
寫2個例子一看就明白了:
<?xml version="1.0" encoding="UTF-8"?>
<!--引用一個外部CSS樣式表-->
<?xml:stylesheet type="text/css" href="test.css"?>
<!--引用一個xsl樣式表-->
<?xml:stylesheet type="text/xsl" href="test.xsl"?>
<Resume>
<ID id="1">
<Name>John</Name>
<Sex>male</Sex>
<Age>22</Age>
<Skill>IT</Skill>
</ID>
<ID id="2">
<Name>Tom</Name>
<Sex>male</Sex>
<Age>25</Age>
<Skill>Worker</Skill>
</ID>
</Resume>
<!--test.css-->
Resume{display: block;}
id{display: block;}
Name{display: block; font-size:120%;}
Sex{display:red; text-indent:2em}
Skill{ display:red; text-indent:2em}
Age{ display:red; text-indent:2em}
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="Resume">
<html>
<head>
<title>簡歷</title>
</head>
<body>
<xsl:for-each select="ID">
<font color="red"><xsl:value-of select="Name"/></font><br></br>
<xsl:value-of select="Sex"/><br></br>
<xsl:value-of select="Age"/><br></br>
<xsl:value-of select="Skill"/><br></br>
<p></p>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
XSL語法還是比較簡單的,可以說一看就明白。兩者比較一下,還是XSL直觀,靈活一點,不過還是不方便,這也是為什么HTML還如此鼎盛的原因。
2.2 簡單介紹下XSL的語法
2.21 XSL中最重要的概念就是模板,它是由一個一個模板組成。
//定義模板
<xsl:template match="/">
....
<xsl:apply-templates select="Resume" />//調用該模板,有點象調用方法();
.....
</xsl:template>
//(方法定義)
<xsl:template match="Resume">
......
</xsl:template>
2.22 判斷語法
循環語句
<xsl:for-each select="元素名稱"></xsl:for-each>
條件語句
<xsl:if test=""></xsl:if>
3。文檔對象模型DOM和SAX
3.1 DOM把文檔作為一個對象,通過編程的方式來查詢或改變文檔。
DOM是XML在內存中的樹狀結構,當XML文件被載人解析器中解析后,在內存中就建立了一顆相應的樹。
3.2 什么是XML解析器?
解析就是讀取文檔并將文檔分解為能夠進行分析的元素的過程。XML解析器是WEB應用程序最基本勾踐塊。它是有2個基本API組成:DOM 和SAX。
3.3 DOM的優點在于可以進行隨機重復訪問;缺點就是由于DOM是將XML文檔全部載入內存中,所以對內存消耗很大,不適合比較大的XML文檔。
3.4 SAX是可擴展標記語言的簡單應用程序編程接口。由于SAX解析時不創建顯示數據結構,因此它比DOM的效率更好。
不過它的缺點就是只能讀只前進。
DOM和SAX的例子以后會添加進來,所以這里就不寫了。
將所學到的知道用一張表聯系起來,情看:

學習筆記只是簡單地敘述了下XML基本內容有哪些技術,至于想更深刻的理解XML。無它,多動手。