Abstract:
A design in a markup language for rendering a report may be generated such that the design and conditions associated therewith are written in a single markup language. Based on this arrangement, both the design and the conditions may be parsed according to a pre-defined grammar to facilitate rapid debugging.

Description:
TECHNICAL FIELD  
       [0001]     The subject matter described herein relates to conditional formatted reporting.  
       BACKGROUND  
       [0002]     Enterprises are increasingly generating reports to characterize their business and scientific data. Often, these reports include data arranged according to a pre-defined design template. The creation of such reports is referred to as “formatted reporting.” 
         [0003]     Typical report designs, for example a balance sheet, contain pages with a list of detail rows, a header row on top, and a footer row at the bottom. With such reports, there is usually no need to define the design of each and every detail row. It is sufficient to define the design of just one detail row for a report renderer (e.g., software that produces the final report, for example in HTML- or PDF-format) to apply automatically once to every detail data row during rendering.  
         [0004]     When generating a report design, those portions of a report which are to be rendered in an appearance different from other portions of a report must be defined. For example, a report design (also referred to herein as a design) may define that rows containing revenues of a company&#39;s French subsidiaries are to be rendered with green background color while all other subsidiaries are rendered with a white background color.  
         [0005]     Reporting software packages permit the generation of a design in which conditions may be attached thereto. Only when the attached condition holds during rendering is the report rendered using a format defined by the design. One example is a “zebra” pattern report template in which every odd report detail row is to be rendered with a light blue background and every even report detail row is to be rendered with a dark blue background.  
         [0006]     In design tools of reporting software packages, conditions have conventionally been expressed in a proprietary non-markup language. However, reporting software packages are increasingly moving from an arrangement in which designs are stored in proprietary binary format to an arrangement in which designs are stored in textual formats with content expressed in a markup language (such as XML (eXtensible Markup Language)). With the textual format, stored content, which is expressed in a markup language, may be read and understood by a user. In contrast, proprietary binary content cannot be deciphered by users. Moreover, the structure of content expressed in a markup language can be defined by a grammar (see, for example, DTD (Document Type Definition), XML Schema, etc.). By applying such a grammar to content by readily available software tools (Validating XML Parser), the content can be easily checked for syntactical correctness and integrity.  
         [0007]     Reporting software packages that permit conditional formatting generally fall in two categories: they either store the design and the conditions in a proprietary, binary format or store the design in a markup language with the conditions embedded into the markup as string literals of an non-markup language (e.g., Java, etc.). While these reporting software packages offer a high degree of flexibility in the final appearance of a rendered report through the use of complicated conditions, such packages as well as rendered reports with faulty visualizations are often difficult to debug and/or require specialized parsing tools which are costly to develop and increase processing times and resource consumption.  
       SUMMARY  
       [0008]     In one aspect, an interface is provided that is operable to enable the generation of a design in a markup language (e.g., XML) for rendering a report. Such a design may specify one or more sections having different visual formats and associated conditions for triggering when such visual formats should be utilized in rendering a report. The conditions are written in the same markup language as the design. By providing the design and the conditions in the same markup language, the interface is additionally operable to parse the design and the conditions according to a pre-defined grammar to determine whether the design and the at least one condition are syntactically correct.  
         [0009]     The design may optionally include a written description of a visual format specified in each section to facilitate, for example, debugging of the design. For example, during parsing, which may occur during design-time or during run-time, those portions of the design and condition that are not syntactically correct as well as the written descriptions may be displayed.  
         [0010]     Each condition may also comprise one or more expressions which define whether data used to generate the report triggers the conditions. When the report is being rendered, portions of the report will be formatted according to the visual format for each condition having a true expression.  
         [0011]     In some variations, at least one of the design, the grammar, and the data used to populate the report, may be retrieved from a data repository accessible via a communications network such as the Internet. Once such information is obtained, the report may be rendered in, for example, a web browser or other graphical user interface. The report may be rendered in a variety of formats such as HTML, Portable Document Format, and the like.  
         [0012]     In another aspect, an apparatus may comprise an XML repository, a grammar repository, a parser, and a verification unit. The XML repository is operable to store XML documents containing a design and conditions written in XML. The grammar repository is operable to store XML Schema definitions for the XML documents stored in the XML repository. The parser (e.g., an XML validating parser) is operable to retrieve an XML document from the XML repository and a corresponding XML Schema definition for the grammar repository so that the verification unit can provide an indication whether the design and the at least one condition in a retrieved XML document are syntactically correct.  
         [0013]     The apparatus, may in some variations comprise a graphical user interface (e.g., a web browser) to display portions of the retrieved XML document that are not syntactically correct. The apparatus may additionally include or be coupled to a data repository from which the parser, during run-time, retrieves data from the repository to render a report populated with such retrieved data according to an XML document obtained from the XML repository containing a design.  
         [0014]     Computer program products, which may be embodied on computer readable-material, are also described. Such computer program products may include executable instructions that cause a computer system to conduct one or more of the method acts described herein.  
         [0015]     Similarly, computer systems are also described that may include a processor and a memory coupled to the processor. The memory may encode one or more programs that cause the processor to perform one or more of the method acts described herein.  
         [0016]     The subject matter described herein provides many advantages. For example, by providing a grammar for a document containing a design to generate a report and the conditions contained therein, the syntax of the document can be easily verified. With such an arrangement, conditions that are either incorrectly designed or improperly stored in a storage medium can be avoided thereby minimizing errors during rendering of reports which are difficult to debug (especially if the conditions are in a proprietary binary format). In addition, the subject matter described herein obviates the need for specialized software tools which are able to verify a syntax of a design written in a first language and to verify conditions associated with the design written in a second language.  
         [0017]     The details of one or more variations of the subject matter described herein are set forth in the accompanying drawings and the description below. Other features and advantages of the subject matter described herein will be apparent from the description and drawings, and from the claims. 
     
    
     DESCRIPTION OF DRAWINGS  
       [0018]      FIG. 1  is a process flow diagram illustrating a method of enabling the generation of a design for a report and for parsing the report;  
         [0019]      FIG. 2  is a process flow diagram illustrating a method of retrieving a design and for rendering a report according to the retrieved design;  
         [0020]      FIG. 3  is a schematic diagram of an apparatus to determine whether a retrieved XML document is syntactically correct; and  
         [0021]      FIG. 4  illustrates a sample formatted report. 
     
    
       [0022]     Like reference symbols in the various drawings indicate like elements.  
       DETAILED DESCRIPTION  
       [0023]      FIG. 1  is a process flow diagram illustrating a method  100  in which, at  110 , the generation of a design in a markup language for rendering a report (based on, for example, business or scientific data). The design specifies at least one section having a visual format and at least one associated condition. The condition is written in the same markup language as the design and additionally defines at least one criterion for rendering the report according to the corresponding visual format. Thereafter, whether during design-time or during run-time, the parsing of the design and the at least one condition according to a pre-defined grammar is enabled, at  120 , to determine whether the design and the at least one condition are syntactically correct.  
         [0024]      FIG. 2  is a process flow diagram illustrating a computer-implemented method  200 , in which, at  210 , a design in a markup language is loaded. The design may be used to render a report and specifies at least one section having a visual format and at least one associated condition. The at least one condition is written in the markup language and defines criteria for rendering the report according to the corresponding visual format. Thereafter, the report is rendered (in, for example, a web browser by a rendering component), according to the design and the at least one condition using data (for example, business or scientific data).  
         [0025]      FIG. 3  is a schematic diagram of an apparatus  300  comprising an XML repository  310 , a grammar repository  320 , a parser  330 , and a verification unit  340 . The XML repository is operable to store XML documents containing a design for rendering a report, the design specifying at least one section having a visual format and at least one associated condition, the at least one condition being written in XML and defining at least one criterion for rendering the report according to the corresponding visual format. The grammar repository  320  is operable to store XML Schema definitions for the XML documents. The parser is operable to retrieve an XML document from the XML repository and a corresponding XML Schema definition for the grammar repository. The verification unit  330  is coupled to the parser and is operable to provide an indication whether the design and the at least one condition in a retrieved XML document are syntactically correct. Optionally, the parser may also be coupled to a data repository which houses the data used to generate the report.  
         [0026]     A design may consist of one or more parts called sections (&lt;section/&gt;tags). While the illustration of a design in a markup language below contains only one section, it will be appreciated that a plurality of sections may be incorporated into a design. Every section may have a list of one or more conditions (within the &lt;conditions/&gt;tag). Every condition (&lt;condition/&gt;tag) may have an expression (&lt;expression/&gt;tag) and may optionally include a description of the visual representation of this portion of the report (&lt;sectionlayout/&gt;tag). During rendering the report, at runtime, the expression is evaluated by the report renderer (i.e., software that produces a final report, for example a report in HTML or PDF format). If the expression is true then the visual representation of the associated condition is used for rendering this part of the report. The expressions in the illustration below are used to evaluate even-or-oddness of the current row number during rendering of report rows. These expressions are used to determine whether a row should be rendered with a light or a dark black background color.  
         [0027]     A illustrative design snippet for generating a “zebra” style report, such as the report illustrated in  FIG. 4 , is provided below:  
                                                   &lt;?xml version=“1.0” encoding=“iso-8859-1”?&gt;            &lt;section&gt;             &lt;conditions&gt;              &lt;condition&gt;               &lt;expression&gt;                &lt;iseven&gt;                 &lt;rowcounter/&gt;                &lt;/iseven&gt;                &lt;equal/&gt;                &lt;true/&gt;               &lt;/expression&gt;               &lt;sectionlayout&gt;                &lt;!-- Information describing the design of a row                with dark blue background here. Omitted for brevity. --&gt;               &lt;/sectionlayout &gt;              &lt;/condition&gt;              &lt;condition&gt;               &lt;expression&gt;                &lt;isodd&gt;                 &lt;rowcounter/&gt;                &lt;/isodd&gt;                &lt;equal/&gt;                &lt;true/&gt;               &lt;/expression&gt;               &lt; sectionlayout &gt;                &lt;!-- Information describing the design of a row                with light blue background here. Omitted for brevity. --&gt;               &lt;/sectionlayout &gt;              &lt;/condition&gt;             &lt;/conditions&gt;            &lt;/section&gt;                      
 
         [0028]     Applying a pre-defined grammar to the design above with a validating parser, such as an XML parser, will reveal whether the design and the conditions are syntactically correct. The validating XML parser will report any deviation from syntactical correctness. Such reporting may comprise, for example, a visual representation (e.g., highlight or other marking) of each deviation from the pre-defined grammar.  
         [0029]     An illustrative grammar snippet for use in parsing a design, whether during design-time of the design or during run-time, that may be used to generate a “zebra” style report, such as the report illustrated in  FIG. 4 , is provided below:  
                                    &lt;?xml version=“1.0” encoding=“iso-8859-1”?&gt;        &lt;xsd:schema xmlns:xsd=“http://www.w3.org/2001/XMLSchema”&gt;        &lt;xsd:element name=“section”&gt;         &lt;xsd:complexType&gt;          &lt;xsd:sequence&gt;           &lt;xsd:element name=“conditions” type=“conditions_type”            minOccurs=“0” maxOccurs=“1”/&gt;          &lt;/xsd:sequence&gt;         &lt;/xsd:complexType&gt;        &lt;/xsd:element&gt;        &lt;xsd:complexType name=“conditions_type”&gt;         &lt;xsd:sequence&gt;          &lt;xsd:element name=“condition” type=“condition_type”           minOccurs=“0” maxOccurs=“unbounded/”&gt;         &lt;/xsd:sequence&gt;        &lt;/xsd:complexType&gt;        &lt;xsd:complexType name=“condition_type”&gt;         &lt;xsd:sequence&gt;          &lt;xsd:element name=“expression” type=“expression_type”/&gt;          &lt;xsd:element name=“sectionlayout” type=“sectionlayout_type”/&gt;         &lt;/xsd:sequence&gt;        &lt;/xsd:complexType&gt;        &lt;xsd:complexType name=“expression_type”&gt;         &lt;xsd:sequence&gt;          &lt;xsd:group ref=“function_type”/&gt;          &lt;xsd:element name=“equal”/&gt;          &lt;xsd:group ref=“boolvalue_type”/&gt;         &lt;/xsd:sequence&gt;        &lt;/xsd:complexType&gt;        &lt;xsd:group name=“function_type”&gt;         &lt;xsd:choice&gt;          &lt;xsd:element name=“iseven” type=“iseven_type”/&gt;          &lt;xsd:element name=“isodd” type=“isodd_type”/&gt;         &lt;/xsd:choice&gt;        &lt;/xsd:group&gt;        &lt;xsd:complexType name=“iseven_type”&gt;         &lt;xsd:sequence&gt;          &lt;xsd:element name=“rowcounter”/&gt;         &lt;/xsd:sequence&gt;        &lt;/xsd:complexType&gt;        &lt;xsd:complexType name=“isodd_type”&gt;         &lt;xsd:sequence&gt;          &lt;xsd:element name=“rowcounter”/&gt;         &lt;/xsd:sequence&gt;        &lt;/xsd:complexType&gt;        &lt;xsd:group name=“boolvalue_type”&gt;         &lt;xsd:choice&gt;          &lt;xsd:element name=“true”/&gt;          &lt;xsd:element name=“false”/&gt;         &lt;/xsd:choice&gt;        &lt;/xsd:group&gt;        &lt;xsd:complexType name=“sectionlayout_type”&gt;         &lt;xsd:sequence&gt;          &lt;!-- Omitted for brevity --&gt;         &lt;/xsd:sequence&gt;        &lt;/xsd:complexType&gt;       &lt;/xsd:schema&gt;                  
 
         [0030]     Various implementations of the subject matter described herein may be realized in digital electronic circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and/or combinations thereof. These various implementations may include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.  
         [0031]     These computer programs (also known as programs, software, software applications or code) include machine instructions for a programmable processor, and may be implemented in a high-level procedural and/or object-oriented programming language, and/or in assembly/machine language. As used herein, the term “machine-readable medium” refers to any computer program product, apparatus and/or device (e.g., magnetic discs, optical disks, memory, Programmable Logic Devices (PLDs)) used to provide machine instructions and/or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term “machine-readable signal” refers to any signal used to provide machine instructions and/or data to a programmable processor.  
         [0032]     To provide for interaction with a user, the subject matter described herein may be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user and a keyboard and a pointing device (e.g., a mouse or a trackball) by which the user may provide input to the computer. Other kinds of devices may be used to provide for interaction with a user as well; for example, feedback provided to the user may be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback); and input from the user may be received in any form, including acoustic, speech, or tactile input.  
         [0033]     The subject matter described herein may be implemented in a computing system that includes a back-end component (e.g., as a data server), or that includes a middleware component (e.g., an application server), or that includes a front-end component (e.g., a client computer having a graphical user interface or a Web browser through which a user may interact with an implementation of the subject matter described herein), or any combination of such back-end, middleware, or front-end components. The components of the system may be interconnected by any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include a local area network (“LAN”), a wide area network (“WAN”), and the Internet.  
         [0034]     The computing system may include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.  
         [0035]     Although a few variations have been described in detail above, other modifications are possible. For example, the logic flow depicted in the accompanying figures and described herein do not require the particular order shown, or sequential order, to achieve desirable results. Other embodiments may be within the scope of the following claims.