我目前正在使用 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?
谢谢