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
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
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.
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
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
8/3/2019 XBRL Rendering Engine Systems Documentation
http://slidepdf.com/reader/full/xbrl-rendering-engine-systems-documentation 6/26
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.
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.
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 ()
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
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)
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().
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).
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.
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()) .
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/ .
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
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:
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
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>
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>
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”.
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.
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>
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>
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.