تحقق من صحة ملفات XBRL و iXBRL في Python
تحقق من صحة ملف المثيل XBRL في Python
يجب أن تتوافق مثيلات XBRL و XBRL Linkbases و XBRL مخططات التصنيف مع متطلبات بناء الجملة المفروضة فيمواصفات XBRL. للتحقق من صحة هذه ، توفر فئة XbrlInstance طريقة التحقق من الصحة ().
يوضح مقتطف التعليمات البرمجية Python التالي كيفية التحقق من صحة مستند مثيل XBRL.
//Enable cache service, this service will cache schema and link base file, and use the local file directly in the next load | |
LocalCacheService.enable_service("D:\\xbrl\\cache") | |
document = XbrlDocument(os.path.join(sourceDir, "IdScopeContextPeriodStartAfterEnd.xml")) | |
xbrlInstances = document.xbrl_instances | |
xbrlInstance = xbrlInstances[0] | |
xbrlInstance.validate() | |
if xbrlInstance.validation_errors.length > 0: | |
validationErrors = xbrlInstance.validation_errors |
تحقق من صحة الملف iXBRL في Python
المواصفات iXBRL يحدد العديد من قواعد التحقق من الصحة. للتحقق من صحة ملفات iXBRL ، توفر فئة InlineXbrlDocument أسلوب التحقق من الصحة ().
يوضح مقتطف التعليمات البرمجية Python التالي التحقق من صحة وثيقة نسخة iXBRL.
//Enable cache service, this service will cache schema and link base file, and use the local file directly in the next load | |
LocalCacheService.enable_service("D:\\xbrl\\cache") | |
document = InlineXbrlDocument(XbrlFilePath + @"account_first.html") | |
document.validate(); | |
if document.validation_errors.length > 0: | |
validationErrors = document.validation_errors |
أكواد خطأ التحقق من الصحة
في التعداد ValidationErrorCode ، يتم تحديد أكواد خطأ التحقق من الصحة لكل قاعدة من قواعد التحقق من الصحة. فيما يلي تعريفات رمز الخطأ:
- سياق الكلام_فترة_رقم_بداية_الوقت: نوع فترة السياق هي المدة ، ولكن ليس لها تاريخ بدء.
- سياق الكلام_فترة_رقم_نهاية_الوقت: نوع فترة السياق هي المدة ، ولكن ليس لها تاريخ انتهاء.
- سياق الكلام_فترة_بداية_بعد، بعدما_النهاية: نوع فترة السياق هي المدة ، لكن تاريخ الانتهاء قبل تاريخ البدء.
- سياق الكلام_فوري_NO_TIME: نوع فترة السياق فوري ، ولكن ليس لها تاريخ فوري.
- سياق الكلام_سيناريو_XBRL_NAMESPACE: لا يمكن أن يحتوي سيناريو السياق على XBRL عقدة مساحة الاسم.
- سياق الكلام_سيناريو_XBRL_الاستبدال_المجموعة: لا يمكن أن يحتوي سيناريو السياق على عنصر في مجموعة الاستبدال للعناصر المحددة في مساحة الاسم XBRL.
- سياق الكلام_سيناريو_فارغ: لا يمكن أن يكون سيناريو السياق فارغًا.
- سياق الكلام_مقطع_XBRL_NAMESPACE: لا يمكن أن يحتوي مقطع السياق على XBRL عقدة مساحة الاسم.
- سياق الكلام_مقطع_XBRL_SUBSTITUTIONGROUP: لا يمكن أن يحتوي مقطع السياق على عنصر في مجموعة الاستبدال للعناصر المحددة في مساحة الاسم XBRL.
- سياق الكلام_مقطع_فارغ: لا يمكن ترك مقطع السياق فارغًا.
- العنصر_رقم_السياق: يجب أن يكون للعنصر سياق.
- العنصر_بيرويد_يكتب_نزاع_WITH_CONTEXT: يحتوي العنصر على نوع فترة يتعارض مع السياق.
- العنصر_رقمي_NO_UNIT: العنصر رقمي ويجب أن يحتوي على وحدة.
- نقدي_العنصر_رقم_غير مرتبطة_UNIT_MEASURE: العنصر هو نوع نقدي ويجب أن يحتوي على وحدة قياس واحدة.
- نقدي_العنصر_NO_ISO4217: العنصر هو نوع نقدي ويجب أن يحتوي على مقياس وحدة نمط Iso 4217.
- شارك_العنصر_رقم_غير مرتبطة_UNIT_MEASURE: العنصر هو نوع مشاركة ويجب أن يحتوي على وحدة قياس واحدة.
- شارك_العنصر_رقم_شارك_UNIT_MEASURE: العنصر هو نوع المشاركة ويجب أن يحتوي على xbrli: مقياس وحدة الأسهم.
- لا شيء_العنصر_مع_الاحكام_OR_DECIMALS: العنصر صفري ويجب ألا يحتوي على دقة أو كسور عشرية.
- جزء_العنصر_مع_الاحكام_OR_DECIMALS: العنصر هو نوع كسر ويجب ألا يحتوي على دقة أو كسور عشرية.
- رقمي_العنصر_مع_على حد سواء_الاحكام_و_الأرقام العشرية: العنصر هو نوع رقمي ويجب ألا يحتوي على كل من الدقة والأرقام العشرية.
- رقمي_العنصر_بدون_الاحكام_OR_DECIMALS: العنصر هو نوع رقمي ويجب أن يحتوي إما على الدقة أو الكسور العشرية.
- عدم_رقمي_العنصر_مع_الاحكام_أو_الأرقام العشرية: العنصر ليس نوعًا رقميًا ويجب ألا يحتوي على دقة أو كسور عشرية.
- هامش_قوس_من_ليس_تم العثور عليها: تعذر العثور على قوس الحاشية السفلية من Loc.
- هامش_قوس_إلى_ليس_تم العثور عليها: تعذر العثور على قوس الحاشية السفلية للحاشية السفلية.
- تعريف_قوس_من_ليس_تم العثور عليها: تعذر العثور على قوس التعريف من Loc.
- تعريف_قوس_إلى_ليس_تم العثور عليها: تعذر العثور على تعريف القوس إلى Loc.
- جوهر_الاسم المستعار_تعريف_قوس_DIFFERENT_TYPE: جوهر تعريف قوس له أنواع مختلفة.
- جوهر_الاسم المستعار_تعريف_قوس_مختلف_فترة_النوع: Essence-alias تعريف القوس له أنواع مختلفة من الفترة.
- جوهر_الاسم المستعار_تعريف_قوس_DIFFERENT_BALANCE: Essence-alias تعريف القوس له أرصدة مختلفة.
- عملية حسابية_قوس_من_ليس_تم العثور عليها: تعذر العثور على قوس الحساب من Loc.
- عملية حسابية_قوس_إلى_ليس_تم العثور عليها: تعذر العثور على قوس الحساب إلى Loc.
- ضع الكلمة المناسبة_قوس_من_ليس_تم العثور عليها: تعذر العثور على قوس Lable من Loc.
- ضع الكلمة المناسبة_قوس_إلى_ليس_تم العثور عليها: تعذر العثور على قوس Lable إلى Loc.
- عرض تقديمي_قوس_من_ليس_تم العثور عليها: تعذر العثور على قوس عرض تقديمي من Loc.
- عرض تقديمي_قوس_إلى_ليس_تم العثور عليها: تعذر العثور على قوس عرض تقديمي لـ Loc.
- المرجعي_قوس_من_ليس_تم العثور عليها: تعذر العثور على قوس مرجعي من Loc.
- المرجعي_قوس_إلى_ليس_تم العثور عليها: تعذر العثور على قوس مرجعي لـ Loc.
مثال على رسالة خطأ التحقق القياسية
أعلاه هو مثيل XBRL ، فهو يعرّف السياق “cd1” ، ونوع فترة السياق هذا هو المدة ، وتاريخ البدء هو 2002-03-31 ، وتاريخ الانتهاء هو 31-03-2001 ، لذلك يكون تاريخ الانتهاء قبل تاريخ البدء. في مواصفة XBRL ، الفصل 4.7.2 ، تحدد قاعدة التحقق من الصحة: “يجب أن يحدد تاريخ الانتهاء أو يشير إلى نقطة زمنية بعد النقطة المحددة أو الضمنية في وقت تاريخ البدء المقابل”. وفقًا لهذه القاعدة ، لا يعد مثيل XBRL هذا صالحًا.
تحقق من صحة XBRL وإخراج رسالة الخطأ المعيارية
يقوم الكود التالي بالتحقق من صحة مثيل XBRL وإخراج رسالة الخطأ القياسية.
//Enable cache service, this service will cache schema and link base file, and use the local file directly in the next load | |
LocalCacheService.enable_service("D:\\xbrl\\cache") | |
document = XbrlDocument(os.path.join(sourceDir, "IdScopeContextPeriodStartAfterEnd.xml")) | |
xbrlInstances = document.xbrl_instances | |
xbrlInstance = xbrlInstances[0] | |
xbrlInstance.validate() | |
xbrlInstance.validate() | |
if xbrlInstance.validation_errors.length > 0: | |
for validationError in xbrlInstance.validation_errors: | |
print(validationError.message) |
الصورة التالية توضح الإخراج: