2013-07-18 89 views
4

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

注:

  1. 维基百科显示XSD模式语言“不是100%的自我描述”,因为“内容和属性声明不能依靠属性或元素上下文”。如果是这样,你能否提供一个需要这种上下文并因此不能表示的xsd特性的例子?

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

+0

@John我认为这可能是,虽然我以前看过那个,但没有意识到相似性。 – jcrudy

回答

3

事实上,对于XSD语言XML架构, 它从一开始(因为它的URL建议)存在:

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

,这里是其最XSD文件最新版本 - W3C XML模式定义语言(XSD)1.1:

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

事实上,茨艾伦e XSD文件(至少第一个)现在被各种使用XML模式的软件大量使用。否则,我认为,以XML格式表示XML模式语言并且不具有它的XSD描述是完全荒谬的!


对于这个问题,甚至有(以XML技术非常重要)名为XSLT 的基于XML的编程语言,而且,你猜,有它的XML模式太:

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

+0

只是指出这个“架构模式”也出现在xml架构规范本身的附录A中:http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/structures.html# normative-schemaSchema但是它不能捕获XSD的所有约束(即,相对于这个“架构模式”的有效性不能保证正确性)。 – 13ren

4

XSD是“不是100%自描述”的维基百科声明是正确的,因为并不是每个符合schema-for-schema-documents(S4SD)的文档都能够生成有效的模式。其中一个原因是存在无法在XSD中表达的约束(例如,xpath属性的内容应该是语法有效的XPath表达式);另一个原因是XSD只能在单个文档上表达约束,而为了使模式有效,存在适用于文档的一致性约束。

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

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