新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   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"是起什么作用呀? 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 140662 个阅读者浏览上一篇主题  刷新本主题   平板显示贴子 浏览下一篇主题
     * 贴子主题: 请问Schema中elementFormDefault="qualified"是起什么作用呀? 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     98900969r 帅哥哟,离线,有人找我吗?
      
      
      威望:8
      等级:大四寒假(收到MIT的Offer啦)
      文章:235
      积分:1555
      门派:XML.ORG.CN
      注册:2005/11/2

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

    一个 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
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 DTD/XML Schema 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/4/29 17:15:57

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

     *树形目录 (最近20个回帖) 顶端 
    主题:  请问Schema中elementFormDefault="qualified"..(311字) - sasami808,2005年12月20日
        回复:  3Q(2字) - 1500053,2008年5月10日
        回复:  学习了 谢啦`~~~(20字) - insky,2007年7月11日
        回复:  up up up(8字) - edisonviva2006,2007年5月24日
        回复:  当然属于dddd,但是,这样能验证吗?(34字) - gogy,2007年5月12日
        回复:  以下XML文档中c c1 c2 c3是属于哪个命名空间?到底是aaaa还是dddd?<?xml ..(733字) - lao_cai,2007年5月11日
            回复:  我刚开始 学习 XML 晕了 ,,,,,,,,,,,,,,,,,,,..(45字) - iaiyanghua1,2008年4月11日
        回复:  schemaLocation那这个的作用呢怎么还要加xsi,以及前边还要定义一个命名空间呢..(72字) - ljx004201,2007年4月13日
        回复:  ding(4字) - zhy_justin,2007年3月16日
        回复:  作个记号,回去好好想想(21字) - snowbeer,2006年12月10日
        回复:  太好 了。。我正在想这个呢。。Thank you!(39字) - chyzw,2006年11月5日
        回复:  我的看法是:98900969r是按照书上的说法来的,但并未说到点子上,究竟这样限制来限制去的,是为..(560字) - gogy,2006年10月26日
        回复:  98900969r的解释我完全看懂了,而且分析也颇有道理,但在具体应用中我不能理解按照989009..(446字) - yjclose2006,2006年9月28日
        回复:  看了98900969r的解释,感觉和我理解的有所不同。为此我特意看了http://www.w3...(683字) - iamlinzi,2006年9月11日
        回复:  看了98900969r的解释,感觉和我理解的有所不同。为此我特意看了http://www.w3...(339字) - iamlinzi,2006年9月11日
        回复:  麻烦问一下,schema 在开发中的作用是什么?我从数据库中倒出的数据如何进行验证呢?..(76字) - gyz5656,2006年9月6日
        回复:  看了几遍帖子,感觉说得都有些问题,下面是我的理解先看MSDN中elementFormDefau..(1752字) - chnking,2006年7月12日
        回复:  (2字) - wyguanshui,2006年6月15日
        回复:  Henry S. Thompson(XML Schema 的编委之一,供职于爱丁堡大学教授)在这里..(364字) - 98900969r,2006年6月9日
        回复:  跨越了几个月,终于明白了这个帖子所说的语法。可是不明白,这样制定的语法,有什么作用?..(88字) - flyfoxs,2006年6月9日

    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    85.938ms