我有一个生成的XDocument,需要对Xbrl xsd's进行验证。我已经创建了一个自定义XmlResolver来加载来自外部方的所有xsd文件。
这是我的解析器中的GetEntity函数,因此我可以获得包含的xsd's
Public Overrides Function GetEntity(absoluteUri As Uri, role As String, ofObjectToReturn As Type) As Object
'If absoluteUri.ToString.Contains("www.xbrl.org") Then
' Nothing here yet
'End If
Dim nmSpace As String = _assembly.GetName.Name.ToString
Dim resource = String.Concat(nmSpace, ".", Path.GetFileName(absoluteUri.ToString()))
Dim result = _assembly.GetManifestResourceStream(resource)
Return result
End Function但是,有许多来自xbrl名称空间的xsd,它们不会被加载。
我开始下载它们,以便将它们作为资源包含在内,但文件太多,所以这似乎不是最好的解决方案。
我希望任何人都有一些验证Xbrl文件的经验,因为我觉得我错过了这里的要点:)
发布于 2013-07-31 22:25:14
www.Arelle.org
此开源项目包含可用于验证Xbrl文件的web服务。这就是我现在实现的东西,它会检查所有需要的Xbrl规则
发布于 2013-03-28 20:32:40
我使用的是普通的Xml-Xsd验证,到目前为止这似乎还可以。
我像这样实现了自定义解析器:
Public Class ResourceXmlResolver
Inherits XmlResolver
Private Shared _xmlUrlResolver As XmlUrlResolver = New XmlUrlResolver()
Private _assembly As Assembly
Public Sub New(assembly As Assembly)
_assembly = assembly
End Sub
Public Overrides Function GetEntity(absoluteUri As Uri, role As String, ofObjectToReturn As Type) As Object
If absoluteUri.ToString.Contains("www.xbrl.org") Then
Return _xmlUrlResolver.GetEntity(absoluteUri, role, ofObjectToReturn)
End If
Dim nmSpace As String = _assembly.GetName.Name.ToString
Dim resource = String.Concat(nmSpace, ".", Path.GetFileName(absoluteUri.ToString()))
Dim result = _assembly.GetManifestResourceStream(resource)
Return result
End Function
Public Overrides WriteOnly Property Credentials() As System.Net.ICredentials
Set(value As System.Net.ICredentials)
Throw New NotImplementedException()
End Set
End Property结束类
第三方提供的Xsd文件是嵌入式资源。
我将程序集设置为包含我的Xsd文件的程序集,因此当通过设置解析器调用GetEntity方法时:
Dim schemas As XmlSchemaSet = New XmlSchemaSet()
schemas.XmlResolver = New ResourceXmlResolver(System.Reflection.Assembly.GetExecutingAssembly)它们已正确加载。但是,我确实提供了来自www.xbrl.org的xsd的检查。
在这种情况下,我使用标准的XmlUrlResolver从web上获取它们。
我还通过下载所有xbrl xsd并嵌入它们来使其正常工作。
我希望这是对Xbrl的足够的验证,但到目前为止让它正常工作:)
https://stackoverflow.com/questions/15680101
复制相似问题