我目前正在使用C#创建和验证XBRL实例文档,我遇到了一些关于XBRL实例模式文件的问题:

http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd

根据.NET架构验证程序,架构无效 . 它抛出以下异常:

System.Xml.Schema.XmlSchemaException: If ref is present, all of <complexType>, <simpleType>, <key>, <keyref>, <unique>, nillable, default, fixed, form, block, and type must be absent.

当我尝试使用XML架构定义工具(Xsd.exe)生成架构的类表示时,我得到了相同的异常 .

这让我感到惊讶,因为XBRL在很多应用程序中使用,我在网上找不到很多关于此的信息 . 这里的一个相当古老的讨论表明它取决于用于验证的工具:

http://www.xml.com/cs/user/view/cs_msg/1849

这似乎是对的,因为其他模式验证器不会抱怨 . XMLSpy,XML Copy Editor以及w3自己的验证器

http://www.w3.org/2001/03/webdata/xsv#hlp-addr

验证架构没有任何问题,因为XMLFox报告与.NET相同的问题 .

所以我的问题是:

  • XBRL实例架构是否有效?我怀疑架构规范 . 可能不清楚,因此不同工具的作者对它的解释不同 .

  • 如果我想在.NET中使用模式,我该怎么办?您作为程序员可以以任何方式更改验证引擎规则吗?除了System.XML.Schema中的验证机制之外还有其他可能性吗?也许第三方工具作为Java世界中的Xerces?

谢谢