内容


Thinking XML

使用 XBRL 分析财务报告

学习如何解释可扩展业务报告语言,理解财务报告

Comments

系列内容:

此内容是该系列 # 部分中的第 # 部分: Thinking XML

敬请期待该系列的后续内容。

此内容是该系列的一部分:Thinking XML

敬请期待该系列的后续内容。

关注华尔街新闻和全球市场的人都会遇到这样的情景:公司发布利润或亏损报告,分析师和交易人员以此为依据买进或卖出该公司的股票。对任何公司来说,最关键的时期就是发布这些财务报告之前的准备时间和发布之后的一段时间。公司管理人员发出新闻稿,与分析师和媒体展开电话会议,并且常常公布有关的活动。然而,所有这些活动的关键是正式的报告,即递交给政府相关部门的财政决算(对于美国来说,这些报告递交给证券交易管理委员会)。这些报告拥有自己的技术语言和市场语义,因此必须谨慎设计以符合标准需求和约定。

在正式的商业报告中,您可以找到有关商业活动和走势的宝贵信息,并且财务服务行业得到了快速发展,可以利用 XML 以可扩展业务报告语言(Extensible Business Reporting Language,XBRL)的形式标准化用于交换这类财务信息的格式。XBRL 是用于表达商业报告和相关语义的开放的、免版税的标准,当前的成熟版本为 2.1(2005 年 4 月发布),但是目前由 XBRL International, Inc. 管理,这是一个由 450 家大型公司、政府机构和非政府组织(NGO)组成的非营利性的国际联合组织。该组织这样表述 XBRL(摘自 XBRL 主页):

XBRL 是一种用于以电子方式交换商业和财务数据的语言,它改变了全球的商业报告方式。它为商业信息的准备、分析和交换提供了巨大的优势。它为提供或使用财务数据的所有参与者节省了成本、提高了效率并改善了准确性和可靠性。XBRL 的原理非常简单。它并没有把财务信息看作一个简单的文本块(比如一个标准的网页或打印好的文档),而是为每个单独的数据项提供一个识别标记。这种标记是可以供计算机读取的。比如,公司净利润使用自己独有的标记。

无疑,XBRL 借助法律的力量获得了牵引力。截至 2008 年 12 月,SEC 要求大型公司使用 XBRL 归档财政决算,特别是每年 10-K 以及每季度 10-Q 的财务报告。到 2009 年底,这一要求将延伸到财富 1500 强公司中的绝大多数公司,而到 2010 年底,它将涵盖所有上市公司。

我曾在本专栏的早期文章 “A glimpse into XML in the financial services industry”(参见 参考资料 获得这篇文章的链接)中谈及 XBRL。从那时起,该规范就得到了人们的重视,主要体现在企业报告透明性及其与财务服务的关系。在本文中,我将仔细查看 XBRL 格式并向开发人员介绍它的关键结构。

XBRL 简介

XBRL 的使用需要注意几个方面。XBRL 文档的基础是一些使用 XLink 组织的各种类别的语义,或其他元数据语义。这些类别是 XBRL 形成语义透明性的机制,可以引用行业和全球财务报告标准,包括由 XII 本身维护的标准 — Global Ledger Framework。报告就是合并了这些语义、使用经过严格控制的上下文表达财务信息(用 XBRL 的说法就是业务事实)的一些实例文档。比如,上下文用于明确地指称某个业务事实所属的公司或个人、相关的计量单位、日期和时间、任何相关的事实、对类别定义的引用,以及其他可以清晰地区分 XBRL 实例所报告的事实的元数据。

我决定使用一个真实的报告,而不是一个虚构的示例。我将使用 IBM® 向 SEC 递交的 2008 年第三季度财务 10-Q 报告的一部分。上传到 EDGAR 系统的完整 SEC 报告是一个公开密匙基础设施(PKI)签名块,包含一个 SGML 文档,后者同时包含报告的 HTML 和 XBRL 版本,如 图 1 所示。

图 1. SEC 报告的结构
图解:SEC 报告的结构
图解:SEC 报告的结构

在这个报告中,共有 7 个文本区段,其中包括一个 HTML 区段和 6 个 XBRL 区段。每个区段有一个文件名,该文件名在 FILENAME 元素中指定。实际上,这是一个压缩文件格式,与未进行压缩的 UNIX™ TAR 或 ZIP 没有什么不同。表 1 展示了这些内嵌文档的一个摘要。

表 1. IBM Q3 10-Q 报告的内嵌区段
文件名内容作用
a08-28338_18k.htmHTML10-Q 报告表单的文本
ibm-20081028.xmlXBRL 实例报告的主要业务事实
ibm-20081028.xsd包含内嵌 XLink 的 W3C XML 模式包含特定于 IBM 的结构的 XBRL 定义
ibm-20081028_cal.xmlXLink 链接库与值计算有关的细节分类
ibm-20081028_def.xmlXLink 链接库提供基本业务事实定义的分类链接
ibm-20081028_lab.xmlXLink 链接库提供业务事实的 XLink 标签的分类链接,支持带外(out-of-band)链接
ibm-20081028_pre.xmlXLink 链接库提供与呈现业务事实有关的额外提示的分类链接

XML 概况

清单 1 显示了 ibm-20081028.xml 的部分摘要,ibm-20081028.xml 是其中一个内嵌 XBRL 文件,构成了主要的报告。

清单 1. IBM 10-Q 报告的主要业务事实 XBRL
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xbrli:xbrl
  xmlns:xbrli="http://www.xbrl.org/2003/instance"
  xmlns:dei="http://xbrl.us/dei/2008-03-31"
  xmlns:link="http://www.xbrl.org/2003/linkbase"
  xmlns:us-gaap="http://xbrl.us/us-gaap/2008-03-31"
  xmlns:xlink="http://www.w3.org/1999/xlink"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xbrl.org/2006/xbrldi http://www.xbrl.org/2006/xbrldi-2006.xsd">
  <link:schemaRef xlink:href="ibm-20081028.xsd" xlink:type="simple"/>
  <xbrli:context id="D-20073Q">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0000051143</xbrli:identifier>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:startDate>2007-07-01</xbrli:startDate>
      <xbrli:endDate>2007-09-30</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="D-20083Q">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0000051143</xbrli:identifier>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:startDate>2008-07-01</xbrli:startDate>
      <xbrli:endDate>2008-09-30</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:unit id="Shares">
    <xbrli:measure>xbrli:shares</xbrli:measure>
  </xbrli:unit>
  <xbrli:unit id="USD-DecimalMinus6">
    <xbrli:measure>iso4217:USD</xbrli:measure>
  </xbrli:unit>
  <dei:EntityCommonStockSharesOutstanding contextRef="I-2008-09-30" decimals="0" 
	unitRef="Shares">1343457986</dei:EntityCommonStockSharesOutstanding>
  <dei:EntityRegistrantName contextRef="D-20083Q">International Business Machines 
	Corporation</dei:EntityRegistrantName>
  <dei:CurrentFiscalYearEndDate 
	contextRef="D-20083Q">--12-31</dei:CurrentFiscalYearEndDate>
  <dei:DocumentType contextRef="D-20083Q">10-Q</dei:DocumentType>
  <dei:DocumentReportType contextRef="D-20083Q">Transition 
	Report</dei:DocumentReportType>
  <us-gaap:SalesRevenueServicesNet contextRef="D-20083Q" decimals="-6" 
       unitRef="USD-DecimalMinus6">14773000000</us-gaap:SalesRevenueServicesNet>
  <us-gaap:SalesRevenueServicesNet contextRef="D-20073Q" decimals="-6" 
       unitRef="USD-DecimalMinus6">13657000000</us-gaap:SalesRevenueServicesNet>
  <us-gaap:SalesRevenueGoodsNet contextRef="D-20083Q" decimals="-6" 
	unitRef="USD-DecimalMinus6">9892000000</us-gaap:SalesRevenueGoodsNet>
  <us-gaap:SalesRevenueGoodsNet contextRef="D-20073Q" decimals="-6" 
	unitRef="USD-DecimalMinus6">9833000000</us-gaap:SalesRevenueGoodsNet>
  <us-gaap:Revenues contextRef="D-20083Q" decimals="-6" id="f7" 
	unitRef="USD-DecimalMinus6">25302000000</us-gaap:Revenues>
  <us-gaap:Revenues contextRef="D-20073Q" decimals="-6" 
	unitRef="USD-DecimalMinus6">24119000000</us-gaap:Revenues>
  <us-gaap:CostOfServices contextRef="D-20083Q" decimals="-6" 
	unitRef="USD-DecimalMinus6">10230000000</us-gaap:CostOfServices>
  <us-gaap:CostOfServices contextRef="D-20073Q" decimals="-6" 
	unitRef="USD-DecimalMinus6">9855000000</us-gaap:CostOfServices>
  <us-gaap:CostOfGoodsSold contextRef="D-20083Q" decimals="-6" 
	unitRef="USD-DecimalMinus6">3789000000</us-gaap:CostOfGoodsSold>
  <us-gaap:CostOfGoodsSold contextRef="D-20073Q" decimals="-6" 
	unitRef="USD-DecimalMinus6">3960000000</us-gaap:CostOfGoodsSold>
  <us-gaap:GrossProfit contextRef="D-20083Q" decimals="-6" id="f9" 
	unitRef="USD-DecimalMinus6">10959000000</us-gaap:GrossProfit>
  <us-gaap:GrossProfit contextRef="D-20073Q" decimals="-6" 
	unitRef="USD-DecimalMinus6">9956000000</us-gaap:GrossProfit>
</xbrli:xbrl>

第一个区段包括设置业务上下文的结构。表示 “服务销售的净收入为 $14,773,000,000”。这一业务事实固然不错,但是如果没有基本的上下文则毫无意义。它是针对一整年还是一个季度,或只是一个星期?针对 1968 年的一个季度还是 2008 年的一个季度(考虑到通货膨胀,这会造成一个显著的差别)?对我的小型咨询公司来说,这样一个收入数字是非常惊人的。当然,这里的上下文是关于 IBM 的。XBRL 提供了各种工具,可以为业务事实建立全部上下文。前两个 xbrli:context 元素建立了用于业务事实的临时上下文 —D-20073Q,表示 2007 财年的第 3 季度,而 D-20083Q 表示 2008 财年的第 3 季度。这两个时期用于提供与去年的同期比较,这对于财务分析十分重要。如果去年同期的净收入数字为 100 亿美元,而今年这一数字为 150 亿美元,那么财务状况将非常不错,相反,如果去年同期的净收入数字为 200 亿美元,那么表示财务状况非常糟糕。

接下来的两个 xbrli:context 元素定义计量单位。其中一个非常简单 — 只是一些股票计数。但是,即使是特别简单的东西也常常具有非常具体的上下文。您并不希望看到一名不诚实的股票操盘手在一份具有误导性的报告中伪造股票 的定义,因此标准 XBRL 分类本身提供了一个股票单位的定义。另一个单位是美元,如 ISO 4217 所定义,该国际标准描述了由三个字母组成的货币代码(“USD” 代表美元)。本例中的单位被指定为表示四舍五入为最接近的百万位的值。它被称为 “USD-DecimalMinus6”,因为它相当于将该值乘以 10 的 -6 次方,去掉了小数部分,然后恢复乘数。同样,XBRL 允许报告人员和分析师尽量说明这些细节。

然后查看业务事实本身,从这里可以了解到有关 IBM 财务业绩的所有感兴趣内容。比如,该公司拥有 1,343,457,986 已发行股票,2008 财年第三季度服务销售的净收入为 $14,773,000,000,2007 年同期为 $13,657,000,000,增加了 $116,000,000。清单 1 是摘自该报告的一小部分,它列出了大量业务事实。注意,这里使用名称空间引用美国公认会计原则(GAAP)的 XBRL 表示,目的是在全国范围内使用会计报表,并为国际标准化提供了一个基础。

更多细节 — 分类

您已经了解了 XBRL 中的业务上下文,但是 清单 1 中的内容仅是最表面的部分。支撑业务事实的详尽(并且无聊)的细节涉及多个分类,即报告的 7 个文件中的其中 3 个文件。我将主要介绍关注引用和标签的 taxonomy 文件。清单 2 摘录自 ibm-20081028_def.xml 文件,它提供了到术语的正式定义的链接。

清单 2. IBM 10-Q 报告的定义分类摘录
<?xml version="1.0" encoding="utf-8"?>
<linkbase
  xmlns="http://www.xbrl.org/2003/linkbase"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:xlink="http://www.w3.org/1999/xlink"
  xmlns:xbrldt="http://xbrl.org/2005/xbrldt"
  xsi:schemaLocation="http://www.xbrl.org/2003/linkbase 
	http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd 
	http://xbrl.org/2005/xbrldt  
	http://www.xbrl.org/2005/xbrldt-2005.xsd">
  <roleRef xlink:type="simple"
    xlink:href="ibm-20081028.xsd#IBMConsolidatedStatementOfEarnings"
    roleURI="http://www.ibm.com/us/fr/ci/ibm/IBMConsolidatedStatementOfEarnings" />
  <roleRef xlink:type="simple"
    xlink:href="ibm-20081028.xsd#DocumentInformation"
    roleURI="http://www.ibm.com/us/fr/ci/DocumentInformation" />
  <roleRef xlink:type="simple"
    xlink:href="ibm-20081028.xsd#EntityInformation"
    roleURI="http://www.ibm.com/us/fr/ci/EntityInformation" />
  <definitionLink xlink:type="extended"
    xlink:role="http://www.ibm.com/us/fr/ci/ibm/IBMConsolidatedStatementOfEarnings">
    <loc xlink:type="locator"
      xlink:label="us-gaap_StatementLineItems"
      xlink:href="http://xbrl.us/USG/elts/us-gaap.xsd#us-gaap_StatementLineItems"/>
    <loc xlink:type="locator"
      xlink:label="us-gaap_StatementTable"
      xlink:href="http://xbrl.us/USG/elts/us-gaap.xsd#us-gaap_StatementTable" />
    <definitionArc xlink:type="arc"
      xlink:arcrole="http://xbrl.org/int/dim/arcrole/all"
      xlink:from="us-gaap_StatementLineItems"
      xlink:to="us-gaap_StatementTable"
      order="1"
      use="optional"
      xbrldt:contextElement="segment" />
  </definitionLink>
  <definitionLink xlink:type="extended"
    xlink:role="http://www.ibm.com/us/fr/ci/EntityInformation">
    <loc xlink:type="locator"
      xlink:label="dei_EntityInformationLineItems"
      xlink:href="http://xbrl.us/(USG)/non-gaap/(XSD)#dei_EntityInformationLineItems" />
    <loc xlink:type="locator"
      xlink:label="ibm_EntitiesTable"
      xlink:href="ibm-20081028.xsd#ibm_EntitiesTable" />
    <definitionArc xlink:type="arc"
      xlink:arcrole="http://xbrl.org/int/dim/arcrole/all"
      xlink:from="dei_EntityInformationLineItems"
      xlink:to="ibm_EntitiesTable"
      order="27"
      use="optional"
      xbrldt:contextElement="segment" />
    <loc xlink:type="locator"
      xlink:label="dei_EntityCommonStockSharesOutstanding"
xlink:href="http://xbrl.us/USG/non-gaap/dei.xsd#dei_EntityCommonStockSharesOutstanding"/>
    <definitionArc xlink:type="arc"
      xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member"
      xlink:from="dei_EntityInformationLineItems"
      xlink:to="dei_EntityCommonStockSharesOutstanding"
      order="35"
      use="optional" />
  </definitionLink>
</linkbase>

我去掉了大量间接的内容和比较深奥的分类链接表示方法。为了符合格式化要求,我还修改了一些较长的属性值,有时使用 “(USG)” 替换字符串 “us-gaap/1.0”,有时将字符串 “dei-2008-03-31.xsd” 简写为 “(XSD)”。这样将方便您了解基本的原理。在链接库内,顶级链接(roleRef 元素)提供了与整个报告有关的定义。引用报告中特定方面的定义则通过后面的 definitionLink 元素表示。

XLink 详解

XBRL 运用了更复杂的 XLink 技术,即用于在 XML 中创建超链接的 W3C 标准。在 XBRL 中使用 XLink 时,需要牢记的一点就是链接可以出现在任何元素中,与此不同的是,HTML 中的链接可以通过 alink 元素表示。XBRL 的确定义了标准链接元素,如 roleReflocdefinitionArc,但是发布程序在使用链接时具有非常大的灵活性。IBM 使用了大量专门设计的结构,因此它在其报告中包括 XML 模式以定义这些结构。

definitionLink xlink:type="extended" 表示它是一种复杂的 XLink 类型,除了其他特性外,该类型可以表示带有多个弧(arc)的链接,并且可以以 “带外” 的方式执行,表示它可以将链接库中的链接补充为完全独立的 XML 元素(在本例中为核心 XBRL 报告中的元素)。IBM 为这个完整的扩展链接分配了一个角色,xlink:role="http://www.ibm.com/us/fr/ci/ibm/IBMConsolidatedStatementOfEarnings",它表示这个分类是由 IBM 定义的收入表(访问这个 URL 时将被重定向到 IBM 主页,但是这并不重要)。要了解具有许多弧的扩展链接,请考虑来自镜像下载站点的链接。从概念上看,这个链接仅仅是指向所需软件的一个简单链接,但实际上,可以从许多可能的资源中获得这个链接,并且每个资源都是一个独立的弧。要表示这些弧,需要使用 XLink 类型 “locator” 在端点使用 “标记” 或 “标签”。实际的弧使用 xlink:type="arc" 在元素中定义,其中包括将端点指定为标记的 xlink:fromxlink:to 元素。在下面的代码中,我从 清单 2 中提取了一个具体的扩展链接:

  <definitionLink xlink:type="extended"
    xlink:role="http://www.ibm.com/us/fr/ci/EntityInformation">
    <loc xlink:type="locator"
      xlink:label="dei_EntityInformationLineItems"
      xlink:href="http://xbrl.us/(USG)/non-gaap/(XSD)#dei_EntityInformationLineItems" />
    <loc xlink:type="locator"
      xlink:label="dei_EntityCommonStockSharesOutstanding"
xlink:href="http://xbrl.us/USG/non-gaap/dei.xsd#dei_EntityCommonStockSharesOutstanding"/>
    <definitionArc xlink:type="arc"
      xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member"
      xlink:from="dei_EntityInformationLineItems"
      xlink:to="dei_EntityCommonStockSharesOutstanding"
      order="35"
      use="optional" />
  </definitionLink>

简而言之,这表示普通股事实位于实体信息行项目范围内,通过链接到 XBRL 分类 Web 资源中的定义可以使表达式更加正式。

结束语

金融事务非常复杂,这是毋庸置疑的。最近的新闻都在讨论能够实现多高级的金融工具。对于大型的跨国公司,财务的复杂性是不用说的,即便是小一点的公司,也是非常复杂的。XBRL 的原理并不是要隐藏这种复杂性,而是将复杂性明白地表达出来,这至少实现了可访问性和透明性。XBRL 中的基本 XML 机制(我已经在本文中简略谈到大部分内容)需要花时间掌握,但是在日常业务中创建和分析格式需要大量财务知识和技术知识。在不久的将来,美国将在报告中强制使用 XBRL。这种强制要求不仅跨越全球的证券系统,而且也将应用于更具体的领域,比如部门级别的公司内部报告。同时,还可能扩展到更加广阔的法规报告需求,比如税务、劳务、环境影响报告。XBRL 将很快成为业务领域中最重要的 XML 格式之一,我希望本文可以为您提供关于 XBRL 处理的基本信息。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=XML
ArticleID=369245
ArticleTitle=Thinking XML: 使用 XBRL 分析财务报告
publish-date=02122009