2

XBRL ドキュメントを検証しようとしていますが、少し迷っています。XBRL は、法人税の提出に関するオランダの分類法の (簡略化された) 例です。XBRL は次のとおりです。

string xbrl = @"<xbrli:xbrl xml:lang='nl' xmlns:xbrli='http://www.xbrl.org/2003/instance' xmlns:link='http://www.xbrl.org/2003/linkbase' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:bd-alg='http://www.nltaxonomie.nl/8.0/basis/bd/items/bd-algemeen' xmlns:xbrldi='http://xbrl.org/2006/xbrldi' xmlns:bd-dim-dom='http://www.nltaxonomie.nl/8.0/basis/bd/domains/bd-domains' xmlns:bd-dim-dim='http://www.nltaxonomie.nl/8.0/domein/bd/axes/bd-axes' xmlns:bd-bedr='http://www.nltaxonomie.nl/8.0/basis/bd/items/bd-bedrijven' xmlns:iso4217='http://www.xbrl.org/2003/iso4217'>
<link:schemaRef xlink:type='simple' xlink:href='http://www.nltaxonomie.nl/8.0/report/bd/entrypoints/bd-rpt-vpb-aangifte-2013.xsd' xlink:arcrole='http://www.w3.org/1999/xlink/properties/linkbase'/>
<xbrli:context id='c1'>
    <xbrli:entity>
        <xbrli:identifier scheme='www.belastingdienst.nl/identificatie'>800030357</xbrli:identifier>
    </xbrli:entity>
    <xbrli:period>
        <xbrli:startDate>2013-07-01</xbrli:startDate>
        <xbrli:endDate>2014-06-01</xbrli:endDate>
    </xbrli:period>
    <xbrli:scenario>
        <xbrldi:explicitMember dimension='bd-dim-dim:PartyDimension'>bd-dim-dom:Declarant</xbrldi:explicitMember>
    </xbrli:scenario>
</xbrli:context>
<xbrli:context id='c2'>
    <xbrli:entity>
        <xbrli:identifier scheme='www.belastingdienst.nl/identificatie'>800030357</xbrli:identifier>
    </xbrli:entity>
    <xbrli:period>
        <xbrli:instant>2014-06-01</xbrli:instant>
    </xbrli:period>
    <xbrli:scenario>
        <xbrldi:explicitMember dimension='bd-dim-dim:TimeDimension'>bd-dim-dom:End</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension='bd-dim-dim:PartyDimension'>bd-dim-dom:Declarant</xbrldi:explicitMember>
    </xbrli:scenario>
</xbrli:context>
<xbrli:unit id='u1'>
    <xbrli:measure>iso4217:EUR</xbrli:measure>
</xbrli:unit>
<bd-alg:SoftwarePackageName contextRef='c1'>SoftwareNaame</bd-alg:SoftwarePackageName>
<bd-alg:SoftwarePackageVersion contextRef='c1'>V1</bd-alg:SoftwarePackageVersion>
<bd-alg:TaxReturnMessageType contextRef='c1'>81</bd-alg:TaxReturnMessageType>
<bd-bedr:AssetsTotalAmountFiscal contextRef='c2' decimals='INF' unitRef='u1'>0</bd-bedr:AssetsTotalAmountFiscal>
<bd-bedr:BalanceProfitCalculationForTaxPurposesFiscal contextRef='c1' decimals='INF' unitRef='u1'>0</bd-bedr:BalanceProfitCalculationForTaxPurposesFiscal>
</xbrli:xbrl>";

次のコードを使用して、XSD を読み込み、ドキュメントを検証します。

var doc = XDocument.Parse(xbrl);
var xmlReader =  XmlReader.Create("http://www.nltaxonomie.nl/8.0/report/bd/entrypoints/bd-rpt-vpb-aangifte-2013.xsd");
var schema = XmlSchema.Read(xmlReader,
(sender, e) => { throw e.Exception; });

var set = new XmlSchemaSet();
set.Add(schema);
set.Compile();

doc.Validate(set, (sender, e) =>
{
    throw new Exception("document validation failed: " + e.Message);
});

これにより、次のエラー メッセージが生成されます。

ドキュメントの検証に失敗しました: 名前空間 ' http://www.xbrl.org/2003/instance ' の要素 'xbrl' には、名前空間 ' http://www.nltaxonomie.nl/8.0/basis/に無効な子要素 'SoftwarePackageName' がありますbd/items/bd-algemeen '. 予想される可能な要素のリスト: 名前空間 ' http://www.xbrl.org/2003/instance 'の 'item, tuple, context, unit' および名前空間 ' http://www.xbrl.orgの 'footnoteLink' /2003/リンクベース'.

どうやら SchemaSet.Compile は、関連するすべての XSD を見つけることができません (メインの XSD への直接リンクはこちら)。スキーマをロードしてドキュメントを解析するさまざまな方法を何時間も試してきましたが、この問題を解決する方法がわかりません。

また、ドキュメントをGepsioで読み込もうとしました。Gepsio はドキュメントを読み込みますが、ドキュメント内にファクトが見つからないため、ここではオランダの分類スキーマの構造に問題があるようです。

4

1 に答える 1

0

XML インスタンスはそのスキーマで検証されません。おそらく、それをインポートする別のスキーマで検証されるか、必要なすべてのスキーマをインポートする新しいスキーマを作成する必要があります。

問題は、これらの要素がルートの下の最上位に配置され、ファイルの最後にあることです。

<bd-alg:SoftwarePackageName contextRef='c1'>SoftwareNaame</bd-alg:SoftwarePackageName>
<bd-alg:SoftwarePackageVersion contextRef='c1'>V1</bd-alg:SoftwarePackageVersion>
<bd-alg:TaxReturnMessageType contextRef='c1'>81</bd-alg:TaxReturnMessageType>
<bd-bedr:AssetsTotalAmountFiscal contextRef='c2' decimals='INF' unitRef='u1'>0</bd-bedr:AssetsTotalAmountFiscal>
<bd-bedr:BalanceProfitCalculationForTaxPurposesFiscal contextRef='c1' decimals='INF' unitRef='u1'>0</bd-bedr:BalanceProfitCalculationForTaxPurposesFiscal>

スキーマによると、許可されていません。

許可する必要があると思われる場合は、正しいスキーマを使用していない可能性があります。

アプリケーションで派生型を使用できる場合、解決策は、必要なスキーマをインポートする新しいスキーマを作成し、余分な要素を許可する新しいルートを (新しい名前空間で) 定義することです。元のスキーマの型が公開されている場合は、同じ名前空間でルート型を再定義することもできます。

于 2014-06-05T15:49:58.847 に答える