17
[XPATH]XML 路徑語言
Posted by YuanYuan最近小蕃班在寫 xslt 遇到了一個問題,就是要寫搜尋結果,並讓單數列和雙數列的背景色不同.於是我試了好幾次,想辦法找出問題.解決方法有2:
1.修改 XML 的格式,讓資料能同為一欄.
2.想辦法寫出 xslt,但是,這個相當難寫,就我們抓取資料的型態來說,就單純以節點來抓是最方便的了.但是這個遇到1個問題是,資料不在1個節點下,而是在共同的根下.
如果不做分色的動作,其實還蠻好做的,只要設一個
<xsl:for-each select=”CATEGORY_BRIEF[@LEVEL_OF_TREE=4]“>
….
</xsl:for-each>
資料馬上會顯示,只有 LEVEL_OF_TREE=4 的內容.(資料欄位位置會重排.)
但是要分色,就要判斷它的 position,然後 mod 2,餘1=A色, 餘0=B色.
可問題來了,由於所有資料,不都位於 CATEGORY_BRIEF下,而是和它平行
<CATEGORY_BRIEF>…</CATEGORY_BRIEF>
<GroupName>super kids班</GroupName>
<GroupMaster>鍾育紋</GroupMaster>
<GroupLesson>國語</GroupLesson>
<GroupDegree>1</GroupDegree>
再怎麼用 position去判斷位置也是會出問題.
於是後來找到了個寫法 following-sibling::GroupName,
它的意思是 following-sibling::GroupName 選擇上下文節點的下一個 GroupName 兄弟, 才解決了這個問題.原來,我們一直沒深入去使用 XPath, 其實它也是一個類似程式的語法,它可以技巧性的去抓資料欄位內容,而不是只靠我們目視去找 node 然後去抓資料.
需要寫更深入 xslt 的人,一定要看XPath的使用方法,可以幫忙解決可能遇到的許多問題.
建議修改
1.修改 xml xml
2.修改 xsl xslt
以下是 XPath 的相關介紹與用法
來去瞧瞧
Add A Comment