网友俱乐部 » » XML教程 » 3.3.3.1 命名空间作用于元素

2007-2-25 17:38 hinet
3.3.3.1 命名空间作用于元素

3.3.3.1 命名空间作用于元素
   

有了命名空间的声明,又有了命名空间下的合法名称,下面我们就可以在元素标记和属性中享受命名空间带来的一系列便利了。我们先来说说元素标记中对于命名空间的使用。
合法名称可以用于起始元素标记、结束元素标记和空元素标记。合法名称中的前缀部分必须是一个已经声明过的命名空间前缀,声明的位置,既可以在使用该前缀的起始元素的标记处,也可以是引用处的父辈元素标记处。命名空间声明是作用到说明它的元素和该元素的所有子元素的,除非被其它命名空间声明所覆盖。例如:
<联系人:联系人列表 xmlns:联系人 ="联系人列表.dtd">
  <联系人:联系人>
    <联系人:姓名>张三
    <联系人:ID>001
    <联系人:公司>A公司
    <联系人:EMAIL>[email]zhang@aaa.com[/email]
    <联系人:电话>(010)62345678
    <联系人:地址>
      <联系人:街道>五街1234号
      <联系人:城市>北京市
      <联系人:省份>北京
   
    <联系人:直接上级 xmlns:企业经理 ="企业经理.dtd">
      <企业经理:姓名>王五
      <企业经理:电话>
        <企业经理:秘书电话>(010)62345678
        <企业经理:手机>13601234567
      
   
  

这个例子的表达效果和3.3.2.1节中的例子是相同的,命名空间"联系人列表.dtd"的作用域,在除"直接上级"元素范围以外的任何地方;而命名空间"企业经理.dtd"的作用域在"直接上级"的各个子元素中。
同样,缺省的命名空间是作用到声明它的元素和该元素的子元素的。当然,这里所说的元素都是那些没有命名空间前缀的元素,有了前缀的元素仍然遵照前缀所指示的命名空间。
在下面例子中,同时含有一个缺省的和一个非缺省的命名空间,它的表达效果和上面的例子是相同的。
<联系人列表 xmlns="联系人列表.dtd" xmlns:企业经理 ="企业经理.dtd">
  <联系人>
    <姓名>张三
    001
    <公司>A公司
    [email]zhang@aaa.com[/email]
    <电话>(010)62345678
    <地址>
      <街道>五街1234号
      <城市>北京市
      <省份>北京
   
    <直接上级>
      <企业经理:姓名>王五
      <企业经理:电话>
        <企业经理:秘书电话>(010)62345678
        <企业经理:手机>13601234567
      
   
  

需要注意的是,在一个缺省的命名空间声明中,URI引用可以是空,这在直接方式的命名空间声明中是不允许的。当URI引用为空串时,在声明作用域范围内没有前缀的元素,被认为是不在任何命名空间作用域范围内的。下面是一个合法的XML文件,"直接上级"元素的两个子元素不属于任何命名空间,因此,它们也不属于联系人列表所规定的命名空间,和前面的“姓名”和“电话”不是一回事。
<联系人列表 xmlns="联系人列表.dtd">
  <联系人>
    <姓名>张三
    001
    <公司>A公司
    [email]zhang@aaa.com[/email]
    <电话>(010)62345678
    <地址>
      <街道>五街1234号
      <城市>北京市
      <省份>北京
   
    <直接上级>
      <姓名 xmlns = "">王五
      <电话 xmlns = "">
        <秘书电话 xmlns = "">(010)62345678
        <手机 xmlns = "">13601234567

页: [1]


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.