曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
為單獨的特性:
<xsl:template match=”DENSITY”>
<BULK_PROPERTY
NAME=”DENSITY”
ATOM=”{../NAME}”
VALUE=”{.} {@UNITS}"
/>
</xsl:template>
可在一個XSL 樣式單中將特性值模板用于許多特性的值中。這在xsl:element、xs1:attribute 和xsl:pi 元素中特別重要,
因為在這些元素中,特性值模板允許設計者決定在讀取輸入文檔之前,在輸出文檔中準確地顯示何種元素、特性或處理指令。
不能將特性值模板作為select 或match 特性的值、xmlns 特性、提供另一個XSL 指令元素名的特性或頂層元素(為
xsl:stylesheet 直系子元素)特性來使用。
第18 章“命名域”將討論xmlns 特性。
14.9.2 使用xsl:element 將元素插入到輸出文檔中
通常,只使用文字元素本身就可以將元素插入到輸出文檔中。例如,要插入P 元素,只需要在樣式單的適當位置鍵入<P>和
</P>。但是,偶爾也需要使用輸入文檔的詳細內容,來確定將哪個元素放在輸出文檔中。例如,當將使用特性來提供信息的
源符號集變換成使用元素來提供相同信息的輸出符號集時,就是這種情況。
xsl:element 元素將元素插入到輸出文檔中。元素名由xsl:element 元素的name 特性中的特性值模板給出。元素的內容來
自于xsl:element 元素的內容,此元素可能包括要插入這些項的xsl:attribute、xsl:pi 和xsl:comment 指令(下面討論所
有的指令)。
例如,假設根據STATE 特性的值,要用GAS、LIQUID 和SOLID 元素來代替ATOM 元素。使用xsl:element 將STATE 特性值轉
換為某個元素名,從而只需要一條規則就可以做到這一點。具體作法如下所示:
<xsl:template match=”ATOM”>
XML 實用大全
第 499 頁
<xsl:element name=”{@STATE}”>
<NAME><xsl:value-of select=”NAME”/></NAME>
<!- rules for other children ->
</xsl:element>
</xsl:template>
使用更為復雜的特性值模板,就可以實現所需的大多數運算。
14.9.3 使用xsl:attribute 將特性插入到輸出文檔中
只使用文字特性,就可以將特性包括在輸出文檔中。例如,要插入帶有ALIGN 特性(其值為CENTER)的DIV 元素,只需在
樣式單的適當位置處鍵入<DIV ALIGN="CENTER">和</DIV>即可。但是,為了確定特性值,有時甚至是為了確定特性名,常常
不得不依賴于從輸入文檔中讀取的數據。
例如,假設要獲得一樣式單,可選擇原子名,并把這些原子名格式化為與H.html、He.html、Li.html 等等文件的鏈接:
<LI><A HREF="H.html">Hydrogen</A></LI>
<LI><A HREF="He.html">Helium</A></LI>
<LI><A HREF="Li.html">Lithium</A></LI>
在輸入文檔中,每個不同的元素都有一個不同的HREF 特性值。xsl:attribute 元素計算特性名和值,并將它插入到輸出文
檔中。每個xsl:attribute 元素要么是xs1:element 元素的子元素,要么是文字元素。在輸出中,xsl:attribute 計算出來
的特性關聯到與其父元素計算出來的元素上。特性名是由xsl:attribute 元素的name 特性指定的。特性值是由
xsl:attribute 元素的內容給出的。例如,下面的模板規則將產生上面顯示的輸出結果:
<xsl:template match="ATOM">
<LI><A>
<xsl:attribute name="HREF">
<xsl:value-of select="SYMBOL"/>.html
</xsl:attribute>
<xsl:value-of select="NAME"/>
</A></LI>
</xsl:template>
XML 實用大全
第 500 頁
所有的xsl:attribute 元素都必須放在其父元素的任何其他內容之前。在已經開始寫出元素內容之后,就不能將特性加到元
素中。例如,下面的模板是非法的:
<xsl:template match="ATOM">
<LI><A>
<xsl:value-of select="NAME"/>
<xsl:attribute name="HREF">
<xsl:value-of select="SYMBOL"/>.html
</xsl:attribute>
</A></LI>
</xsl:template>
14.9.4 定義特性集合
經常需要將同一組特性應用于許多不同的元素(既可是同類的,也可以是不同類的)。例如,將樣式特性應用于HTML 表中
的每個單元格。要使這一操作更加簡單,可使用xsl:attribute-set,在樣式單的頂層定義一個或多個特性作為特性集合的
成員,然后使用xsl:use 將此特性集合包括在元素中。
例如,下面的xsl:attribute-set 元素定義一個名為cellstyle 的元素,其font-family 特性為New York、Times New Roman、
Times 和serif,其font-size 特性為12pt。
<xsl:attribute-set name=”cellstyle”>
<xsl:attribute name=”font-family”>
New York, Times New Roman, Times, serif
</xsl:attribute>
<xsl:attribute name=”font-size”>12pt</xsl:attribute>
</xsl:attribute-set>
然后,用下面的模板規則將這些特性應用于輸出文檔的td 元素。與xsl:attribute 一樣,插入特性集合的xsl:use 元素也
必須放在作為td 子元素而加入的任何內容之前。
<xsl:template match=”ATOM”>
<tr>
<td>
XML 實用大全
第 501 頁
<xsl:use attribute-set=”cellstyle”/>
<xsl:value-of select=”NAME”/>
</td>
<td>
<xsl:use attribute-set=眂ellstyle”/>
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實用大全(141)