• 热门标签

当前位置: 主页 > 航空资料 > 计算机 >

时间:2010-08-09 13:24来源:蓝天飞行翻译 作者:admin
曝光台 注意防骗 网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者

<!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.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML实用大全(176)