做了一小段xml.與大家交流。 三個文件。(blue.xml blue.xsl blue.css )拷到本地同一目錄下。
blue.xml: 運行代碼框
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]
blue.xsl: 運行代碼框
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]
blue.css: 運行代碼框
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]
(以前見別人做過一個類似的電子文檔。) XML在更多的時候只是一種數(shù)據(jù)文件,利用XML我們可以使內(nèi)容與樣式分離 如果我們將XML文件比作結(jié)構化的原料的話。那么XSL就好像"篩子"與"模子", 篩子選取自己需要的原料,這些原料再通過模子形成最終的產(chǎn)品。 這個模子大致是這樣:我們先設計好表現(xiàn)的頁面,再將其中需要從XML中獲取數(shù)據(jù)來填充內(nèi)容的部分去掉, 然后用XSL語句從XML中篩出相關的數(shù)據(jù)來填充。
XML在展開時是一個樹形結(jié)構,將樹形結(jié)構中自定義標記稱為節(jié)點,節(jié)點之間存在父子、兄弟關系,要訪問其中的結(jié)點從根結(jié)點就要以"/"來層層進入。
怎樣從XML里提取相關的數(shù)據(jù),就要用到XSL提供的模式化查詢語言。就是通過相關的模式匹配規(guī)則表達式從XML里提取數(shù)據(jù)的特定語句,即上面所說的"篩子"。
選擇模式: <xsl:for-each>、<xsl:value-of>和 <xsl:apply-templates>
匹配模式: <xsl:template>
<xsl:template match="Replys" > <xsl:for-each select="Reply" > <div> <div id="replyPerson">回復人:<xsl:value-of select="UserName"/> | <xsl:value-of select="RankName"/>|</div> <div><xsl:apply-templates select="Content" /></div> <div>發(fā)表時間:<xsl:value-of select="DateTime"/></div> </div> </xsl:for-each> </xsl:template>
簡單說下這段:
XSL模板將XSL的設計細化成一個個模板(塊),最后再將這些模板(塊)組合成一個完整的XSL;好比船與集裝箱,我們不是將所有的貨物一件件地堆起來,而是裝在各自的集裝箱中,然后再在船上將這些集裝箱堆放起來。這種方法可以使你先從整體上考慮整個XSL的設計,然后將一些表現(xiàn)形式細化成不同的模塊,再具體設計這些模塊,最后將它們整合在一起,這樣,將宏觀與微觀結(jié)合起來,符合人們條理化、規(guī)范化要求。
裝集裝箱--書寫模板(塊):<xsl:template> <xsl:template match="Replys"> match ── 確定什么樣的情況下執(zhí)行此模板。就是標記的名字; 其中最上層模板必須將match設為"/"。 <xsl:template>用match屬性從XML選取滿足條件的節(jié)點,在真對這些特定的節(jié)點形成 一個特定輸出形式的模板。
<xsl:for-each select="Reply">循環(huán)選擇。 select :確定在此上下文環(huán)境中應執(zhí)行什么模板,即選取用< xsl:template >標記建立的模板(塊)。 <xsl:value-of> 直接輸出選擇的。 調(diào)用模板(塊):<xsl:apply-templates select="Content" /> 調(diào)用xsl最后一段。 <xsl:template match="Content"> <xsl:apply-templates /> </xsl:template>
說多了。不太禮貌。 大家新年快樂。 一些基本概念和更多參考微軟的"XSL開發(fā)者指南": www.microsoft.com/china/msdn/Archives/workshop/xmlfaq.asp
經(jīng)典論壇討論帖:
http://www.95time.cn/bbs/NewsDetail.asp?id=2399268
出處:藍色理想
責任編輯:moby
◎進入論壇網(wǎng)絡編程版塊參加討論
|