xbrl rendering engine systems documentation

26
8/3/2019 XBRL Rendering Engine Systems Documentation http://slidepdf.com/reader/full/xbrl-rendering-engine-systems-documentation 1/26 1 | Page  U.S. Securities and Exchange Commission  XBRL Software Engine and Associated Services  Solicitation Number: SECHQ1-08-C-8210-0002  Agency: Securities and Exchange Commission Systems Documentation 

Upload: sadar-cm

Post on 06-Apr-2018

246 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: XBRL Rendering Engine Systems Documentation

8/3/2019 XBRL Rendering Engine Systems Documentation

http://slidepdf.com/reader/full/xbrl-rendering-engine-systems-documentation 1/26

1 | P a g e  

U.S. Securities and Exchange

Commission 

XBRL Software Engine and Associated Services 

Solicitation Number: SECHQ1-08-C-8210-0002 

Agency: Securities and Exchange Commission

Systems Documentation 

Page 2: XBRL Rendering Engine Systems Documentation

8/3/2019 XBRL Rendering Engine Systems Documentation

http://slidepdf.com/reader/full/xbrl-rendering-engine-systems-documentation 2/26

2 | P a g e  

Table of ContentsIntroduction.................................................................................................................................................3

High Level Process Flow and System Architecture...........................................................................................4

High Level Processing Components.................................................. ........................................................ ......7

Dispatcher................................................................................................................................................9

Report Builder................................................ ........................................................ ................................ 11

“R” Files..............................................................................................................................................13

Rule-Based Engine................................................ ........................................................ .......................14

Logging...............................................................................................................................................17

Appendix A. “R” File Example ........................................................ ........................................................ ....20

Appendix B. Rendering Engine Rules....................................................... ................................................... 23

Appendix C. Error Messages..................... ........................................................ ......................................... 26

Page 3: XBRL Rendering Engine Systems Documentation

8/3/2019 XBRL Rendering Engine Systems Documentation

http://slidepdf.com/reader/full/xbrl-rendering-engine-systems-documentation 3/26

3 | P a g e  

Introduction

For the past several years, the U.S. Securities and Exchange Commission (“SEC” or “Commission”) has

been evaluating the use of interactive data as a tool to improve the timeliness and accessibility of 

information contained in filings with the Commission under federal securities laws. In 2005, the SEC

introduced the XBRL Voluntary Filing Program (VFP) to encourage companies to furnish unofficial

financial statements and other reports using Extensible Business Reporting Language (XBRL). Building

on experiences with the VFP, the Commission has deployed software tools on its Web site to (1) allow

public users to view rendered versions of disseminated EDGAR XBRL documents that contain Exhibit

101 attachments; (2) allow EDGAR users to preview rendered versions of XBRL documents prior to

live submission to EDGAR. Common to these viewing tools is a rendering engine whose function is to

generate a human-readable document from raw XBRL content.

This paper is an overview of the rendering engine software. It provides some design and

implementation details for a technical audience who may decide to take advantage of the open

source license and incorporate the SEC’s rendering engine into their own XBRL applications. Those

who do so must note that the rendering engine software is subject to design and implementation

changes. Subsequent versions of this document will reflect these changes as appropriate and as

needed. Currently, the rendering engine is based on the following technologies:

•  Microsoft .NET 2.0 application programming model;

•  Windows Server 2003 operating system;

•  Visual Studio 2005 development tool;

•  C# programming language; and

•  NxBRE 3.1.0 open source rule engine.

High Level Process Flow and System Architecture gives an overview of the rendering engine and the

web applications that it services; High Level Processing Components gives an overview of the three

services of the rendering engine (ReportDispatcher, ReportBuilderPreview, and ReportBuilderSEC);

Dispatcher and Report Builder give some implementation details for these two components of the

rendering engine; Rule-Based Engine discuss the major functional areas of  ReportBuilder; and

Logging briefly discusses the rendering engine utility to record events of interest. The appendices

provide additional information: Appendix A gives an example of an “R” file; Appendix B lists therendering rules implemented by the ReportBuilder and the contents of the master rule configuration

file; and Appendix C lists the rendering engine error messages.

Page 4: XBRL Rendering Engine Systems Documentation

8/3/2019 XBRL Rendering Engine Systems Documentation

http://slidepdf.com/reader/full/xbrl-rendering-engine-systems-documentation 4/26

4 | P a g e  

High Level Process Flow and System Architecture

The rendering engine is a backend process that synthesizes information from raw XBRL documents to

generate meaningful human-friendly displays of information that are accessible to the public by the

Viewer and Pre-viewer applications on the SEC website (see Figure 1). The rendering engine also

generates an Excel workbook (2003 format) version of the same information.

Figure 1 Conceptual Diagram of XBRL Viewing and Previewing Capabili ties 

The process flow for the Viewer (see Figure 2) starts when an EDGAR submission is disseminated to

the SEC website. If the submission contains Exhibit 101 attachments (XBRL company instance and

extension files), the rendering engine transforms the raw XBRL to an XML representation (also called

“R” or “report” files). When a user on the SEC website requests to view a disseminated EDGAR XBRL

Page 5: XBRL Rendering Engine Systems Documentation

8/3/2019 XBRL Rendering Engine Systems Documentation

http://slidepdf.com/reader/full/xbrl-rendering-engine-systems-documentation 5/26

5 | P a g e  

filing, the XBRL Web Server accesses the “R” files of the requested filing, applies a stylesheet to it and

displays the rendered results in the Viewer.

The Pre-Viewer differs from the Viewer in that the raw XBRL document submitted by the user is not

an EDGAR submission, the resulting “R” files are not stored on the SEC website for more than a day,

and the rendered results can only be previewed by the submitter of the XBRL document.

Figure 2 System Integration Diagram

The rendering engine was designed to have a scalable services-oriented architecture. It consists of 

two processing components; a dispatcher and a builder. The dispatcher monitors the builder; the

builder performs the work. Although each installation of the rendering engine has only one

dispatcher, it can be configured for multiple builders (see Figure 3). When a builder starts, it registers

Page 6: XBRL Rendering Engine Systems Documentation

8/3/2019 XBRL Rendering Engine Systems Documentation

http://slidepdf.com/reader/full/xbrl-rendering-engine-systems-documentation 6/26

Page 7: XBRL Rendering Engine Systems Documentation

8/3/2019 XBRL Rendering Engine Systems Documentation

http://slidepdf.com/reader/full/xbrl-rendering-engine-systems-documentation 7/26

7 | P a g e  

High Level Processing Components

The current SEC installation has a preconfigured dispatcher, ReportDispatcher, and two preconfigured

builders; ReportBuilderSEC to process disseminated filings; and ReportBuilderPreview to process

filings submitted through the Pre-Viewer. When the StartServices batch file is run by the “SYSTEM”

user account, three Windows Services are started; ReportDispatcher, ReportBuilderPreview, and

ReportBuilderSEC (see Figure 4).

Figure 4 Task Manager

ReportDispatcher monitors the two builders (Figure 5). The two builders, ReportBuilderSEC and

ReportBuilderPreview, monitor their respective directory locations for documents to process. If 

documents are present, one or more threads are invoked to generate XML “R” files, package them in

zipped format, and deposit them in a directory location known to the XBRL Web Server. Upon

receiving a request from the Viewer or Pre-Viewer to view a document, the XBRL Web Server applies

a stylesheet to the “R” files of the requested document then displays the resulting HTML on the SEC

website.

Page 8: XBRL Rendering Engine Systems Documentation

8/3/2019 XBRL Rendering Engine Systems Documentation

http://slidepdf.com/reader/full/xbrl-rendering-engine-systems-documentation 8/26

8 | P a g e  

Figure 5 Process Flow Diagram 

The dispatcher is the first service started and last to shutdown. If the hosting server is rebooted, the

dispatcher will restart automatically, but the builders would need to be restarted manually (remote

builder services must first be shutdown before being restarted). If a service shutdown command is

received by a builder in the middle of processing files, the builder will delay shutting down until it

completes processing.

Each of the rendering engine Windows Services is installed in its own directory and can be configured

separately.

Page 9: XBRL Rendering Engine Systems Documentation

8/3/2019 XBRL Rendering Engine Systems Documentation

http://slidepdf.com/reader/full/xbrl-rendering-engine-systems-documentation 9/26

9 | P a g e  

Dispatcher

The dispatcher is the central controller of the rendering engine. It maintains a list of available builders

and their statuses by registering a builder when it starts and unregistering it when the builder shuts

down. The dispatcher does not directly perform work to render XBRL documents.

The dispatcher uses a configuration file (see Figure 6) to allow customization of port and server

information through which the dispatcher communicates with its builder services. These

configuration properties are described in Figure 7.

Figure 6 Example of Dispatcher Configuration (Aucent.XBRLReportBuilder.Dispatcher.exe.config) Property Description

PortNumber Remoting property. Specify the port number used for

communication.

ServerKey Remoting property. Specify the server name used for

communication.

EndPoint Remoting property. Specify the endpoint server name used for

communication.

Figure 7 Description ofConfiguration Items for Dispatcher

The dispatcher is a Windows Services program that is started by StartServices.bat. It is the first

service started and the last to shutdown. When the StartServices batch file is executed, the

Aucent.XBRLReportBuilder.Dispatcher.exe process starts by invoking the Main() method of the

FilingDispatcherService class. The sole purpose of  Main() is to provide the entry point to the

dispatcher service by passing FilingDispatcherService as a parameter to the ServiceBase.Run ()

Page 10: XBRL Rendering Engine Systems Documentation

8/3/2019 XBRL Rendering Engine Systems Documentation

http://slidepdf.com/reader/full/xbrl-rendering-engine-systems-documentation 10/26

10 | P a g e  

method. The ServiceBase class, the base class for all Window Services developed with the .NET

Framework, calls the OnStart() method in FilingDispatcherService to implement the startup code in

FilingDispatcherManager.StartUp(). The dispatcher is now ready to receive requests from the

builders.

Figure 8 High Level Dispatcher Class Diagram  

Page 11: XBRL Rendering Engine Systems Documentation

8/3/2019 XBRL Rendering Engine Systems Documentation

http://slidepdf.com/reader/full/xbrl-rendering-engine-systems-documentation 11/26

11 | P a g e  

Report Builder

The report builder is the workhorse of the rendering engine. It begins by monitoring a directory

location, as specified for FilingsFolder at a frequency determined by ProcessingFrequency in the

builder configuration file (see Figures 9 and 10). If XBRL documents are found, they are added to a

queue where a thread is invoked to process each document. The rendering engine parses the

instance document and, through the discovery process, the company-extended and base taxonomies.

An open source rule engine, NxBRE, then applies pre-defined SEC business rules to the parsed

document to generate the “R” files. A version of the “R” file information is also generated for an

Excel workbook where each report is stored in a separate worksheet tab.

Figure 9 Example of Builder Configuration File (Aucent.XBRLReportBuilder.Builder.exe.config)

Page 12: XBRL Rendering Engine Systems Documentation

8/3/2019 XBRL Rendering Engine Systems Documentation

http://slidepdf.com/reader/full/xbrl-rendering-engine-systems-documentation 12/26

12 | P a g e  

Property Description

FilingsFolder Root directory location where ReportBuilder will periodically examine for filings

to process.

ProcessingFolder Root directory location where ReportBuilder will move the filings that are readyto be processed.

ReportsFolder Root directory location where ReportBuilder will place completed reports.

Processing Frequency Length of time in seconds the service will wait before checking FilingsFolder for

new filings.

MaxExtractionAttempts The maximum number of times the ReportBuilder will attempt to extract the

contents of a zip file before treating the file as invalid.

MaxBuilderThreads The maximum number of threads that can be used to build reports at a given

time. The # of threads should be configured based on the CPU setting.

DispatcherURI Specified the location of the dispatcher. For example:

Tcp://dev6:9501/ReportDispatcherServer

PortNumber Remoting property. Specify the port number used for communication.

ServerKey Remoting property. Specify the server name used for communication.

EndPoint Remoting property. Specify the endpoint server name used for communication.

Figure 10 Description of Configuration Items for a Builder 

A builder is a Windows Services program that is started by StartServices.bat. The current SEC

implementation of the rendering engine starts two builders, ReportBuilderSEC and

ReportBuilderPreview, after starting ReportBuilderDispatcher. When the StartServices batch file is

executed, the Aucent.XBRLReportBuilder.Builder.exe process begins by invoking the Main() method of 

the ReportBuilderService class. The sole purpose of Main() is to provide the entry point to the builderservice by passing the ReportBuilderService parameter to the ServiceBase.Run () method. The

ServiceBase class, the base class for all Window Services developed with the .NET Framework, calls

the OnStart() method in ReportBuilderService to implement the startup code in

FilingProcessorManager.StartUp().

Page 13: XBRL Rendering Engine Systems Documentation

8/3/2019 XBRL Rendering Engine Systems Documentation

http://slidepdf.com/reader/full/xbrl-rendering-engine-systems-documentation 13/26

13 | P a g e  

Figure 11 High-Level Builder Class Diagram

A timer in FilingProcessorManager.StartUp() is set to periodically check for the presence of filings to

process. If found, a builder thread in FilingProcessorManager.ProcessFilings() is used to perform the

work of generating the “R” files and the Excel Workbook in ReportBuilder.BuildReports() . Since both

the builder and the XBRL Web Server expect to receive files in zipped format, methods in ZipUtilities 

are used to uncompress files to be processed; and compress files generated by the builder.

“R” Files

“R” files are intermediate XML report files created by the rendering engine that contain synthesized

information from an instance document, company-extended and base taxonomies, and SEC business

rendering rules in order to provide a structure useful for both rendering and analysis. By applying a

style sheet, the “R” files can be transformed to HTML-formatted reports, Excel reports or PDF reports

(see Appendix A. “R” File Example).

Page 14: XBRL Rendering Engine Systems Documentation

8/3/2019 XBRL Rendering Engine Systems Documentation

http://slidepdf.com/reader/full/xbrl-rendering-engine-systems-documentation 14/26

14 | P a g e  

Rule-Based Engine

The rendering engine uses an open source rule-based engine, NxBRE, to control the application of 

SEC business rules to the processing of XBRL filings . Although NxBRE offers code for two different

approaches; the Inference Engine and the Flow Engine, the builder service implements the Flow

Engine because of its use of XML configuration files to control the process flow (see Figure 12).

These configuration files are constructed using the rule language as defined in xBusinessRules.xsd and

contain instructions for the execution of custom rule-based adapters.

Figure 12 Overview of NxBRE (Flow Engine)

During initialization, NxBRE processes a master XML configuration file, ReportBuilder.rul, to create a

context that loads the rules. Each rule object is, in turn, defined by a separate configuration file that,

at execution time, is retrieved, parsed, and its custom adapter invoked by the

ObjectLookup.ExecuteRule() method. The advantage of implementing rules in this manner is the

ability to change execution information in any of the rule object configuration files without having to

recompile the source code to activate the change. Figures 13 and 14 show an example of how the

CleanupFlowthroughColumns rule is declared in ReportBuilder.rul and how it is defined in the

CleanupFlowthroughColumns.xml configuration file, respectively.

Page 15: XBRL Rendering Engine Systems Documentation

8/3/2019 XBRL Rendering Engine Systems Documentation

http://slidepdf.com/reader/full/xbrl-rendering-engine-systems-documentation 15/26

15 | P a g e  

Figure 13 Excerpt from ReportBuilder.rulFigure 11. Excerpt from ReportBuilder.rul

Figure 14 CleanupFlowthroughColumns Rule Configuration File

When the builder applies a particular rule (for example the CleanupFlowthroughColumns rule) it first

checks to ensure that the rule has been enabled (Figures 15 and 16). Then a call to the ProcessRule 

method of the RulesRepository class is made with the rule name (for example the

CLEAN_FLOWTHROUGH_COLUMNS_RULE) as a parameter. The NxBRE engine then retrieves the rule

configuration file (for example, CleanupFlowthroughColumns.xml) and executes the appropriate

custom adapter (for example, ReportBuilder.CleanupFlowthroughColumns()) .

Page 16: XBRL Rendering Engine Systems Documentation

8/3/2019 XBRL Rendering Engine Systems Documentation

http://slidepdf.com/reader/full/xbrl-rendering-engine-systems-documentation 16/26

16 | P a g e  

)RU( DFK5XOH

'HILQHG

( [ HFXWHWKH5 XOH

,VWKH5 XOH( QDEOHG"

$ UHWKH5 XOH&RQGLWLRQV0 HW"

<HV

<HV

1R

 Figure 15 Rule-Based Engine Process Flow Diagram

Figure 16 Integration of Report Builder and NxBRE

For a complete listing and description of the rules for the rendering engine, see Appendix B.Rendering Engine Rules. For additional information regarding NxBRE see

http://nxbre.wiki.sourceforge.net/ .

Page 17: XBRL Rendering Engine Systems Documentation

8/3/2019 XBRL Rendering Engine Systems Documentation

http://slidepdf.com/reader/full/xbrl-rendering-engine-systems-documentation 17/26

17 | P a g e  

Logging

The rendering engine uses the EventLog class provided with the Windows .NET Framework to provide

a standard and centralized way to record application processing, status and exception events. This

allows the dispatcher and builder services to write to the event log so that information can be viewed

on a local or remote machine using the Windows Event Viewer (Figure 24).

Figure 17 Event Viewer 

The Event Viewer can be used by the system administrator to customize events logs, such as the size

of the log and whether events are archived or overwritten. Figure 25 shows the properties of the

ReportBuilder event log.

Figure 18 Windows Event Viewer

Page 18: XBRL Rendering Engine Systems Documentation

8/3/2019 XBRL Rendering Engine Systems Documentation

http://slidepdf.com/reader/full/xbrl-rendering-engine-systems-documentation 18/26

18 | P a g e  

The types of events that can be logged for the rendering engine are as follows:

Type Description

Dispatcher starts Log the start date/time

Builder starts Log the start data/timeDispatcher ends Log the end date/time

Builder ends Log the end date time

Builder register with dispatcher Log the registration date/time

Dispatcher found filings and initiated the processing

with a builder

Log the date/time the process starts and the builder

that’s responsible for the processing

Builder starts the processing Log the date/time the process starts and the number

of files received and the number of threads used to

process the batch

Builder completes the processing Log the date/time the process ends and the number

of filings processed

Figure 19 Event Types

A typical sequence of events for the builder service is as follows:

•  XBRL Builder 01 is starting.

•  XBRL Builder 01 found new filings, preparing the system for processing.

•  Start processing 5 filings in XBRL Builder 01

•  XBRL Builder 01 has finished processing. 5 of 5 filings were completed successfully.

Each of the rendering engine services (dispatcher and builders) use the LogManager utility to

interface with the EventLog class (Figure 27). LogManager calls the LogSection class to obtain the log

and source names from each service’s configuration file:

From Aucent.ReportBuilder.Dispatcher.exe.config :

<LogSection logName="ReportBuilder" sourceName="Dispatcher" exclude="None" />

From Aucent.ReportBuilder.Builder.exe.config :

<LogSection logName="ReportBuilder" sourceName="ReportProcessor" exclude="None" />

Default settings in the configuration files for both SECBuilder and PreviewBuilder have both the

services writing to the same ReportBuilder log with log entries identified as ReportProcessor. These

of course can be changed in order to distinguish between entries for SECBuilder and PreviewBuilder,

as follows:

Page 19: XBRL Rendering Engine Systems Documentation

8/3/2019 XBRL Rendering Engine Systems Documentation

http://slidepdf.com/reader/full/xbrl-rendering-engine-systems-documentation 19/26

19 | P a g e  

Aucent.ReportBuilder.Builder.exe.config for SECBuilder :

<LogSection logName="ReportBuilder" sourceName="SECBuilder" exclude="None" />

Aucent.ReportBuilder.Builder.exe.config for PreviewBuilder :

<LogSection logName="ReportBuilder" sourceName="PreviewBuilder" exclude="None" />

) LOLQJ' LVSDWFKHU0 DQDJHU

ULWH/RJ(QWU\ 

' LVSDWFKHU

%XLOGHU

) LOLQJ3URFHVVLQJ0DQDJHU

ULWH/RJ(QWU\ 

/RJ0DQDJHU

7KH

/R J6HFWLRQ

$XFHQW;%5/5HSRUW%XLOGHU

%XLOGHUH[ H

FRQILJ

$XFHQW; %5/5HSRUW%XLOGHU

' LVSDWFKHUH[H

FRQILJ

(YHQW/RJ

ULWH(QWU\ 

 Figure 20 LogManager

Page 20: XBRL Rendering Engine Systems Documentation

8/3/2019 XBRL Rendering Engine Systems Documentation

http://slidepdf.com/reader/full/xbrl-rendering-engine-systems-documentation 20/26

20 | P a g e  

 Appendix A. “R” File Example

The following is an example of an “R” file:

(1)  Header

<Version>1.0.0.3</Version> <hasSegments>false</hasSegments> 

<ReportName>Statement of Income (Excluding Gross Margin A lternative) (Scenario, Unaudited

[Member], USD $)</ReportName> <RoundingOption>In M illions, except Per Share data </RoundingOption> 

(2)  Columns

<Column> <LabelColumn>false</LabelColumn> 

<Id>1</Id> 

- <Labels> 

<Label Id="1" Label="3 Months Ended " /> 

<Label Id="2" Label="August 24, 2008" /> 

</Labels> <CurrencySymbol>$</CurrencySymbol> 

<hasSegments>false</hasSegments> 

<hasScenarios>false</hasScenarios> 

<Segments   /> 

<Scenarios  /> 

- <Units> 

- <Unit> 

<UnitID>USD</UnitID> 

<UnitType>Standard</UnitType> 

- <StandardMeasure> 

<MeasureSchema>http:/ / ww w.xbrl.org/ 2003/iso4217</MeasureSchema> 

<MeasureValue>USD</MeasureValue> 

<MeasureNamespace>iso4217</MeasureNamespace> </StandardMeasure> 

<Scale>0</Scale> </Unit> 

- <Unit> 

<UnitID>USDEPS</UnitID> 

<UnitType>Divide</UnitType> 

- <NumeratorMeasure> 

<MeasureSchema>http:/ / ww w.xbrl.org/ 2003/iso4217</MeasureSchema> 

<MeasureValue>USD</MeasureValue> 

<MeasureNamespace>iso4217</MeasureNamespace> 

</NumeratorMeasure> 

- <DenominatorMeasure> 

<MeasureSchema>http:/ / ww w.xbrl.org/2003/instance</MeasureSchema> 

<MeasureValue>shares</MeasureValue> <MeasureNamespace>xbrli</MeasureNamespace> 

</DenominatorMeasure> 

<Scale>0</Scale> </Unit> 

</Units> 

</Column> 

(3)  Rows

<Row> <Id>1</Id> 

<Label>Net sales</Label> 

Page 21: XBRL Rendering Engine Systems Documentation

8/3/2019 XBRL Rendering Engine Systems Documentation

http://slidepdf.com/reader/full/xbrl-rendering-engine-systems-documentation 21/26

21 | P a g e  

<Level>2</Level> 

<ElementName>us-gaap_SalesRevenueGoodsNet</ElementName> 

<ElementPrefix>us-gaap</ElementPrefix> 

<IsBaseElement>true </IsBaseElement> 

<BalanceType>credit</BalanceType> 

<PeriodType>duration</PeriodType> 

<ElementDataType>monetary</ElementDataType> 

<ShortDefinition>No definition available.</ShortDefinition> <IsReportTitle>false</IsReportTitle> 

<IsSegmentTitle>false</IsSegmentTitle> 

<IsSubReportEnd>false</IsSubReportEnd> 

<IsCalendarTitle>false</IsCalendarTitle> 

<IsTuple>false</IsTuple> 

<IsAbstractGroupTitle>false</IsAbstractGroupTitle > 

<IsBeginningBalance>false</IsBeginningBalance> 

<IsEndingBalance>false</IsEndingBalance> 

<IsEPS>false</IsEPS> 

- <Cells> 

- <Cell> 

<Id>1</Id> 

<ShowCurrencySymbol>true </ShowCurrencySymbol> <IsNumeric>true</IsNumeric> 

<NumericAmount>3497300000</NumericAmount> <RoundedNumericAmount>3497.3</RoundedNumericAmount> 

<NonNumbericText  /> 

<NonNumericTextHeader  /> 

<FootnoteIndexer  /> 

<hasSegments>false</hasSegments> 

<hasScenarios>false</hasScenarios> 

</Cell> 

- <Cell> 

<Id>2</Id> 

<ShowCurrencySymbol>true </ShowCurrencySymbol> 

<IsNumeric>true</IsNumeric> 

<NumericAmount>3072000000</NumericAmount> <RoundedNumericAmount>3072</RoundedNumericAmount> 

<NonNumbericText  /> 

<NonNumericTextHeader  /> 

<FootnoteIndexer  /> 

<hasSegments>false</hasSegments> 

<hasScenarios>false</hasScenarios> 

</Cell> 

</Cells> 

<ElementDefenition>Aggregated revenue during the period from the sale of goods in the normal course of 

business, after deducting returns, allowances and discounts. </ElementDefenition> <ElementReferences>Reference 1: http:/ / ww w.xbrl.org/2003/role/ presentationRef 

-Pub lisher SEC-Name Regulation S-X (SX)-Number 210-Section 03-Paragraph (b)-Subparagraph 1-Article 5</ElementReferences> 

<IsTotalLabel>false</IsTotalLabel> 

</Row> 

Page 22: XBRL Rendering Engine Systems Documentation

8/3/2019 XBRL Rendering Engine Systems Documentation

http://slidepdf.com/reader/full/xbrl-rendering-engine-systems-documentation 22/26

22 | P a g e  

The following are the rendered results of the above “R” file once a stylesheet has been applied and the

resulting HTML displayed in a browser:

Note: some of the information included in the R files are used to render additional information for each lineitem. In the above example, a java script was used to display the details (including definition, references and

element metadata) when the user clicked on the label “Net Sales”.

Page 23: XBRL Rendering Engine Systems Documentation

8/3/2019 XBRL Rendering Engine Systems Documentation

http://slidepdf.com/reader/full/xbrl-rendering-engine-systems-documentation 23/26

23 | P a g e  

 Appendix B. Rendering Engine Rules

Rule Description

CleanupFlowthroughColumns Examines columns in each report to determine if they have "unique"

elements. If all elements belong to another report, then the column is

considered to be a "flow-through" and is removed from the report.

CleanupFlowthroughReports Applies only to 2005 GAAP taxonomies. This rule examines a report for

flow-through columns (columns that do not have any unique elements)

and removes any that are found. 

ColumnHeaders Loops through all columns in a Report to determine header labels using

the formats in this rule.

CurrencySymbol Examines rows in a report to determine if a currency symbol should be

displayed.

EquityStatement Parses an Equity Statement to determine the reporting periods used by

the report and shifts the reporting periods to rows on the grid. This is

repeated for the complete set of elements is for each reporting period.

Segments head the columns.

InstantAndDuration Parses the data in a Report to see if there are any Instant and Duration

columns that contain the same end date and merge these columns into a

single column to save space and improve readability.

PreferredLang Parses the supported languages in the taxonomy looking for “en-us”. If 

found, it becomes the default language for the report. Otherwise the first

supported language in the taxonomy is used.

ProcessBeginningEndingBalance Compares each cell of the "Beginning Balance" row in the report and

compares the "Period End Date" with other cells in the row. If the

"Period End Date" is the same or one day before the "Period Start Date"

of another cell, "shift" (copy) the balance to this cell.

PromoteSharedLabels Parses the data in a Report to determine if there are segments, scenarios

or currency codes that are shared by the entire report. If this is found to

be the case, then these labels will be promoted from the column headers

to the report header.

Rounding Parses data in a Report to determine the level of rounding that should be

applied to the data. In addition to determining the rounding level the rule

also tries to determine if rounding should be applied to “share” data.

Segments Parses data in a Report to determine if there is Segmented data that can

be displayed in vertical format. Criteria for displaying data in vertical

format are as follows:

(1) All Consolidated and the reporting periods for covers each of theSegmented data sets.

(2) The Report does not contain Consolidated data, but one of the

Segmented data sets contains reporting periods that cover all of the

reporting periods for the remaining Segmented data sets.

TotalLabel Determines whether a row should be marked as TotalLabel row and its

value therefore underlined.

Page 24: XBRL Rendering Engine Systems Documentation

8/3/2019 XBRL Rendering Engine Systems Documentation

http://slidepdf.com/reader/full/xbrl-rendering-engine-systems-documentation 24/26

24 | P a g e  

Contents of ReportBuilder.rul Configuration File:

<?xml version="1.0"?>

<ArrayOfRule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance " 

xmlns:xsd="http://www.w3.org/2001/XMLSchema ">

<Rule>

<FriendlyName>CleanupFlowthroughColumns</FriendlyName>

<RuleFile>CleanupFlowthroughColumns.xml</RuleFile><IsRequired>true</IsRequired>

<Enabled>true</Enabled>

</Rule>

<Rule>

<FriendlyName>CleanupFlowThroughReports</FriendlyName>

<RuleFile>CleanupFlowThroughReports.xml</RuleFile>

<IsRequired>true</IsRequired>

<Enabled>true</Enabled>

</Rule>

<Rule>

<FriendlyName>InstantAndDuration</FriendlyName>

<RuleFile>InstantAndDuration.xml</RuleFile>

<IsRequired>true</IsRequired>

<Enabled>true</Enabled>

</Rule>

<Rule>

<FriendlyName>PreferredLang</FriendlyName><RuleFile>PreferredLang.xml</RuleFile>

<IsRequired>true</IsRequired>

<Enabled>true</Enabled>

</Rule>

<Rule>

<FriendlyName>ProcessBeginningEndingBalance </FriendlyName>

<RuleFile>ProcessBeginningEndingBalance.xml </RuleFile>

<IsRequired>true</IsRequired>

<Enabled>true</Enabled>

</Rule>

<Rule>

<FriendlyName>PromoteSharedLabels</FriendlyName>

<RuleFile>PromoteSharedLabels.xml </RuleFile>

<IsRequired>true</IsRequired>

<Enabled>true</Enabled>

</Rule>

<Rule>

<FriendlyName>Rounding</FriendlyName>

<RuleFile>Rounding.xml</RuleFile>

<IsRequired>true</IsRequired>

<Enabled>true</Enabled>

</Rule>

<Rule>

<FriendlyName>Segments</FriendlyName>

<RuleFile>Segments.xml</RuleFile>

<IsRequired>true</IsRequired>

<Enabled>true</Enabled>

</Rule>

<Rule>

<FriendlyName>ColumnHeaders</FriendlyName>

<RuleFile>ColumnHeaders.xml</RuleFile>

<IsRequired>true</IsRequired>

<Enabled>true</Enabled>

</Rule>

<Rule>

<FriendlyName>EquityStatement</FriendlyName>

<RuleFile>EquityStatement.xml</RuleFile>

<IsRequired>true</IsRequired>

<Enabled>true</Enabled>

</Rule>

<Rule>

<FriendlyName>TotalLabel</FriendlyName>

<RuleFile>TotalLabel.xml</RuleFile>

<IsRequired>false</IsRequired>

Page 25: XBRL Rendering Engine Systems Documentation

8/3/2019 XBRL Rendering Engine Systems Documentation

http://slidepdf.com/reader/full/xbrl-rendering-engine-systems-documentation 25/26

25 | P a g e  

<Enabled>true</Enabled>

</Rule>

<Rule>

<FriendlyName>CurrencySymbol</FriendlyName>

<RuleFile>CurrencySymbol.xml</RuleFile>

<IsRequired>false</IsRequired>

<Enabled>true</Enabled>

</Rule>

<Rule><FriendlyName>AbstractHeader</FriendlyName>

<RuleFile>AbstractHeader.xml</RuleFile>

<IsRequired>false</IsRequired>

<Enabled>true</Enabled>

</Rule>

<Rule>

<FriendlyName>GenerateExcelFile</FriendlyName>

<RuleFile>GenerateExcelFile.xml</RuleFile>

<IsRequired>false</IsRequired>

<Enabled>true</Enabled>

</Rule>

</ArrayOfRule>

Page 26: XBRL Rendering Engine Systems Documentation

8/3/2019 XBRL Rendering Engine Systems Documentation

http://slidepdf.com/reader/full/xbrl-rendering-engine-systems-documentation 26/26

  Appendix C. Error Messages

Exception Description Exception Produced

1122 No schema file Error output to text file: Cannot find taxonomy filefor the filing. 

1123 No label linkbase file Error output to text file: Call to BuildReports failed

for the filing. For example: Exception thrown in

BuildReports: Namespace prefix ‘xsd’ is not defined. 

1124 No presentation linkbase file Error output to text file: Call to BuildReports failed

for the filing. For example: Exception thrown in

BuildReports: Namespace prefix ‘xsd’ is not defined. 

1125 No instance doc Error output to text file: Cannot find instance

document for the filing. 

1126 Poorly formed instance doc Error output to text file: Call to BuildReports failed

for the filing. For example: Unable to load theinstance document: Unexpected end of file has

occurred. The following elements are not closed:

usfr-pte:DeferredIncomeTaxes, xbrl.Line 1084,

position1. 

1127 Zip file contains one subfolder Error output to text file: Cannot extract files for

filing. The max number of retries has been reached,

removing the zip file from the Filings folder. 

1128 Zip file contains nested subfolders Error output to text file: Cannot extract files for

filing. The max number of retries has been reached,

removing the zip file from the Filings folder. 

1129 Filing is not zipped Error output to text file: None. The files will just sitin the filing folder.

1130 Instance doc does not contain the work

“context”

Error output to text file: Call to BuildReports failed

for the filing. For example: Unable to load the

instance document: Index was outside the bounds of 

the array. 

1131 Instance doc does not have a conforming

Edgar name

Error output to text file: Cannot find instance

document for filing. 

1132 Filing has 2 instance docs – both with

taxonomies

Error output to text file: None. However only the

first filing will be rendered. The second one will be

ignored.

1133 Filing has 2 instance docs – only secondone has taxonomy Error output to text file: Cannot find taxonomy filefor filing.

1134 Filings has wrong taxonomy file Error output to text file: Cannot find taxonomy file

for filing.