2013-03-28 3 views
1

내가 가지고 내가 외부 자에서 모든 xsd 파일을로드 할 사용자 정의 XmlResolver을 만든 Xbrl xsd's 에 검증 할 필요가 XDocument를 생성합니다.XBRL 검증

이 그래서 내가 xsd's을 포함 얻을 수있는 내 해결에서 GetEntity 기능은 다음과 같습니다

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 년대의 많은있다 그리고 그들은로드되지 않습니다.

리소스로 포함시키기 위해 다운로드하기 시작했지만 많은 파일이 있으므로 최상의 솔루션처럼 보이지 않습니다. 나는 여기에 요점 것 같은 :) 나는 일반 XML을 XSD 유효성 검사를 사용하고

+1

이것이 .NET (WinRT가 아닌) 코드 인 경우 Gepsio (Gepsio.codeplex.com)에서 Gepsio가 수행 할 수있는 작업을 볼 수 있습니다 자동으로 문서의 유효성을 검사하십시오. – JeffFerguson

답변

1

느끼기 때문에

나는 사람은 XBRL 파일을 확인하는 몇 가지 경험을 가지고 희망이 지금까지 확인 보인다. 타사에서 제공

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 파일이 들어있는 어셈블리에 어셈블리를 설정, 그래서 GetEntity 방법이 리졸버를 설정하여 호출 할 때 :

Dim schemas As XmlSchemaSet = New XmlSchemaSet() 
    schemas.XmlResolver = New ResourceXmlResolver(System.Reflection.Assembly.GetExecutingAssembly) 

그들은 제대로로드됩니다. 그러나 www.xbrl.org에서 xsd에 대한 확인을 제공합니다.
그런 경우 표준 XmlUrlResolver를 사용하여 웹에서 가져옵니다.

나는 또한 모든 xbrl xsd를 다운로드하고이를 포함시킴으로써이 작업을 할 수 있습니다.

나는이 XBRL에 대한 충분한 검증을 희망하지만 지금까지 작업을 :) 가지고

2

이 오픈 소스 프로젝트는 XBRL 파일을 확인하는 데 사용할 수있는 웹 서비스를 포함 www.Arelle.org

. 이것은 내가 지금 구현하고 필요한 모든 Xbrl 규칙을 검사합니다.

+0

예, 데스크탑 응용 프로그램 외에도 Arelle은 로컬 시스템에서 실행되는 로컬 웹 서비스를 제공합니다. 예를 들면 다른 유용한 서비스도 있습니다. localhost : 8080/help가 목록을 제공합니다. –