Файл схемы не существует в файле синтаксического анализа XBRL

Я загрузил ZIP-файл, содержащий около 200 000 HTML-файлов, из Companies House.

Каждый файл имеет один из двух форматов: 1) встроенный формат XBRL (расширение файла .html) или 2) формат XBRL (расширение файла .xml). Глядя на последнюю доступную загрузку (6 декабря 2018 г.), все файлы кажутся прежним форматом (расширения файлов .html).

Я использую пакет XBRL в R, чтобы попытаться проанализировать эти файлы.

Вопрос 1: предназначен ли пакет XBRL для разбора файлов встроенного формата XBRL (.html) или он должен работать только с форматами XBRL (.xml)? Если нет, может ли кто-нибудь сказать мне, где искать встроенные файлы формата XBRL? Я не совсем уверен, в чем разница между встроенным и не встроенным.

Предполагая, что пакет XBRL предназначен для анализа встроенных файлов формата XBRL, я сталкиваюсь с ошибкой, сообщающей мне, что xbrl.frc.org.uk/FRS-102/2014-09-01/FRS-102-2014- Файл 09-01.xsd не существует. Вот мой код:

install.packages("XBRL")
library(XBRL)

inst <- "./rawdata/Prod224_0060_00000295_20171130.html" # manually unzipped
options(stringsAsFactors = FALSE)
xbrl.vars <- xbrlDoAll(inst, cache.dir = "XBRLcache", prefix.out = NULL, verbose = TRUE)

и ошибка:

Schema:  ./rawdata/https://xbrl.frc.org.uk/FRS-102/2014-09-01/FRS-102-2014-09-01.xsd 
Level: 1 ==> ./rawdata/https://xbrl.frc.org.uk/FRS-102/2014-09-01/FRS-102-2014-09-01.xsd 
Error in XBRL::xbrlParse(file) : 
  ./rawdata/https://xbrl.frc.org.uk/FRS-102/2014-09-01/FRS-102-2014-09-01.xsd does not exists. Aborting.

Вопрос 2. Может ли кто-нибудь объяснить, что это означает для меня в общих чертах? Я новичок в XBRL. Мне нужно пойти и найти этот файл xsd и поместить его куда-нибудь? Кажется, он находится здесь, но я понятия не имею, что с ним делать и куда его положить.

Вот аналогичный вопрос, на который, похоже, нет полного ответа, и все ссылки на испанском языке и я не знаю испанского.

После того, как я смог проанализировать один файл html XBRL, мой план состоит в том, чтобы выяснить, как анализировать все файлы XBRL внутри нескольких zip-файлов с этого веб-сайта.


person B_Real    schedule 06.12.2018    source источник
comment
Я также попытался скопировать то, что я считаю соответствующими схемами, в каталог кеша (файлы из frc.org.uk/accountants/accounting-and-reporting-policy/ и xbrl.org.uk/techguidance/taxonomies.html по совету gov.uk/government/publications/xbrl-guide-for-uk-businesses/)   -  person user2957945    schedule 14.06.2021


Ответы (4)


У меня была точно такая же проблема с данными SEC США.
Я просто точно следовал указаниям pdw, и это сработало!

К вашему сведению, код, который я использовал для

if (substr(file.name, 1, 5) != "http:") { 

is

if (!(substr(file.name, 1, 5) %in% c("http:", "https"))) {

И я взломал его с помощью trace('XBRL', edit=TRUE).

person user12151182    schedule 02.10.2019

Я не знаком с используемым вами пакетом XBRL, но кажется очевидным, что он ошибочно пытается определить абсолютный URL-адрес (https://...) как локальный файл.

Быстрый просмотр исходного кода выявляет проблему:

XBRL.R, строка 305:

fixFileName <- function(dname, file.name) {
if (substr(file.name, 1, 5) != "http:") {
   [...]

то есть он решает, является ли URL-адрес абсолютным, если он начинается с «http:», а ваш URL-адрес начинается с «https:». Достаточно легко взломать исправление, позволяющее URL-адресам https также пройти этот тест, и я подозреваю, что это решит вашу непосредственную проблему, хотя было бы намного лучше, если бы этот код использовал библиотеку URL-адресов, чтобы решить, является ли URL-адрес абсолютным или а не гадать на основе протокола.

Я не уверен, каков статус документов iXBRL. В журнале изменений есть примечание о том, что «сообщено о работе со встроенными документами XBRL», что мне подозрительно. Хотя он может правильно найти таксономию для встроенного документа, я не понимаю, как он будет правильно извлекать факты со значительным дополнительным кодом, которого я не вижу.

Возможно, вы захотите взглянуть на проект Arelle как на альтернативный процессор с открытым исходным кодом, который определенно поддерживает Inline XBRL.

person pdw    schedule 07.12.2018
comment
Спасибо, я спросил создателя пакета, может ли он обновить пакет, чтобы использовать библиотеку URL-адресов (github. com/bergant/XBRLFiles/issues/2) - person B_Real; 11.12.2018

Как заявил pdw, проблема в том, что пакет жестко закодирован для поиска http: и ошибочно обрабатывает пути https как локальные пути. Это происходит потому, что файлы XBRL могут ссылаться на внешние файлы для стандартных определений схем и т. д. В вашем примере это происходит в строке 116 файла Prod224_0081_00005017_20191231.html.

Несколько человек разветвили пакет XBRL на github и исправили это поведение. Вы можете установить одну из версий с https://github.com/cran/XBRL/network/members с devtools::install_git(), и это должно сработать.

Например, с помощью этой форка анализируется отчет Регистрационной палаты.

# remotes:::install_github("adamp83/XBRL")

library(XBRL)
x <- xbrlDoAll("https://raw.githubusercontent.com/stackoverQs/stackxbrlQ/main/Prod224_0081_00005017_20191231.html",cache.dir = "cache" verbose=TRUE))
person avdeluca    schedule 21.06.2021
comment
Спасибо, Авделука; Я собирался сказать, что, конечно, я пробовал это, и я пересобрал свой собственный пропатченный пакет, но это не сработало (как я написал в описании награды). Тем не менее, вот пример, который я добавил к вашему анализу ответов. Так что спасибо - person user2957945; 21.06.2021

Вот еще несколько общих объяснений, чтобы дать некоторый контекст.

Встроенный XBRL против XBRL

Проще говоря, файл XBRL — это просто плоский список фактов.

Встроенный XBRL представляет собой более современную версию экземпляра XBRL, в котором вместо хранения этих фактов в виде плоского списка факты хранятся в удобочитаемых документах, «штампуя» значения. С точки зрения абстрактной обработки XBRL и XBRL-файл, и встроенный XBRL-файл являются экземплярами XBRL и представляют собой просто наборы фактов.

ДТС

Кроме того, экземпляр XBRL (встроенный или нет) связан с несколькими или большим количеством файлов таксономии, известных пользователям XBRL как DTS (обнаруживаемый набор таксономий). Эти файлы представляют собой либо файлы схемы XML (.xsd), содержащие элементы отчета (концепции, измерения и т. д.), либо файлы ссылок XML (.xml), содержащие базы ссылок (графики элементов отчетов, метки и т. д.).

Механизм, связывающий экземпляр XBRL с DTS, немного сложен и неоднороден: импорт схемы, включение схемы, простые ссылки, указывающие на другие файлы и т. д. Как пользователю достаточно понять, что DTS состоит из всех файлов в переходном закрытие экземпляра по этим ссылкам. Задача процессора XBRL (включая пакет R) состоит в разрешении всего DTS.

Хранение файлов DTS

Как правило, экземпляр XBRL указывает на файл (называемый точкой входа), расположенный на сервере поставщика таксономии, и этот файл сам может указывать на дополнительные файлы на том же и других серверах.

Однако многие процессоры XBRL автоматически кэшируют эти файлы локально, чтобы избежать перегрузки серверов, что является установившейся практикой. Как правило, вам не нужно делать это самостоятельно. Самостоятельно разрешать ссылки для скачивания всех файлов очень обременительно.

Альтернативный способ — загрузить весь DTS (в виде zip-файла в соответствии со стандартом упаковки) с серверов поставщика таксономии и использовать его локально. Однако для этого также требуется процессор XBRL для определения соответствия между удаленными URL-адресами и локальными файлами.

person Ghislain Fourny    schedule 12.12.2018