我有一个很可能是很愚蠢的问题,但我被它难住了,希望能得到任何帮助。
我正在尝试使用Python和BeautifulSoup从SEC文件中收集xbrl数据。我遇到的一个问题是,某些行项目在实例文档和计算链接库中的引用方式不同。
作为一个具体的例子,以PHI Group Inc.最近的10-K为例:
https://www.sec.gov/Archives/edgar/data/704172/000149315221015100/0001493152-21-015100-index.htm
带有xbrl标记“WriteoffOfFinancingCosts
”的行项目显示为
^实例文档中的{loc_PHILWriteoffOfFinancingCosts
”。
但是这种关系“PHIL:
”='loc_PHIL
”,在XBRL文件中不是标准的。如何知道将向calculation linkbase中的标记添加哪个前缀,以便(在移除前缀的情况下)将其可靠地绑定回实例文档中的标记?
我可以想出各种各样的解决办法,但这似乎很愚蠢;难道我不能在计算链接库或其他地方查找,以便准确地告诉我添加了什么前缀吗?
作为一些(可能相关的)细微差别:当然,许多文件中的许多标记都有一个类似“us gaap”的前缀,表示us gaap名称空间,但这似乎不能保证计算链接库中的标记因此看起来像“us-gaapAccountsPayableCurrent
”,而不是“loc_us-gaapAccountsPayableCurrent
”或“us-gaap:AccountsPayableCurrent
”或基本模式的其他变体,所有这些,当然,看起来和美女们不一样。
谁能给我指出正确的方向吗
PHIL:WriteoffOfFinancingCosts
是XBRL概念的名称,而loc_PHILWriteoffOfFinancingCosts
是指向该概念的定位器的(计算链接库)标签。这种机制是链接库将概念连接在一起的方式:每个定位器都是概念的“代理”loc_PHILWriteoffOfFinancingCosts
因此是计算链接库的内部细节。linkbase标签的名称原则上是“自由选择”,但也有一些约定(例如前缀为loc_
),但我不会依赖它们。相反,您可以通过查看linkbase标签的定义来“跟踪跟踪”:您可以看到,由于
xlink:href
属性,这个定位器指向文件phil-20200630.xsd
中ID为PHIL_WriteoffOfFinancingCosts
的概念您可以看到这个概念的本地名称是
WriteoffOfFinancingCosts
。它位于通常与前缀PHIL:
关联的命名空间中,但从未出现在概念定义中,因为该文件中的所有概念都位于通常与PHIL:
关联的命名空间中。现在,我们怎么知道这一点?因为在xsd文件的顶部,它表示targetNamespace="http://phiglobal.com/20200630"
,并且前缀PHIL:
也附加到实例文件phil-20200630.xml
中的这个名称空间,带有xmlns:PHIL="http://phiglobal.com/20200630"
通常的做法是选择带有前缀、下划线和本地名称的概念ID。一些用户依赖于它,但是遵循间接寻址级别,尽管更复杂,但“更安全”:linkbase label
loc_PHILWriteoffOfFinancingCosts
->;概念IDPHIL_WriteoffOfFinancingCosts
->;概念本地名称WriteoffOfFinancingCosts
->;概念的完全限定名PHIL:WriteoffOfFinancingCosts
你可能会注意到这是多么复杂。事实上,这就是为什么值得使用XBRL处理器的原因,它将为您完成所有这些
@Ghislain Fourny:非常感谢。我很高兴知道,我并没有因为发现情况复杂而发疯。现在知道linkbase标签是“自由选择”的,下面是我提出的具体的BeautifulSoup解决方案,以防有人感兴趣:
这将生成一个字典,其中键是“loc_Phil”类型的标签名,值是普通的概念名,例如
labeldict['loc_PHILWriteoffOfFinancingCosts'] = 'WriteoffOfFinancingCosts'
这假设xsd链接将始终遵循“…#…"概念”的格式。我还没有找到任何不符合这种格式的,但这不是保证相关问题 更多 >
编程相关推荐