تحقق من صحة ملفات 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.

مثال على رسالة خطأ التحقق القياسية

ما يجب القيام به: image_بديل_نص

أعلاه هو مثيل 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)

الصورة التالية توضح الإخراج:

ما يجب القيام به: image_بديل_نص