资讯专栏INFORMATION COLUMN

Schema中命名空间对一致性约束的影响

joyqi / 2867人阅读

摘要:中命名空间对一致性约束的影响中有种一致性约束约束约束和约束,这种约束对命名空间的支持有点小问题,假设有如下上面的是在元素根元素之内定义了唯一约束,定义之下的元素的值必须遵守唯一约束。

Schema中命名空间对一致性约束的影响
Schema中有3种一致性约束:key约束、keyref约束和unique约束,这3种约束对命名空间的支持有点小问题,假设有如下Schema:



  
  
     
      
        
          
          
        
      
        
  
  
  
    
  
    
      
        
          
            
                  
        
      
      
    
          
               
    
  
  


上面的Schema是在元素(根元素)之内定义了唯一约束,定义test/item之下的元素的值必须遵守唯一约束。对于如下XML文档:



  
  
    1
    dell  
    
  
  
    1
    sony  
  
  


上面的XML文档中两个元素里的子元素的值完全相同,这显然不符合唯一约束的要求,但这份XML文档依然是有效的。这是为什么呢?

发生这个问题是因为一致性约束对命名空间的支持有点小问题,上面的key.xsd定义一致性约束时在①、②号代码处直接使用了item、id两个元素,而没有任何前缀。本质上它们依然处于http://www.xml.org/schema命名...,只是由于指定了xmlns="http://www.xml.org/schema",因此在key.xsd中使用时无须添加限定短名作为前缀。但一致性约束不这么处理,它的处理规律是:只要该元素没有添加任何限定短名,它就认为该元素不处在任何命名空间下。也就是说,它约束的并不是http://www.xml.org/schema命名...,而是对不在任何命名空间下的id进行约束,因此上面的key.xml文档自然也就有效了。

为了解决这个问题,当需要在Schema中对指定命名空间下的元素添加一致性约束时,必须为其添加限定短名作为前缀。可以把key.xsd该为如下形式:




  
  
     
      
        
          
          
        
      
        
  
  
  
    
  
    
      
        
          
            
                  
        
      
      
    
          
               
    
  
  



上面的updated_key.xsd中为item、id元素定义约束时指定了sos前缀,于是一致性约束就会根据该前缀找到对应的命名空间,完成对http://www.xml.org/schema命名...。如果上面的key.xml改为使用updated_key.xsd这份Schema作为语义约束,那它就违反了唯一约束,自然也就是无效文档了。

总结:
当需要在Schema中对指定命名空间下的元素(或属性)添加像key、keyref或unique约束时,必须为其添加限定短名作为前缀,否则一致性约束会认为只是对无命名空间的元素(或属性)添加约束。

参考:
疯狂XML讲义
XML高级编程

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/110390.html

相关文章

  • 搞定PHP面试 - MySQL基础知识点整理 - 存储引擎

    摘要:支持崩溃后的安全恢复。的使用场景更新密集的表存储引擎特别适合处理多重并发的更新请求。外键约束支持外键的存储引擎只有。引擎是及之前版本的默认存储引擎。文件存储表的索引。引擎存储引擎是引擎的变种。 MySQL基础知识点整理 - 存储引擎 0. 查看 MySQL 支持的存储引擎 可以在 mysql 客户端中,使用 show engines; 命令可以查看MySQL支持的引擎: mysql> ...

    whatsns 评论0 收藏0
  • 齿轮数据接口标准及应用前景

    摘要:德国公司已经将标准以及附加程序应用在其在全球工厂之间的数据交互以及在刀具采购,机床使用等方面与合作伙伴之间的信息交换,提高了企业生产效率,节省了生产成本。可扩展齿轮描述语言齿轮数据接口标准主要由可扩展齿轮描述语言及数据转换接口组成。 为解决齿轮设计、制造、测量和在役等各个阶段的数据种类和格式繁杂,数据交互困难且缺少相应自动化系统的问题,提出了基于XML语言的可扩展齿轮描述语言(eXte...

    dreambei 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<