曝光臺(tái) 注意防騙
網(wǎng)曝天貓店富美金盛家居專營(yíng)店坑蒙拐騙欺詐消費(fèi)者
規(guī)則將無效。例如,按照如下方式,通過匹配根元素,并且既不應(yīng)用模板,也不使用xsl:for-each 來處理子元素,就可以
阻止所有的處理過程:
<xsl:template match="/">
</xsl:template>
14.8.2 文本節(jié)點(diǎn)的缺省規(guī)則
細(xì)心的讀者或許已經(jīng)注意到,有幾個(gè)例子似乎已輸出了有些元素的內(nèi)容,但實(shí)際上沒有獲得輸出的元素值!這些內(nèi)容是由
XSL 用于以元素內(nèi)容出現(xiàn)的文本節(jié)點(diǎn)的缺省規(guī)則提供的。此規(guī)則如下:
<xsl:template match="text()">
<xsl:value-of select="."/>
</xsl:template>
這一規(guī)則匹配所有的文本節(jié)點(diǎn)(match="text()"),并輸出文本節(jié)點(diǎn)(<xsl:value-of select="."/>)的值。換言之,此規(guī)
則將文本從輸入復(fù)制到輸出。
XML 實(shí)用大全
第 495 頁(yè)
本規(guī)則確保最少輸出一個(gè)元素的文本,即使沒有任何規(guī)則明確地與此文本匹配。對(duì)于特定的元素(從中可或多或少獲得元素
的文本內(nèi)容),另一個(gè)規(guī)則可以覆蓋此規(guī)則。
14.8.3 兩個(gè)缺省規(guī)則的含義
這兩個(gè)缺省的規(guī)則結(jié)合在一起,意味著把只有xsl:stylesheet 元素而不包括任何子元素的空樣式單(如清單14-14)應(yīng)用
于XML 文檔時(shí),將把輸入元素中所有的#PCDATA 復(fù)制到輸出。但是,這種方法不產(chǎn)生任何標(biāo)記。可是這些規(guī)則的優(yōu)先級(jí)很低。
因此,任何其他匹配都優(yōu)先于這兩個(gè)規(guī)則。
清單14-14:空的XML 樣式單
<?xml version=“1.0”?>
<xsl:stylesheet
xmlns:xsl=“http://www.w3.org/XSL/Transform/1.0”>
</xsl:stylesheet>
在Internet Explorer 5.0 中,對(duì)XSL 產(chǎn)生混淆的最常見的根源之一是,沒有提供任何缺省規(guī)則。要確保明確地匹
配準(zhǔn)備輸出其內(nèi)容(包括其后代)的任何節(jié)點(diǎn)。
XML 實(shí)用大全
第 496 頁(yè)
14.9 決定輸出要包含的內(nèi)容
在未讀取輸入文檔時(shí),推遲決定輸出何種標(biāo)記往往是必要的。例如,或許想將FILENAME 元素的內(nèi)容改為A 元素的HREF 特性,
或者根據(jù)特性的值,將輸入文檔中的某個(gè)元素類型用輸出文檔中的幾個(gè)不同元素類型代替。這可以通過使用xsl:element、
xsl:attribute、xsl:pi、xsl:comment 和xsl:text 來實(shí)現(xiàn)。在這些元素的內(nèi)容中使用XSL 指令,并在這些元素的特性值中
使用特性值模板,就能改變它們的輸出內(nèi)容。
14.9.1 使用特性值模板
特性值模板將數(shù)據(jù)從輸入中的元素內(nèi)容復(fù)制到樣式單中的特性值中。從那里,就可將其寫入輸出中。例如,假定根據(jù)要利用
下面的基于特性的形式將周期表轉(zhuǎn)換成空的ATOM 元素:
<ATOM NAME=”Vanadium”
ATOMIC_WEIGHT=”50.9415”
ATOMIC_NUMBER=”23”
OXIDATION_STATES=”5, 4, 3, 2”
BOILING_POINT=”3650K”
MELTING_POINT=”2163K”
SYMBOL=”V”
DENSITY=”6.11 grams/cubic centimeter”
/>
為此,需要提取輸入文檔中元素的內(nèi)容,并將這些內(nèi)容放在輸出文檔的特性值中。首先,要完成下列內(nèi)容:
<xsl:template match=”ATOM”>
<ATOM NAME=”<xsl:value-of select=’NAME’/>”
ATOMIC_WEIGHT=”<xsl:value-of select=’ATOMIC_WEIGHT’/>”
ATOMIC_NUMBER=”<xsl:value-of select=’ATOMIC_NUMBER’/>”
/>
</xsl:template>是畸形的XML。在特性值內(nèi)部不能使用<字符。而且,要編寫在大多數(shù)一般情況下都能解析此句的軟件,是
極其困難的。
取而代之的是,在特性值內(nèi)部,以放在花括號(hào){}中的數(shù)據(jù)來代替xsl:value-of 元素。上面的正確編寫方式如下:
<xsl:template match=”ATOM”>
XML 實(shí)用大全
第 497 頁(yè)
<ATOM NAME=”{NAME}/>”
ATOMIC_WEIGHT=”{ATOMIC_WEIGHT}/>”
ATOMIC_NUMBER=”{ATOMIC_NUMBER}/>”
/>
</xsl:template>
在輸出文檔中,{NAME}由當(dāng)前節(jié)點(diǎn)的NAME 子元素值所代替。{ATOMIC_WEIGHT}由當(dāng)前節(jié)點(diǎn)的ATOMIC_WEIGHT 子元素值所代替。
{ATOMIC_NUMBER}由當(dāng)前節(jié)點(diǎn)的ATOMIC_NUMBER 子元素值所代替,等等。
特性值模板的模式比只是一個(gè)元素名要復(fù)雜。實(shí)際上,在特性值模板中,可使用前面討論過的任何字符串表達(dá)式。例如,下
面的模板規(guī)則以清單14-1 中使用的形式來選擇DENSITY 元素。
<xsl:template match=”DENSITY”>
<BULK_PROPERTY
NAME=”DENSITY”
ATOM=”{../NAME}”
VALUE=”{.}”
UNITS=”{@UNITS}”
/>
</xsl:template>
上面的模板規(guī)則將特性值模板轉(zhuǎn)換成類似于如下所示的BULK_PROPERTY 元素:
< BULK_PROPERTY NAME=”DENSITY” ATOM=”Helium” VALUE=”
0.1785
“ UNITS=”grams/cubic centimeter”/>
特性值并不局限于在一個(gè)特性值模板中使用。可以將特性值模板與文字?jǐn)?shù)據(jù)或其他特性值模板組合起來使用。例如,下面的
模板規(guī)則匹配ATOM 元素,并且將元素名以H.html、He.html 等格式設(shè)置成鏈接文件,來代替這些元素。此文件名來源于特
性值模板{SYMBOL},而文字?jǐn)?shù)據(jù)提供句號(hào)和擴(kuò)展名。
<xsl:template match=”ATOM”>
<A HREF=”{SYMBOL}.html”>
XML 實(shí)用大全
第 498 頁(yè)
<xsl:value-of select=”NAME”/>
</A>
</xsl:template>
在特性值中,可以包含多個(gè)特性值模板。例如,下面的模板規(guī)則將密度單位作為VALUE 特性的一部分,而不是使密度單位成
中國(guó)航空網(wǎng) m.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實(shí)用大全(140)