曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
<!ELEMENT DIVISION (DIVISION_NAME, TEAM+)>
如果元素都是以bb 作命名域前綴,就得按下面的方式重新編寫:
<!ELEMENT bb:DIVISION (bb:DIVISION_NAME, bb:TEAM+)>
這意味著,不能將相同的DTD 用于帶有和不帶有命名域的文檔,即使這兩類文檔本來就使用相同的符號集也是如此。事實上,
由于DTD 受真正的前綴而不是命名域的URI 的約束,所以甚至不能將同一個DTD 用于使用相同的標記集和命名域、但前綴不
同的文檔中。
18.2.2 多個命名域
清單14-2 并不真正將HTML 元素放在命名域中,但要做到這一點則并不困難。清單18-1 演示這種用法。正像xsl 是XSL 轉
換指令的慣用前綴一樣,html 也是HTML 元素的慣用前綴。在下面的實例中,xsl:stylesheet 元素聲明兩個不同的命名域:
一個用于XSL,另一個用于HTML。
清單18-1:使用http://www.w3.org/TR/REC-html40 作為命名域用于輸出的XSL 樣式單
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/XSL/Transform/1.0"
xmlns:html="http://www.w3.org/TR/REC-html40">
<xsl:template match="PERIODIC_TABLE">
<html:html>
<xsl:apply-templates/>
XML 實用大全
第 622 頁
</html:html>
</xsl:template>
<xsl:template match="ATOM">
<html:p>
<xsl:apply-templates/>
</html:p>
</xsl:template>
</xsl:stylesheet>
雖然將xmlns 特性放在根元素上已成為習慣,并且總的來說是很有用的,但也可以出現在其他元素上。在此情況下,命名域
前綴只能在聲明它的元素內才有效。考慮一下清單18-2。html 前綴只在聲明它的xsl:template 元素中才合法。不能將其施
加于其他的模板規則,除非這些模板規則分別聲明html 命名域。
清單18-2:在模板規則中聲明的帶有http://www.w3.org/TR/REC-html40 命名域的XSL 樣式單
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="httP://www.w3.org/XSL/Transform/1.0">
<xsl:template match="PERIODIC-TABLE"
xmlns:html="http://www.w3.org/TR/REC-html40">
<html:html>
<xsl:apply-templates/>
</html:html>
</xsl:template>
<xsl:template match="ATOM">
<P>
<xsl:apply-templates/>
</P>
XML 實用大全
第 623 頁
</xsl:template>
</xsl:stylesheet>
可以在子元素中重新定義命名域。例如,清單18-3 中的XSL 樣式單。此處的xsl 前綴出現在不同的元素中,以交替引用
http://www.w3.org/XSL/Transform/1.0 和http://www.w3.org/XSL/Format/1.0。盡管每個元素都有前綴xsl,但由于xsl
前綴的含義隨元素而變,所以XSL 轉換指令和XSL 格式化對象仍處于不同的命令位中。
清單18-3:重新定義xsl 前綴
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/XSL/Transform/1.0">
<xsl:template match="/">
<xsl:root xmlns:xsl="http://www.w3.org/XSL/Format/1.0">
<xsl:layout-master-set>
<xsl:simple-page-master page-master-name="only">
<xsl:region-body/>
</xsl:simple-page-master>
</xsl:layout-master-set>
<xsl:page-sequence>
<xsl:sequence-specification>
<xsl:sequence-specifier-single page-master-name="only"/>
</xsl:sequence-specification>
<xsl:flow>
<xsl:apply-templates select="//ATOM"/
xmlns:xsl="http://www.w3.org/XSL/Transform/1.0"/>
</xsl:flow>
</xsl:page-sequence>
XML 實用大全
第 624 頁
</xsl:root>
</xsl:template>
<xsl:template match="ATOM">
<xsl:block font-size="20pt" font-family="serif"
xmlns:xsl="http://www.w3.org/XSL/Format/1.0">
<xsl:value-of select="NAME"
xmlns:xsl="http://www.w3.org/XSL/Transform/1.0"/>
</xsl:block>
</xsl:template>
</xsl:stylesheet>
但這樣做會產生不必要的混亂,我強烈建議讀者避免這樣做。可供使用的前綴還有很多,幾乎不需要在同一個文檔中重復使
用。不重復使用前綴的主要價值還在于,來自于不同作者的兩個不同的文檔碰巧重復使用類似的前綴,此時這兩個文檔就會
組合在一起。這一點也是避免使用像a、m 和x 這樣的短前綴的很好的理由,這些短前綴很可能重新用于不同的目的。
18.2.3 特性
由于特性屬于特定元素,所以不使用命名域也可很容易地從類似的命名特性中確定出來。因此,像加到元素中那樣,將命名
域加到特性中幾乎是沒有必要的。例如,1999 年4 月21 日的XSL 規范工作草案要求所有的XSL 轉換元素都要加入
http://www.w3.org/XSL/Transform/1.0 命名域,但是它不要求這些元素的特性也在任何特定命名域中(事實上,它要求元
素的特性都不在任何命名域中)。但是,如果需要,可以將命名域前綴加入特性中。例如,下面的PLAYER 元素和它所有的
特性都處在http://metalab.unc.edu/xml/baseball 命名域中。
<bb:PLAYER xmlns:bb=”http://metalab.unc.edu/xml/baseball”
bb:GIVEN_NAME=”Tom” bb:SURNAME=”Glavine”
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實用大全(176)