跟我學(xué)XSL(二)第2/4頁
本期學(xué)習(xí)XSL樣式方法,即可用于XSL元素<xsl:for-each>、<xsl:value-of>、<xsl:template>的select屬性、<xsl:apply-templates>的match屬性、<xsl:if>、<xsl:when>的test屬性中,對元素的范圍進(jìn)行篩選,從而提供更大的靈活性。
XML與DHTML(動(dòng)態(tài)HTML)一樣,這些節(jié)點(diǎn)都是一個(gè)個(gè)對象,而且這些對象都是有層次的,從根節(jié)點(diǎn)開始構(gòu)成一顆層次清淅的樹狀結(jié)構(gòu),這就形成了文檔對象模型DOM(Document Object Model),通過對象的屬性、方法來達(dá)到訪問控制XML節(jié)點(diǎn)的目的。
我們這里不打算就XML的DOM逐一詳細(xì)闡述,因?yàn)檫@完全可以寫成一個(gè)篇幅較多的教程,我們先就一些常見的方法作一些討論,以期對DOM的對象方法有一個(gè)大致的了解。
注:從本期開始,所有示例不再提供完整源代碼,如有不明白之處,請仔細(xì)閱讀前面七期、并動(dòng)手練手。
一、end()
含義:返回集合中最后一個(gè)元素。
示例:輸出最后一份簡歷
假定XML文件格式為:
……<resume>…</resume>……<resume>…</resume>……
相應(yīng)XSL文件內(nèi)容為:
<xsl:for-each select="resume[end()]">……</xsl:for-each>
或:
<xsl:templates match="resume[end()]">……</xsl:templates>
或:
<xsl:apply-template select="resume[end()]">……</xsl:apply-template>
二、index()
含義:返回該元素在集合中的位置,返回值是一整數(shù),其中第一個(gè)元素返回0。
示例:返回前面三份簡歷。
resume[index()$le$3]
注意:index()是與父元素相關(guān)的,請看下例:
<x>
<y/>
<y/>
</x>
<x>
<y/>
<y/>
</x>
返回所有<x>中的第一個(gè)<y>
x/y[index()=0] 或x/y[0]
三、nodeName()
含義:返回元素的名字,即標(biāo)記名。
示例:選擇任意元素,假如其名字(即標(biāo)記名)等于"name":
*[nodeName()='name'] 或 *[name]
四、number()
含義:將值轉(zhuǎn)換為數(shù)值形式,如果不是數(shù)值則返回空,要求參數(shù)。
示例:年齡(age)小于30歲的人的簡歷(resume):
resume[number(age)$lt$30] 或 resume[age$lt$30]
五、nodeType()
含義:返回結(jié)點(diǎn)類型,結(jié)果為是數(shù)值。以下是返回值列表:
結(jié)點(diǎn)類型 | 結(jié)點(diǎn)類型值 | 結(jié)點(diǎn)的字符形式描述 |
Element | 1 | 'element' |
Element Attribute | 2 | 'attribute' |
Markup-Delimited Region of Text | 3 | 'text' |
Processing Instruction | 7 | 'processing_instruction' |
Comment | 8 | 'comment' |
Document Entity | 9 | 'document' |
六、value()
含義:返回元素或?qū)傩缘闹怠?/P>
示例:value()是元素或?qū)傩缘娜笔》椒?,以下表示是等價(jià):
name!value()="NAME" 與 name="NAME"
@attr="attribute_value" 與 @attr="attribute_value"
注:@是屬性前綴,@attr表示是屬性attr
七、attribute()
含義:返回所有屬性結(jié)點(diǎn)的集合,等價(jià)于"@*"。
示例:尋找所有的resume元素,滿足條件至少有一個(gè)屬性的值為"ABC":
resume[$any$attribute()='ABC'] 或 resume[$any$@*='ABC']
尋找所有的resume元素,滿足條件至少有一個(gè)子元素有一個(gè)屬性的值為"ABC":
resume[$any$*/attribute()='ABC'] 或 resume[$any$*/@*='ABC']
八、comment()
含義:返回所有注釋結(jié)點(diǎn)。
示例:
resume[$any$comment()='禹希初的簡歷']
表示尋找含有注釋語句:<!--禹希初的簡歷-->的<resume>元素。
九、cdata()
含義:返回所有CDATA類型的結(jié)點(diǎn)的集合。
示例:
resume[$any$cdata()='禹希初的簡歷']
表示尋找含有下述語句(必須是直接子結(jié)點(diǎn))<![CDATA[禹希初的簡歷]]>的<resume>元素。
十、node()
含義:返回當(dāng)前上下文環(huán)境中除根結(jié)點(diǎn)和屬性結(jié)點(diǎn)以外的所有結(jié)點(diǎn)的集合,等價(jià)于:
"*|pi()|comment()|text()"
示例:尋找所有元素resume,其最后一個(gè)結(jié)點(diǎn)的名字為"skill":
resume[node()[end()]!nodeName()='skill']
尋找所有resume元素的第一個(gè)結(jié)點(diǎn):resume/node()[0]。
十一、textnode()
含義:返回所有文本類型的結(jié)點(diǎn)的集合。
示例:尋找每一個(gè)p元素的第二個(gè)文本結(jié)點(diǎn):
p/textnode(1) 或 p!textnode(1)
十二、text()
含義:返回所有表示文本字符串的結(jié)點(diǎn)的集合,等價(jià)于"cdata()|textnode()"。
本期的內(nèi)容就介紹至此,另有一個(gè)函數(shù)date()在本人的機(jī)器上一試就發(fā)生錯(cuò)誤使瀏覽器自動(dòng)關(guān)閉,還有一個(gè)函數(shù)pi()本人尚未找到適當(dāng)?shù)膽?yīng)用方法,就不介紹了,下期將講述如何XSL中使用腳本。
相關(guān)文章
實(shí)例講解:開發(fā)SWING的XML框架(2)
實(shí)例講解:開發(fā)SWING的XML框架(2)...2006-10-10使用PHP DOM-XML創(chuàng)建和解析XML文件
使用PHP DOM-XML創(chuàng)建和解析XML文件...2006-10-10XMLHTTP下載遠(yuǎn)程數(shù)據(jù)輸出到瀏覽器
XMLHTTP下載遠(yuǎn)程數(shù)據(jù)輸出到瀏覽器...2006-10-10使用javascript+xml實(shí)現(xiàn)分頁
使用javascript+xml實(shí)現(xiàn)分頁...2006-10-10