xsd架构是否有xsd架构?

时间:2013-07-18 22:51:36

标签: xml xsd

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

注意:

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

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

2 个答案:

答案 0 :(得分:4)

确实,XSD语言有一个XML架构, 它从一开始就存在(如其URL所示):

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

这里是最新版本的XSD文件--W3C XML Schema Definition Language(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

答案 1 :(得分:4)

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

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

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

相关问题