新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> DTD, XML Schema(XMLS), RELAX NG
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - XML技术『 DTD/XML Schema 』 → 请问Schema中elementFormDefault="qualified"是起什么作用呀? 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 140511 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 请问Schema中elementFormDefault="qualified"是起什么作用呀? 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     sasami808 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:26
      积分:128
      门派:XML.ORG.CN
      注册:2005/12/8

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给sasami808发送一个短消息 把sasami808加入好友 查看sasami808的个人资料 搜索sasami808在『 DTD/XML Schema 』的所有贴子 引用回复这个贴子 回复这个贴子 查看sasami808的博客楼主
    发贴心情 请问Schema中elementFormDefault="qualified"是起什么作用呀?

    我看到有的xsd文件的开头是这样写的:
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://www.abc.com"
               xmlns:ps="http://www.abc.com"
               elementFormDefault="qualified">

    可是去掉elementFormDefault="qualified"好象也没什么影响呀?


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/12/20 9:40:00
     
     vampire_shirley 帅哥哟,离线,有人找我吗?
      
      
      等级:大二(研究C++)
      文章:41
      积分:233
      门派:W3CHINA.ORG
      注册:2005/12/5

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给vampire_shirley发送一个短消息 把vampire_shirley加入好友 查看vampire_shirley的个人资料 搜索vampire_shirley在『 DTD/XML Schema 』的所有贴子 引用回复这个贴子 回复这个贴子 查看vampire_shirley的博客2
    发贴心情 
    同问
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/12/20 16:19:00
     
     flashjean 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:4
      积分:108
      门派:XML.ORG.CN
      注册:2005/12/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给flashjean发送一个短消息 把flashjean加入好友 查看flashjean的个人资料 搜索flashjean在『 DTD/XML Schema 』的所有贴子 引用回复这个贴子 回复这个贴子 查看flashjean的博客3
    发贴心情 
    应该是对一些 格式的限制和规范。 qualified 表示需要限制
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/12/20 17:09:00
     
     98900969r 帅哥哟,离线,有人找我吗?
      
      
      威望:8
      等级:大四寒假(收到MIT的Offer啦)
      文章:235
      积分:1555
      门派:XML.ORG.CN
      注册:2005/11/2

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给98900969r发送一个短消息 把98900969r加入好友 查看98900969r的个人资料 搜索98900969r在『 DTD/XML Schema 』的所有贴子 引用回复这个贴子 回复这个贴子 查看98900969r的博客4
    发贴心情 
    一个 XML schema 中 elementFormDefault="?" 这一属性用来指示 XML Schema 处理程序把这个 XML schema 中定义的元素或者类型放到哪个命名空间。

    一个schema中声明的元素或者类型只能归到两个命名空间中的某一个去,这两个是,无名命名空间和由targetSchema属性指明的目标命名空间。而targetSchema属性只能在xs:schema的定义中声明,因而,一个schema中的定义的元素或类型只可能归属于一个有名命名空间(但是还有可能归属于无名命名空间)。

    当elementFormDefault="qualified" 时,所有全局元素的子元素将被以缺省方式放到目标命名空间,但是全局元素或者类型将被放到目标命名空间;而当elementFormDefault="unqualified" 时,所有全局元素的子元素将被以缺省方式放到无名命名空间。而属性的命名空间类似地由attributeFormDefault="?"来指明。

    需要明白的是,elementFormDefault="?" 是有作用域的,并且是被继承的,除非在子定义中覆盖父定义。

    下面三个例子说明了elementFormDefault的使用效果。红色表示属于已命名空间的元素,蓝色表示属于未命名空间的元素。

    1.定义了目标命名空间, 全局elementFormDefault=“unqualified”。这时除了全局元素或者类型将归于目标命名空间外,局部元素将归于无名命名空间。

    unqualified.xsd

    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="aaaa" elementFormDefault="unqualified" attributeFormDefault="unqualified">
     <xs:element name="c">
      <xs:complexType>
       <xs:sequence>
        <xs:element name="c1" type="xs:double"/>
        <xs:element name="c2" type="xs:string"/>
       </xs:sequence>
      </xs:complexType>
     </xs:element>
    </xs:schema>

    unqualified.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <n:c xmlns:n="aaaa" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="aaaa unqualified.xsd">
     <c1>3.141593E0</c1>
     <c2>String</c2>
    </n:c>

    2. 定义了目标命名空间, 全局elementFormDefault=“qualified”。这时全局元素或者类型将归于目标命名空间,局部元素将以缺省方式归于目标命名空间。

    qualified.xsd

    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="aaaa" elementFormDefault="qualified" attributeFormDefault="unqualified">
     <xs:element name="c">
      <xs:complexType>
       <xs:sequence>
        <xs:element name="c1" type="xs:double"/>
        <xs:element name="c2" type="xs:string"/>
       </xs:sequence>
      </xs:complexType>
     </xs:element>
    </xs:schema>

    qualified.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <c xmlns="aaaa" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="aaaa qualified.xsd">
     <c1>3.141593E0</c1>
     <c2>String</c2>
    </c>

    3. 定义了目标命名空间, 全局elementFormDefault=“unqualified”。这时全局元素(c)或者类型将归于目标命名空间。局部元素(c1,c2)以缺省方式归于无名命名空间。局部元素(c3)在局部定义中使用form=“qualified”覆盖全局设定的unqualified,这使得c3归于目标命名空间(如果它有子元素,子元素将以缺省方式归于目标命名空间)。

    qualified2.xsd

    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="aaaa" elementFormDefault="unqualified" attributeFormDefault="unqualified">
     <xs:element name="c">
      <xs:complexType>
       <xs:sequence>
        <xs:element name="c1" type="xs:double"/>
        <xs:element name="c2" type="xs:string"/>
        <xs:element name="c3" type="xs:integer" form="qualified"/>
       </xs:sequence>
      </xs:complexType>
     </xs:element>
    </xs:schema>


    qualified2.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <n:c xmlns:n="aaaa" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="aaaa qualified2.xsd">
     <c1>3.141593E0</c1>
     <c2>String</c2>
     <n:c3>0</n:c3>
    </n:c>

    [此贴子已经被作者于2005-12-21 0:57:51编辑过]
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/12/20 18:26:00
     
     flashjean 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:4
      积分:108
      门派:XML.ORG.CN
      注册:2005/12/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给flashjean发送一个短消息 把flashjean加入好友 查看flashjean的个人资料 搜索flashjean在『 DTD/XML Schema 』的所有贴子 引用回复这个贴子 回复这个贴子 查看flashjean的博客5
    发贴心情 
    麻烦解释一下 elementFormDefault="unqualified" 时候,全局元素(c)或者类型将归于目标命名空间。 问题是: 为什么就一定 <n:c  ,有n 作为前缀, 为什么是 n 不是别的字母?
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/12/21 10:05:00
     
     98900969r 帅哥哟,离线,有人找我吗?
      
      
      威望:8
      等级:大四寒假(收到MIT的Offer啦)
      文章:235
      积分:1555
      门派:XML.ORG.CN
      注册:2005/11/2

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给98900969r发送一个短消息 把98900969r加入好友 查看98900969r的个人资料 搜索98900969r在『 DTD/XML Schema 』的所有贴子 引用回复这个贴子 回复这个贴子 查看98900969r的博客6
    发贴心情 
    并不是非要是n,随便什么都行,一长串也行。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/12/21 13:06:00
     
     flyfoxs 帅哥哟,离线,有人找我吗?
      
      
      威望:5
      等级:研一(Artificial Intelligence期期不放过)
      文章:550
      积分:3935
      门派:XML.ORG.CN
      注册:2005/1/8

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给flyfoxs发送一个短消息 把flyfoxs加入好友 查看flyfoxs的个人资料 搜索flyfoxs在『 DTD/XML Schema 』的所有贴子 引用回复这个贴子 回复这个贴子 查看flyfoxs的博客7
    发贴心情 
    当elementFormDefault="qualified" 时,所有全局元素的子元素将被以缺省方式放到目标命名空间,但是全局元素或者类型将被放到目标命名空间


    这句话不通啊,但是没有转折关系,我怀疑"98900969r"是不是产生了笔误.


    第二个"目标命名空间"可能是"无名命名空间"

    [此贴子已经被作者于2005-12-25 20:30:34编辑过]

    ----------------------------------------------
    存在即是被搜索!

    BLOG =>  http://www.OpenJ.cn

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/12/25 19:57:00
     
     98900969r 帅哥哟,离线,有人找我吗?
      
      
      威望:8
      等级:大四寒假(收到MIT的Offer啦)
      文章:235
      积分:1555
      门派:XML.ORG.CN
      注册:2005/11/2

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给98900969r发送一个短消息 把98900969r加入好友 查看98900969r的个人资料 搜索98900969r在『 DTD/XML Schema 』的所有贴子 引用回复这个贴子 回复这个贴子 查看98900969r的博客8
    发贴心情 
    那句话是有问题,谢谢你指出来!我后来发现了想改,可是已经过了可编辑的时间了。那句话应该是:

    当elementFormDefault="qualified" 时,所有全局元素的子元素将被以缺省方式放到目标命名空间,连同全局元素或者类型一起;

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/12/26 0:49:00
     
     flyfoxs 帅哥哟,离线,有人找我吗?
      
      
      威望:5
      等级:研一(Artificial Intelligence期期不放过)
      文章:550
      积分:3935
      门派:XML.ORG.CN
      注册:2005/1/8

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给flyfoxs发送一个短消息 把flyfoxs加入好友 查看flyfoxs的个人资料 搜索flyfoxs在『 DTD/XML Schema 』的所有贴子 引用回复这个贴子 回复这个贴子 查看flyfoxs的博客9
    发贴心情 

    在你的例子中,第一个例子与第二个例子中被验证的文件好像是一样的!

    那么XSD在这里面有什么作用,只是验证的话,对应 的两个 XSD好像 不一样啊?


    看了下面这句话,好像有所体会:是不是如果当使用"elementFormDefault="qualified""时,schema会对XML文件的表意就有所变化了.

    当elementFormDefault="qualified" 时,所有全局元素的子元素将被以缺省方式放到目标命名空间,连同全局元素或者类型一起;


    [此贴子已经被作者于2005-12-31 19:09:48编辑过]

    ----------------------------------------------
    存在即是被搜索!

    BLOG =>  http://www.OpenJ.cn

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/12/31 18:33:00
     
     98900969r 帅哥哟,离线,有人找我吗?
      
      
      威望:8
      等级:大四寒假(收到MIT的Offer啦)
      文章:235
      积分:1555
      门派:XML.ORG.CN
      注册:2005/11/2

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给98900969r发送一个短消息 把98900969r加入好友 查看98900969r的个人资料 搜索98900969r在『 DTD/XML Schema 』的所有贴子 引用回复这个贴子 回复这个贴子 查看98900969r的博客10
    发贴心情 
    三个例子都不一样。就第一个和第二个而言,如果不顾及命名空间,它们真的一样,但是必须要考虑命名空间。第一个中,只有c归于命名空间“aaaa”,c1和c2属于无名命名空间。而第二个中,c,c1和c2全部属于命名空间“aaaa”。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/1/2 5:29:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 DTD/XML Schema 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/4/23 16:41:45

    本主题贴数49,分页: [1] [2] [3] [4]... [5]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    109.375ms