曝光臺 注意防騙
網(wǎng)曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費(fèi)者
• 處理多個(gè)元素
• 用表達(dá)式選擇節(jié)點(diǎn)
• 理解缺省的模板規(guī)則
• 確定輸出要包含的內(nèi)容
• 復(fù)制當(dāng)前節(jié)點(diǎn)
• 對節(jié)點(diǎn)進(jìn)行計(jì)數(shù)、對輸出元素分類以及插入CDATA 和<符號
• 設(shè)置模式特性
• 定義并創(chuàng)建命名模板
• 刪除和保留空格
• 基于輸入來改變輸出
• 合并多個(gè)樣式單
14.1 何為XSL?
變換和格式兩部分可相互獨(dú)立地起作用。例如,變換語言可將XML 文檔變換成結(jié)構(gòu)整潔的HTML 文件,并且完全忽略XSL 格
式化對象。Internet Explorer 5.0 支持這種XSL 樣式,這在第5 章已討論過,本章著重討論這種樣式。
此外,以XSL 格式化對象編寫的文檔,并非絕對要求在另一個(gè)XML 文檔上使用XSL 變換部分才能產(chǎn)生。例如,很容易想象到
這樣的一個(gè)轉(zhuǎn)換器:它是用Java 語言寫成的,可讀取TeX 或PDF 文件,并把這些文件翻譯成XSL 格式化對象(盡管直到1999
年夏天仍沒有這樣的一種轉(zhuǎn)換器存在)。
實(shí)際上,XSL 是兩種語言,而不是一種。第一種語言是變換語言,第二種是格式化語言。變換語言是一種很有用的語言,它
與格式化語言無關(guān)。它能夠把數(shù)據(jù)從一種XML 表示移到另一種表示,這種功能,使它成為基于XML 的電子商務(wù)、電子數(shù)據(jù)交
換、元數(shù)據(jù)交換以及應(yīng)用于需要在相同數(shù)據(jù)的不同XML 表示之間進(jìn)行轉(zhuǎn)換的重要組成部分。由于缺乏對人們要瀏覽的顯示器
上顯示數(shù)據(jù)的了解,這些用途還要結(jié)合起來使用。它們純粹是用來將數(shù)據(jù)從一種計(jì)算機(jī)系統(tǒng)或程序移到另一種計(jì)算機(jī)系統(tǒng)或
程序中。
因此,許多早期的XSL 實(shí)現(xiàn)都毫無例外地將焦點(diǎn)集中在變換部分,而忽略了格式化對象。這些是不完善的實(shí)施方案,但仍然
是很有用的。并非所有的數(shù)據(jù)最終都必須顯示在計(jì)算機(jī)顯示器上或打印到紙上。
第15 章“XSL 格式化對象”將涉及XSL 格式化語言。
XML 實(shí)用大全
第 446 頁
有關(guān)XSL 警告語
XSL 仍然處于開發(fā)中。XSL 語言在過去發(fā)生了根本性的變化,將來肯定會再發(fā)生變化。本章是根據(jù)1999 年4 月21 日的XSL
規(guī)范草案(第四稿)寫成的。讀者閱讀此書時(shí),此XSL 草案可能已經(jīng)被取代了,精確的XSL 句法將會變化。我希望本章與實(shí)
際的規(guī)范不會相差太大。但是,如果的確有不一致的地方,應(yīng)將本書中的例子與最新規(guī)范進(jìn)行對比。
糟糕的是,仍然沒有任何軟件能實(shí)現(xiàn)1999 年4 月21 日的XSL 規(guī)范草案(第四稿)的所有內(nèi)容,甚至不能實(shí)現(xiàn)XSL 變換的部
分,F(xiàn)有的所有產(chǎn)品只能實(shí)現(xiàn)當(dāng)前草案的不同子集。而且,許多產(chǎn)品(包括Internet Explorer 5.0 和XT)加入的元素并
沒有出現(xiàn)在當(dāng)前XSL 草案規(guī)范中。最后一點(diǎn)是,大多數(shù)至少要實(shí)現(xiàn)部分XSL 內(nèi)容的產(chǎn)品在其可實(shí)現(xiàn)的部分中也存在著很嚴(yán)重
的程序錯(cuò)誤(bug)。因此,在不同的軟件中,只有廖廖無幾的幾個(gè)例子能準(zhǔn)確地以相同的方式工作。
當(dāng)然,隨著此項(xiàng)標(biāo)準(zhǔn)向最后版本改進(jìn)時(shí),當(dāng)開發(fā)商解決了自己產(chǎn)品中的程序錯(cuò)誤并實(shí)現(xiàn)沒有被實(shí)現(xiàn)的內(nèi)容時(shí),以及當(dāng)出版的
更多軟件支持XSL 時(shí),最終這種情況是可以得到修正的。在達(dá)到此目的之前,還得面對這樣的選擇:要么忍痛使用目前不完
善的、未完成的XSL,并且試圖避開遇到的所有程序錯(cuò)誤和疏忽,要么使用更確定的技術(shù)(如CSS),直到XSL 更加可靠為
止。
XML 實(shí)用大全
第 447 頁
14.2 XSL 變換概述
在XSL 變換中,XSL 處理程序讀取XML 文檔和XSL 樣式單。基于處理程序在XSL 樣式單中找到的指令,輸出新的XML 文檔。
14.2.1 樹形結(jié)構(gòu)
就像第6 章學(xué)到的那樣,每個(gè)結(jié)構(gòu)整潔的XML 文檔都是樹形結(jié)構(gòu)(tree)。樹形結(jié)構(gòu)是一種數(shù)據(jù)結(jié)構(gòu),它是由連接起來的節(jié)
點(diǎn)(node)組成的,這些節(jié)點(diǎn)起始于一個(gè)稱為根節(jié)點(diǎn)(root)的單節(jié)點(diǎn)。根節(jié)點(diǎn)連接它的子節(jié)點(diǎn),每個(gè)子節(jié)點(diǎn)可以連接零個(gè)
或多個(gè)它自己的子節(jié)點(diǎn),依次類推。沒有自己的子節(jié)點(diǎn)的節(jié)點(diǎn)稱為葉節(jié)點(diǎn)(leave)。樹形結(jié)構(gòu)的圖表更像家譜,列出各個(gè)
先輩的后代。樹形結(jié)構(gòu)最有用的特征是每個(gè)節(jié)點(diǎn)及其子節(jié)點(diǎn)也會形成樹形結(jié)構(gòu)。因此,一個(gè)樹形結(jié)構(gòu)就是所有樹形結(jié)構(gòu)的分
級結(jié)構(gòu),在此分級結(jié)構(gòu)中,各樹形結(jié)構(gòu)都是由更小的樹形結(jié)構(gòu)建立的。
XML 樹形結(jié)構(gòu)的節(jié)點(diǎn)就是元素及元素的內(nèi)容。但是,對于XSL,特性、命名域(namespace)、處理指令以及注釋必須也作為
節(jié)點(diǎn)看待。而且文檔的根節(jié)點(diǎn)必須與根(基本)元素區(qū)別開來。因此,XSL 處理程序假定XML 樹形結(jié)構(gòu)包含下列七類節(jié)點(diǎn):
1.根節(jié)點(diǎn)
2.元素
3.文本
4.特性
5.命名域
6.處理指令
7.注釋
例如,對于清單14-1 中的XML 文檔,它顯示的是元素周期表,在本章我將用這個(gè)元素周期表作為例子(更恰當(dāng)?shù)卣f,是周
期表中的前兩個(gè)元素)。
完整的元素周期表放在本書所附光盤中的examples/periodic_table 文件夾中的allelements.xml 文件中。
根節(jié)點(diǎn)PERIODIC_TABLE 元素包含ATOM 子元素。每個(gè)ATOM 元素含有各種子元素,以便提供原子序數(shù)、原子量、符號、沸點(diǎn)
等等信息。UNITS 特性為具有單位的元素指定單位。
這里使用ELEMENT 比ATOM 或許更恰當(dāng)。但是,寫成ELEMENT 元素難以區(qū)分化學(xué)元素和XML 元素。因此,起碼出于
本章的考慮,ATOM 似乎更具可讀性。
清單14-1:氫和氦元素的XML 周期表
<?xml version=”1.0”?>
<?xml-stylesheet type=”text/xsl” href=”14-2.xsl”?>
XML 實(shí)用大全
第 448 頁
<PERIODIC TABLE>
<ATOM STATE=”GAS”>
<NAME>Hydrogen</NAME>
<SYMBOL>H</SYMBOL>
<ATOMIC_NUMBER>l</ATOMIC_NUMBER>
<ATOMIC_WLIGHT>1.00794</ATOMIC_WEIGHT>
<BOILING_POINT UNITS=”Kelvin”>20.28</BOILING_POINT>
<MELTING_POINT UNITS=”Kelvin”>13.81</MELTING_POINT>
<DENSITY UNITS=”grdMS/cubic centimeter”><!- At 300K ->
中國航空網(wǎng) www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實(shí)用大全(126)