当前位置:  开发笔记 > 编程语言 > 正文

在XSD架构中实现外键类型关系

如何解决《在XSD架构中实现外键类型关系》经验,为你挑选了1个好方法。

我试图围绕xml架构,我想弄清楚的一件事是如何做关系类型架构,其中元素引用另一个,可能在另一个架构中.我看过xsd:key和xsd:keyref,它看起来像我感兴趣的东西,但我不确定.最初我只是设置类型为xs:ID abd xs:IDREF的属性,就我所知,这显然不一定是指特定元素.

基本上,我有几个不同的xml文件,其中元素引用同一文件或其他文件中的其他元素.它看起来很像一个关系数据库,我很乐意使用它,但要求只使用XML文件,所以我至少试图建立一些理智而不仅仅是看似随机的字符串依赖于xml注释来定义关系.它适用于较小的项目,但它肯定不具备可扩展性.

有什么想法吗?



1> Eddie..:

我不知道XML Schema中的任何内容可以让您相互验证多个XML文档.在xs:idxs:key(etc)约束中,使用xpath来应用约束.您可以转到XML Schema Part 1:Structures并向下滚动一点示例以查看这些约束的实际效果.

如果您能够定义包含其他文件的元XML文件(可能通过实体引用,如果没有其他方式),然后使用该元文件的模式,那么您应该能够使用XML模式来应用您的约束.如果为每种XML文件类型定义模式,则应该能够轻松地(通过xs:importxs:include)为XML文件定义元模式,该文件包含一个XML文件中的所有XML内容.此元架构可以成功应用您想要的约束.

假设您必须验证一个包含许多帖子的Wiki,其中每个帖子都有一个作者,也许还有很多评论,其中每个评论也有一个作者,并且您有一个XML文件用于所有帖子,一个用于所有评论,一个用于所有帖子作者,你想要验证这些文件之间的约束,每个帖子使用存在的作者和评论,每个评论使用存在的作者,等等.假设您有以下三个文件:

文件/home/username/posts.xml:



  
    
    
    
    I really like my camera...
  
   ...

文件/home/username/comments.xml:



  
    That was a very good post
  
   ...

文件/home/username/authors.xml:



  
  
   ...

我建议您使用实体引用制作元XML文件.例如,您可以创建以下XML文件:






  &postfile1;
  &commentfile;
  &authorfile;

这个元XML文件(实际上,一个普通的旧XML文件......"元"只是从你定义的三个XML文件的角度来看,而不是任何XML意义上的)与下面的文件和XML完全等效.解析器将表现得就像您真正拥有以下文件一样:



  
    
      
      
      
      I really like my camera...
    
     ...
  
  
    
      That was a very good post
    
     ...
  
  
    
    
     ...
  

文件中,您可以定义将应用所需约束的XML架构,即使单个文件无法应用约束也是如此.由于使用XML实体表示法已将所有XML"包含"到一个文件中,因此可以在约束引用中使用xpath.

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有