test1.xml:
<?xml version="1.0" encoding="utf-8"?>
<?xml:stylesheet type="text/xsl" href="test3.xsl"?>
1231.23
4564.56
789.789
0120.12
3453.45
6.78678
9019.01
234.234
test1.xsl:
[preceding::root/e2/]
[following::root/e2/]
[preceding-sibling::root/e2/]
[following-sibling::root/e2/]
[descendant::root/e2/]
[ancestor::root/e2/]
[descendant-or-self::root/e2/]
[ancestor-or-self:root/e2/]
[parent::root/e2/]
[child::root/e2/]
[self::root/e2/]
結果:下圖中的代表textnode()。因為node()方法包含所有型別的節點。因此使用該方法時應該留意對型別進行過濾。
[preceding::root/e2/] [xml:stylesheet] [e1] [e1-1] [e1-1-1] [e1-2]
[following::root/e2/] [e3] [e3-1] [e3-1-1] [e3-1-2] [e3-1-2-1] [e3-2] [e3-2-1]
[preceding-sibling::root/e2/] [e1]
[following-sibling::root/e2/] [e3]
[descendant::root/e2/] [e2-1] [e2-2] [e2-2-1] [e2-3]
[ancestor::root/e2/] [root]
[descendant-or-self::root/e2/] [e2] [e2-1] [e2-2] [e2-2-1] [e2-3]
[ancestor-or-self:root/e2/] [root] [e2]
[parent::root/e2/] [root]
[child::root/e2/] [e2-1] [e2-2] [e2-3]
[self::root/e2/] [e2]
test2.xsl:
[root/e2/e2-1][ceiling(
)=][root/e2/e2-2/e2-2-1][floor(
)=][root/e1/e1-1-1 + root/e3/e3-1-1][+=
][root/e2/e2-2/e2-2-1][round()=]
[root/e2 counts of descendants]
[count(nodes)=
][count(elements)=
][count(texts)=
][root/e2][number(text())=
][number(boolean(text()))=
][number(string(text()))=
]結果:這一部分測試xpath中數值函式的運用,幾點結論:
一、當任意型別之間用+相加時,相加之前元素會先轉換為number型別。
二、形如0120.12這樣以零開頭的字串,轉換成number型時不會報錯。
三、可以用boolean(local-name())和boolean(text())的方式過濾節點型別。
四、對於不含textnode的元素或父元素,number()並不將其轉換為0,而是轉換為nan。對於這些節點,可以用number(boolean(text())的方式轉換為。
[root/e2/e2-1][ceiling( 789.789 )=790]
[root/e2/e2-2/e2-2-1][floor( 0120.12 )=120]
[root/e1/e1-1-1 + root/e3/e3-1-1][ 1231.23 + 6.78678 = 1238.01678]
[root/e2/e2-2/e2-2-1][round( 0120.12 )= 120]
[root/e2 counts of descendants] [count(nodes)= 7] [count(elements)= 4] [count(texts)= 3]
[root/e2][number(text())= nan] [number(boolean(text()))= 0] [number(string(text()))= nan]
test3.xsl:
[root/e2][starts-with(
,'01')=
][root/e2][starts-with(normalize-space(
),'01')=
][starts-with(number(
),'1')=
][root/e2][starts-with(
0120.12,01)=
][starts-with(
'0120.12','01')=
][starts-with(
0120.12,1)=
][starts-with(
0120.12,00001)=
][starts-with(string(
),'345')=
][starts-with(number(
),'345')=
][starts-with(
,'e')=
]結果:這一部分測試字串函式,幾點結論:
一、在使用字串函式時,如果引數是節點或節點集,要小心地處理空白,否則會產生令你嗔目結舌的結果。很多人習慣在xml檔案的編輯軟體如ue等中設定將tab轉換為空白,應記得先呼叫normalize-space()函式去掉不需要的空白。
二、但字串函式的引數不是節點或節點集而需要型別轉換時,xsl是依照boolean->number->string的次序進行轉換的。
所以對於下圖中的0120.12實際上先被轉換成120.12,然後被轉換成'120.12',00001先轉換成1,然後被轉換成'1'。
三、substring()以1為頭乙個字元的索引值。
四、translate()函式提供了一種高效、便捷地替換字元的方法,為了達到預定效果,應確保該函式的第二個和第三個引數的字元長度總是相等,因為長度不一時,較長引數的多餘字元將被自動截掉。
[root/e2][starts-with( 0120.12 ,'01')= false] [root/e2][starts-with(normalize-space( 0120.12 ) ,'01')= true] [starts-with(number( 0120.12 ) ,'1')= true]
[root/e2][starts-with( 0120.12,01)= true] [starts-with( 0120.12,'01')= false] [starts-with( 0120.12,1)= true] [starts-with( 0120.12,00001)= true]
[starts-with(string( 3453.45 ),'345')= false] [starts-with(number( 3453.45 ),'345')= true] [starts-with( e2,'e')= true]
[string-length( 789.789 )= 29] [string-length(normalize-space( 789.789 ))= 7]
[contains( 789.789 , 789)= true]
[substring('substring',3,4)= bstr] [substring(123456, 2,10)= 23456] [substring(123456, -2,4)= 1] [substring(123456, 5,-2)= ]
[substring-after('12-34-56', '-')= 34-56] [substring-after('12-34-56', '')= 12-34-56]
[substring-before('12-34-56', '-')= 12] [substring-before('12-34-56', '')= ]
[translate('12a34b56c', 'abc', 'xyz')= 12x34y56z] [translate('12a34b56c', 'abcdefg', 'xyz')= 12x34y56z] [translate('12a34b56c', 'abc', 'xyzlmn')= 12x34y56z] [translate('12a34b56c78a90b12c', 'abc', 'xyz')= 12x34y56z78x90y12z]
Qt樣式表學習
目錄 1.何為qt樣式表 2.樣式表語法基礎 3.方箱模型 4.前景與背景 5.建立可縮放樣式 6.控制大小 7.處理偽狀態 8.使用子部件定義微觀樣式 8.1.相對定位 8.2.絕對定位 1.何為qt樣式表 樣式表是通過qstyle的乙個叫qstylesheet的特殊子類來實現的。這個特殊的子類實...
CSS層疊樣式表 定義樣式表
定義樣式表 1 html標記定義 p p可以叫做選擇器,定義那個標記中的內容執行其中的樣式 乙個選擇器可以控制若干個樣式屬性,他們之間需要用英語 隔開,最後乙個可以不應加 2 class定義 class定義是以 開始 p3 id 定義 id定義是 開始的 p4 優先順序問題 id class htm...
基準樣式表
翻譯 css的初學者常因為瀏覽器的預設樣式表,而生產一些錯誤。可以設定乙個基本的樣式表,恢復css最基本的樣貌。global settings html,body body headings h1,h2,h3,h4,h5,h6 h1 h2 h3 common formatting p,ul,ol u...