xsd架构是否有xsd架构?

jcr*_*udy 6 xml xsd

我经常在工作中使用xsd模式文件,我想知道:是否可以为xsd模式语言编写xsd模式文件?这似乎是一种记录模式语言的明显方式,我认为这将是开发人员尝试的第一件事.但是,我一直无法找到具有明显搜索条件的文件.如果不可能,为什么不呢?如果有可能,有没有人做过,有一个地方我可以下载这样的文件?

笔记:

  1. 维基百科建议xsd模式语言"不是100%自我描述",因为"内容和属性声明不能依赖于属性或元素上下文".如果是这样,你能提供一个xsd特征的例子,它需要这样的上下文,因此无法表示吗?

  2. 这个问题不仅仅是学术性的.我可能需要在不久的将来编写一个处理xsd模式文件的程序,并且从xsd(使用诸如generateDS之类的工具)生成源代码将是一个容易的起点.

Col*_*ion 5

实际上,从一开始就存在XSD语言的XML模式(如其URL所示):

http://www.w3.org/2001/XMLSchema.xsd

这是最新版本的XSD文件-W3C XML架构定义语言(XSD)1.1:

http://www.w3.org/2012/04/XMLSchema.xsd

实际上,这些XSD文件(至少是第一个文件)现在被使用XML模式的各种软件大量使用。否则,我认为以XML形式表示XML模式语言而没有XSD描述是完全荒谬的!


为此,甚至还有一种称为XSLT的基于XML的编程语言 (在XML技术中非常重要),并且您猜想它也有一种XML模式:

http://www.w3.org/2007/schema-for-xslt20.xsd


Mic*_*Kay 5

Wikipedia声明XSD是“不是100%自我描述”的意思是正确的,因为并非每个符合模式架构文档(S4SD)的文档都能够生成有效的模式。原因之一是存在无法在XSD中表达的约束(例如,xpath属性的内容应为语法有效的XPath表达式);另一个是XSD只能在单个文档上表达约束,而为了使模式有效,存在适用于整个文档的一致性约束。

如果S4SD充分利用了XSD 1.1的功能,那么将有可能更接近100%覆盖所有“ XML表示”规则;我希望尝试此操作,但从未成功。仍然会有一些差距。

您编写处理架构文档的软件的计划是您应该仔细考虑的。从原始模式文档中提取信息并不容易,因为模式作者可以表达相同内容的方式有很多。替代方法是使用提供对架构处理器从原始输入文档中创建的“架构组件”(例如元素声明和类型定义)的访问的API。一些模式处理器提供了这样的API。Saxon-EE以称为SCM的XML表示形式提供架构组件,比原始XSD文档更易于处理。