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

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 140965 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 请问Schema中elementFormDefault="qualified"是起什么作用呀? 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     flyfoxs 帅哥哟,离线,有人找我吗?
      
      
      威望:5
      等级:研一(Artificial Intelligence期期不放过)
      文章:550
      积分:3935
      门派:XML.ORG.CN
      注册:2005/1/8

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

    跨越了几个月,终于明白了这个帖子所说的语法。

    可是不明白,这样制定的语法,有什么作用?

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

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

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

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给98900969r发送一个短消息 把98900969r加入好友 查看98900969r的个人资料 搜索98900969r在『 DTD/XML Schema 』的所有贴子 引用回复这个贴子 回复这个贴子 查看98900969r的博客32
    发贴心情 
    Henry S. Thompson(XML Schema 的编委之一,供职于爱丁堡大学教授)在这里 http://lists.xml.org/archives/xml-dev/200007/msg00064.html 回答了对于 elementFormDefault 的作用质疑。依我的理解,可以简单认为 elementFormDefault 的存在是为了方便,并不是必需。

    此外,XML Schema的复杂性引起了很多争议。其中一部分的复杂性就来自这些可有可无的东西,它们带来方便,也带来麻烦。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/6/9 16:37:00
     
     wyguanshui 帅哥哟,离线,有人找我吗?魔羯座1982-12-31
      
      
      等级:大一新生
      文章:4
      积分:72
      门派:W3CHINA.ORG
      注册:2006/6/15

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

    ----------------------------------------------
    学的越多,知道的越多。知道的越多,忘记的越多。忘记的越多,知道的越少。为什么学来着?

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/6/15 12:33:00
     
     chnking 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:0
      积分:74
      门派:XML.ORG.CN
      注册:2006/7/12

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给chnking发送一个短消息 把chnking加入好友 查看chnking的个人资料 搜索chnking在『 DTD/XML Schema 』的所有贴子 引用回复这个贴子 回复这个贴子 查看chnking的博客34
    发贴心情 
    看了几遍帖子,感觉说得都有些问题,下面是我的理解

    先看MSDN中elementFormDefault 属性的解释:
    在该架构的目标命名空间中声明的元素的形式。该值必须是下列字符串之一:qualified 或 unqualified。默认值为 unqualified。
    如果该值是 unqualified,则无须通过命名空间前缀限定目标命名空间的元素。
    如果该值是 qualified,则必须通过命名空间前缀限定目标命名空间的元素。

    MSDN的描述不完整,完整的应该是:
    如果该值是 unqualified,根元素必须有命名空间的的限定,这个命名空间必须是schema中定义的targetNameSpace,但是其下子元素无须也不允许用命名空间前缀限定目标命名空间。 子元素的命名空间为空命名空间。
    如果该值是 qualified,根元素及其下所有子元素都必须通过命名空间前缀限定目标命名空间。这个命名空间必须是schema中定义的targetNameSpace。

    再看xml实例中根元素和子元素的命名空间的设置:
    1. 通过prefix定义命名空间
    在根元素的属性中使用 xmlns:xxx = url 的语法来定义一个名称空间的前缀xxx,然后在需要用这个名称空间限定的元素前面加上前缀和冒号,例如:
    <?xml version="1.0" encoding="UTF-8"?>
    <n:c xmlns:n="aaaa">
    <n:c1>3.141593E0 </n:c1>
    <n:c2>String</n:c2>
    <c3>0</c3>
    </n:c>
    这个xml实例中定义了一个叫“aaaa”的前缀,在元素名称前面加了”n:”的元素都会拥有”aaaa”的命名空间,没有加前缀的元素(c3)将没有命名空间的限定,它的命名空间属性为””。
    2. 通过默认命名空间定义全部元素的命名空间
    根元素的单独的xmlns 属性定义一个xml实例的默认命名空间,其下的元素除了另外设置了前缀,都将被默认命名空间限定。例如:
    <?xml version="1.0" encoding="UTF-8"?>
    <c xmlns ="aaaa">
    <c1>3.141593E0 </c1>
    <c2>String</ c2>
    <c3>0</c3>
    </n:c>
    这个xml实例中所有元素(c,c1,c2,c3)的命名空间都是“aaaa”

    总结:
    elementFormDefault 属性只是用来设置xml的实例中子元素是否一定需要有命名空间限定,不控制xml实例中各元素归属哪个命名空间。xml实例中元素的命名空间由xml实例本身的设置决定。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/7/12 14:25:00
     
     gyz5656 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:0
      积分:57
      门派:XML.ORG.CN
      注册:2006/9/3

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给gyz5656发送一个短消息 把gyz5656加入好友 查看gyz5656的个人资料 搜索gyz5656在『 DTD/XML Schema 』的所有贴子 引用回复这个贴子 回复这个贴子 查看gyz5656的博客35
    发贴心情 
    麻烦问一下,schema 在开发中的作用是什么?我从数据库中倒出的数据如何进行验证呢?
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/9/6 19:14:00
     
     iamlinzi 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:3
      积分:66
      门派:XML.ORG.CN
      注册:2006/9/8

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给iamlinzi发送一个短消息 把iamlinzi加入好友 查看iamlinzi的个人资料 搜索iamlinzi在『 DTD/XML Schema 』的所有贴子 引用回复这个贴子 回复这个贴子 查看iamlinzi的博客36
    发贴心情 
    看了98900969r的解释,感觉和我理解的有所不同。
    为此我特意看了http://www.w3.org/TR/xmlschema-0/上的文章,这是schema的官方规范。
    首先,targetNamespace属性规定了本schema词汇表的名字空间。
    第二,无论是全局element/attribute,还是本地的,都属于这个名字空间。
    第三,elementFormDefault/attributeFormDefault都只影响schema instance document中本地
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/9/11 16:53:00
     
     iamlinzi 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:3
      积分:66
      门派:XML.ORG.CN
      注册:2006/9/8

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给iamlinzi发送一个短消息 把iamlinzi加入好友 查看iamlinzi的个人资料 搜索iamlinzi在『 DTD/XML Schema 』的所有贴子 引用回复这个贴子 回复这个贴子 查看iamlinzi的博客37
    发贴心情 
    看了98900969r的解释,感觉和我理解的有所不同。
    为此我特意看了http://www.w3.org/TR/xmlschema-0/上的文章,这是schema的官方规范。
    首先,targetNamespace属性规定了本schema词汇表的名字空间。
    第二,无论是全局element/attribute,还是本地的,都属于这个名字空间。
    第三,elementFormDefault/attributeFormDefault都只影响schema instance document中本地
             element/attribute是否使用前缀,没有其他作用。
    第四,98900969r的未命名空间,我的理解应该是没有名字空间。按照官方说明,在schema没有指定targetNamespace、并且instance document没有引入名字空间时,此时element/attribute都没有名字空间。

    在此,我有点想法,有些东西单纯靠尝试是不行的,应该从本质上理解这些概念。最好的办法就是看官方的文档。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/9/11 17:01:00
     
     yjclose2006 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:0
      积分:54
      门派:XML.ORG.CN
      注册:2006/9/28

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给yjclose2006发送一个短消息 把yjclose2006加入好友 查看yjclose2006的个人资料 搜索yjclose2006在『 DTD/XML Schema 』的所有贴子 引用回复这个贴子 回复这个贴子 查看yjclose2006的博客38
    发贴心情 
    98900969r的解释我完全看懂了,而且分析也颇有道理,但在具体应用中我不能理解按照98900969r的解释有什么作用。但是看了iamlinzi的解释,据说来自官方网站的解释,我相信iamlinzi的英文阅读能力,似乎这种解释对于elementFormDefault在schema的应用更加明确,让我想起了一些开发语言中对变量是否强行定制的设置。但如果是iamlinzi的解释是正确的话,那么98900969r的示例中当elementFormDefault=qulified的时候,如果舍掉了前缀势必没法通过spy2006的验证。如此又则怎么解答呢?
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/9/28 16:30:00
     
     gogy 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(数据结构考了98分!)
      文章:66
      积分:493
      门派:XML.ORG.CN
      注册:2006/10/20

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给gogy发送一个短消息 把gogy加入好友 查看gogy的个人资料 搜索gogy在『 DTD/XML Schema 』的所有贴子 引用回复这个贴子 回复这个贴子 查看gogy的博客39
    发贴心情 
    我的看法是:98900969r是按照书上的说法来的,但并未说到点子上,究竟这样限制来限制去的,是为了干什么,有什么用?我认同chnking 的说法,名称空间只是用来区分相同名称元素的,”无论是全局element/attribute,还是本地的,都属于这个名字空间“。
    例如:qualified时,
    <?xml version="1.0" encoding="UTF-8"?>
    <n:c xmlns ="aaaa">
    <c1>3.141593E0 </c1>
    <c2>String</ c2>
    <c3>0</c3>
    </n:c>
    说C1,C2,C3属于未命名名称空间有什么意义啊,我们的目的是验证这三个元素有没有效,不是还得按照unqualified.xsd来验证啊。
    所以我觉得,elementFormDefault不过是用来决定,要不要加前缀的。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/10/26 17:49:00
     
     chyzw 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:16
      积分:115
      门派:XML.ORG.CN
      注册:2006/11/4

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给chyzw发送一个短消息 把chyzw加入好友 查看chyzw的个人资料 搜索chyzw在『 DTD/XML Schema 』的所有贴子 引用回复这个贴子 回复这个贴子 查看chyzw的博客40
    发贴心情 
    太好 了。。我正在想这个呢。。Thank you!
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/11/5 0:03:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 DTD/XML Schema 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/10 14:45:39

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

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