Customizing report writer template

In report writer, the templates for model elements and diagrams, such as the basic information template, are formed by XML, and can be customized. By customizing a template, you can make report writer print additional customized text, to make it query other properties you wanted, or to remove part of the unneeded content, like a row in a table.

Customizing an existing template

  1. Right click on a template and select Edit... from the popup menu.
    To edit a template
    To edit a template
  2. Edit the template in the Edit Template dialog box.
    The template editor
    The template editor
    NOTE: You can save your work from time to time by pressing Save.
  3. Click OK to confirm editing.
    NOTE: If you have chosen Refresh Report when OK, the report will refresh itself to apply the changes you have made.

Creating a template from existing template

  1. Right click on a template and select Duplicate... from the popup menu.
    To duplicate a template
    To duplicate a template
  2. Fill in the Duplicate Template dialog box and click OK.
    The duplicate template dialog box
    The duplicate template dialog box
    Below is a description of the dialog box.
    Field Description
    File A template is an XML file which defines the structure of report content. By default, it will be stored in the resources folder of installation folder.
    ID The uniqie ID for template.
    Name The name of template, which will appear in the template list in template pane.

    Details of duplicate template dialog box
  3. Click OK to confirm editing.
    NOTE: If you have chosen Refresh Report when OK, the report will refresh itself to apply the changes you have made.

The template editor

The template editor is where you edit a template. The template is in XML format. Within the editor, you may make use of hotkey to perform operations like copy, paste and delete. Below is a description of common hotkeys.

Function Hotkey
Copy Ctrl-C
Paste Ctrl-V
Delete Delete
Cut Ctrl-X
Hotkeys for template editor

As most of the templates are in tabular forms. We recommend users who want to add new rows to highlight and copy a trunk of row content...

Select existing content to copy and start editing
Select existing content to copy and start editing

and edit the custom text and properties to query.

Template content with respect to report content
Template content with respect to report content

Template schema

 

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
        targetNamespace="http://www.visual-paradigm.com/2008/ReportWriter1.1"
        xmlns:rw="http://www.visual-paradigm.com/2008/ReportWriter1.1"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xsd:element name="Template">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element ref="rw:TemplateInformationHeader"/>
                <xsd:choice>
                    <xsd:element ref="rw:ElementBaseInitiationBlock"/>
                    <xsd:element ref="rw:DiagramBaseInitiationBlock"/>
                    <xsd:element ref="rw:DiagramElementBaseInitiationBlock"/>
                    <xsd:element ref="rw:ProjectBaseInitiationBlock"/>
                </xsd:choice>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="TemplateInformationHeader">
        <xsd:complexType>
            <xsd:attribute name="id" type="xsd:string" use="optional"/>
            <xsd:attribute name="name" type="xsd:string" use="required"/>
            <xsd:attribute name="description" type="xsd:string" use="optional"/>
            <xsd:attribute name="default" type="xsd:boolean" use="optional" default="false"/>
            <xsd:attribute name="type" use="optional" default="text">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:NMTOKEN">
                        <xsd:enumeration value="text"/>
                        <xsd:enumeration value="image"/>
                        <xsd:enumeration value="table"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="ElementBaseInitiationBlock">
        <xsd:complexType>
            <xsd:sequence>
                <!-- any element after the comment "CONTENTS"-->
                <xsd:any minOccurs="1" maxOccurs="unbounded"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="DiagramBaseInitiationBlock">
        <xsd:complexType>
            <xsd:sequence>
                <!-- any element after the comment "CONTENTS"-->
                <xsd:any minOccurs="1" maxOccurs="unbounded"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="DiagramElementBaseInitiationBlock">
        <xsd:complexType>
            <xsd:sequence>
                <!-- any element after the comment "CONTENTS"-->
                <xsd:any minOccurs="1" maxOccurs="unbounded"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="ProjectBaseInitiationBlock">
        <xsd:complexType>
            <xsd:sequence>
                <!-- any element after the comment "CONTENTS"-->
                <xsd:any minOccurs="1" maxOccurs="unbounded"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    
    <!-- CONTENTS -->
    
    <!-- Breaks, Text -->
    <xsd:element name="ParagraphBreak"/>
    <xsd:element name="PageBreak"/>
    <xsd:element name="StaticText">
        <xsd:complexType>
            <xsd:attribute name="content" type="xsd:string" use="optional"/>
            <xsd:attribute name="isBold" type="xsd:boolean" use="optional" default="false"/>
            <xsd:attribute name="isItalic" type="xsd:boolean" use="optional" default="false"/>
            <xsd:attribute name="fontFamily" type="xsd:string" use="optional" default="Times New Roman"/>
            <xsd:attribute name="alignment" use="optional" default="left">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:NMTOKEN">
                        <xsd:enumeration value="left"/>
                        <xsd:enumeration value="center"/>
                        <xsd:enumeration value="right"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute name="fontSize" type="xsd:integer" use="optional" default="12"/>
            <xsd:attribute name="style" type="xsd:string" use="optional"/>
            <xsd:attribute name="numberingLevel" type="xsd:short" use="optional"/>
            <xsd:attribute name="foreColor" type="rw:color" use="optional"/>
            <xsd:attribute name="indentation" type="xsd:double" use="optional"/>
        </xsd:complexType>
    </xsd:element>
    
    <!-- Table -->
    <xsd:element name="TableBlock">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element ref="rw:TableRow" minOccurs="0" maxOccurs="unbounded"/>
            </xsd:sequence>
            <xsd:attribute name="tableWidth" type="xsd:integer" use="optional" default="10000">
                <xsd:annotation>
                    <xsd:documentation>Document is in A4 size (21000*27000)</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="colWidths" type="rw:integers" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    @colWidths is relative to @tableWidth.
                    For example,  tableWidth="15000" colWidths="10, 20, 70", finally the columns widths will be:
                    1500 (15000*10/(10+20+70))
                    3000 (15000*20/(10+20+70))
                    10500  (15000*70/(10+20+70))
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="alignment"  use="optional" default="center">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:NMTOKEN">
                        <xsd:enumeration value="left"/>
                        <xsd:enumeration value="center"/>
                        <xsd:enumeration value="right"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute name="rowBackgroundColors" type="rw:colors" use="optional"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="TableRow">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element ref="rw:TableCell" minOccurs="0" maxOccurs="unbounded"/>
            </xsd:sequence>
            <xsd:attribute name="height" type="xsd:integer" use="optional"/>
            <xsd:attribute name="backgroundColor" type="rw:color" use="optional"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="TableCell">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element ref="rw:TableCell" minOccurs="0" maxOccurs="unbounded"/>
            </xsd:sequence>
            <xsd:attribute name="topBorderEnable" type="xsd:boolean" use="optional" default="true"/>
            <xsd:attribute name="bottomBorderEnable" type="xsd:boolean" use="optional" default="true"/>
            <xsd:attribute name="leftBorderEnable" type="xsd:boolean" use="optional" default="true"/>
            <xsd:attribute name="rightBorderEnable" type="xsd:boolean" use="optional" default="true"/>
            <xsd:attribute name="color" type="rw:color" use="optional"/>
            <xsd:attribute name="splitted" type="xsd:boolean" use="optional" default="false"/>
        </xsd:complexType>
    </xsd:element>
    
    <!--
    Iteration, retrieve a list of values
    (IterationBlock, ForEach, ForEachSimpleRelationship, ForEachRelationshipEnd, ForEachSubDiagram, ForEachOwnerDiagram, ForEachDiagram)
    -->
    <xsd:element name="IterationBlock">
        <xsd:annotation>
            <xsd:documentation>
            Retrieve children from Project/Model/Diagram/DiagramElement.
            Project and Model will be retrieved children Model.
            Diagram and DiagramElement will be retrieved children DiagramElement.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <!-- any element after the comment "CONTENTS"-->
                <xsd:any minOccurs="1" maxOccurs="unbounded"/>
            </xsd:sequence>
            <xsd:attribute name="elementType" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>Deprecated, replaced by @modelType (Model's modelType or DiagramElement's shapeType)</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="modelType" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>Filter children by modelType.</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="elementTypes" type="rw:strings" use="optional">
                <xsd:annotation>
                    <xsd:documentation>Deprecated, replaced by @modelTypes (Model's modelTypes or DiagramElement's shapeTypes)</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="modelTypes" type="rw:strings" use="optional">
                <xsd:annotation>
                    <xsd:documentation>Filter children by modelTypes. If @modelType is defined, @modelTypes will be ignored.</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="name" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>Filter children by name.</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="filterHidden" type="xsd:boolean" use="optional" default="false">
                <xsd:annotation>
                    <xsd:documentation>
                    Filter hidden children DiagramElement.
                    For retrieve from Diagram/DiagramElement only.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="includeConnector" type="xsd:boolean" use="optional" default="false">
                <xsd:annotation>
                    <xsd:documentation>Deprecated, replaced by @includeConnectors</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="includeConnectors" type="xsd:boolean" use="optional" default="false">
                <xsd:annotation>
                    <xsd:documentation>
                    Retrieve Shape+Connector from Diagram. Otherwise, only the Shape will retrived.
                    For retrieve from Diagram only.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="byBounds" type="xsd:boolean" use="optional" default="false">
                <xsd:annotation>
                    <xsd:documentation>
                    Retrieve DiagramElement by Bounds.
                    sometimes, the parent shape "contains" another shape. But another shape is not child of the shape.
                    e.g. BPGroup won't be parent of the shapes.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="byBoundsInAllLevel" type="xsd:boolean" use="optional" default="false"/>
            <xsd:attribute name="allLevel" type="xsd:boolean" use="optional" default="false">
                <xsd:annotation>
                    <xsd:documentation>
                    Retrieve all models of the project. Otherwise, only the "root level models (models have no parent model)" will be retrieved.
                    For retrieve from Project only.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="ignoreParagraphBreakForLastModel" type="xsd:boolean" use="optional" default="false"/>
            <xsd:attribute name="breakString" type="xsd:string" use="optional"/>
            <xsd:attribute name="sortBy" type="xsd:NMTOKEN" use="optional">
                <xsd:annotation>
                    <xsd:documentation>Deprecated, replaced by @sortBys</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="sortBys" type="rw:strings" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    Sort by following options:
                    name | modelType | property
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="sortProperty" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    If sort by property, @sortProperty is required to specified sort by which property
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="sortValues" type="rw:strings" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    If sort by property, @sortValues can be specified for sort by values of the property
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="defaultPropertyValue" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    If sort by property, @defaultPropertyValue can be specified for the default value of the model has no this property value
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="descendingSort" type="xsd:boolean" use="optional" default="false">
                <xsd:annotation>
                    <xsd:documentation>Deprecated, replaced by @descendingSort</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="descendingSorts" type="rw:booleans" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    Sorting in descending order?
                    numbers of descendingSorts should be same as sortBys
                    e.g. @sortBy="name, modelType" @descendingSorts="true, false"
                    then, sort by name will be descending, sort by modelType will be ascending
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="identifier" type="xsd:string" use="optional"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="ForEach">
        <xsd:annotation>
            <xsd:documentation>Retrieve Model values from Model's property.</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <!-- any element after the comment "CONTENTS"-->
                <xsd:any minOccurs="1" maxOccurs="unbounded"/>
            </xsd:sequence>
            <xsd:attribute name="property" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>Retrieve from which proprety.</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="ignoreParagraphBreakForLastModel" type="xsd:boolean" use="optional" default="false"/>
            <xsd:attribute name="breakString" type="xsd:string" use="optional"/>
            <xsd:attribute name="sortBy" type="xsd:NMTOKEN" use="optional">
                <xsd:annotation>
                    <xsd:documentation>Deprecated, replaced by @sortBys</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="sortBys" type="rw:strings" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    Sort by following options:
                    name | modelType | property
                    if sort by property, @sortProperty is required to specified sort by which property
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="sortProperty" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    If sort by property, @sortProperty is required to specified sort by which property
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="sortValues" type="rw:strings" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    If sort by property, @sortValues can be specified for sort by values of the property
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="defaultPropertyValue" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    If sort by property, @defaultPropertyValue can be specified for the default value of the model has no this property value
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="descendingSort" type="xsd:boolean" use="optional" default="false">
                <xsd:annotation>
                    <xsd:documentation>Deprecated, replaced by @descendingSort</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="descendingSorts" type="rw:booleans" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    Sorting in descending order?
                    numbers of descendingSorts should be same as sortBys
                    e.g. @sortBy="name, modelType" @descendingSorts="true, false"
                    then, sort by name will be descending, sort by modelType will be ascending
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="ForEachSimpleRelationship">
        <xsd:annotation>
            <xsd:documentation>Retrieve SimpleRelationship from Model, or Connector from DiagramElement</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <!-- any element after the comment "CONTENTS"-->
                <xsd:any minOccurs="1" maxOccurs="unbounded"/>
            </xsd:sequence>
            <xsd:attribute name="type" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>Deprecated, replaced by @modelType (Model's modelType or DiagramElement's shapeType)</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="modelType" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>Filter relationships by modelType.</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="modelTypes" type="rw:strings" use="optional">
                <xsd:annotation>
                    <xsd:documentation>Filter relationships by modelTypes. If @modelType is defined, @modelTypes will be ignored.</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="direction" use="optional">
                <xsd:annotation>
                    <xsd:documentation>Filter relationship by direction.</xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:NMTOKEN">
                        <xsd:enumeration value="all"/>
                        <xsd:enumeration value="from"/>
                        <xsd:enumeration value="to"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute name="ignoreParagraphBreakForLastModel" type="xsd:boolean" use="optional" default="false"/>
            <xsd:attribute name="breakString" type="xsd:string" use="optional"/>
            <xsd:attribute name="sortBy" type="xsd:NMTOKEN" use="optional">
                <xsd:annotation>
                    <xsd:documentation>Deprecated, replaced by @sortBys</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="sortBys" type="rw:strings" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    Sort by following options:
                    name | modelType | property
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="sortProperty" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    If sort by property, @sortProperty is required to specified sort by which property
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="sortValues" type="rw:strings" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    If sort by property, @sortValues can be specified for sort by values of the property
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="defaultPropertyValue" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    If sort by property, @defaultPropertyValue can be specified for the default value of the model has no this property value
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="descendingSort" type="xsd:boolean" use="optional" default="false">
                <xsd:annotation>
                    <xsd:documentation>Deprecated, replaced by @descendingSort</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="descendingSorts" type="rw:booleans" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    Sorting in descending order?
                    numbers of descendingSorts should be same as sortBys
                    e.g. @sortBy="name, modelType" @descendingSorts="true, false"
                    then, sort by name will be descending, sort by modelType will be ascending
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="ForEachRelationshipEnd">
        <xsd:annotation>
            <xsd:documentation>Retrieve SimpleRelationship from Model, or Connector from DiagramElement</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <!-- any element after the comment "CONTENTS"-->
                <xsd:any minOccurs="1" maxOccurs="unbounded"/>
            </xsd:sequence>
            <xsd:attribute name="type" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>Deprecated, replaced by @modelType (Model's modelType or DiagramElement's shapeType)</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="modelType" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>Filter relationships by modelType.</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="modelTypes" type="rw:strings" use="optional">
                <xsd:annotation>
                    <xsd:documentation>Filter relationships by modelTypes. If @modelType is defined, @modelTypes will be ignored.</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="endPointer" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    Filter relationship by direction.
                    both = all, self = from, other = to
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:NMTOKEN">
                        <xsd:enumeration value="all"/>
                        <xsd:enumeration value="from"/>
                        <xsd:enumeration value="to"/>
                        <xsd:enumeration value="both"/>
                        <xsd:enumeration value="self"/>
                        <xsd:enumeration value="other"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute name="ignoreParagraphBreakForLastModel" type="xsd:boolean" use="optional" default="false"/>
            <xsd:attribute name="breakString" type="xsd:string" use="optional"/>
            <xsd:attribute name="sortBy" type="xsd:NMTOKEN" use="optional">
                <xsd:annotation>
                    <xsd:documentation>Deprecated, replaced by @sortBys</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="sortBys" type="rw:strings" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    Sort by following options:
                    name | modelType | property
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="sortProperty" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    If sort by property, @sortProperty is required to specified sort by which property
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="sortValues" type="rw:strings" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    If sort by property, @sortValues can be specified for sort by values of the property
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="defaultPropertyValue" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    If sort by property, @defaultPropertyValue can be specified for the default value of the model has no this property value
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="descendingSort" type="xsd:boolean" use="optional" default="false">
                <xsd:annotation>
                    <xsd:documentation>Deprecated, replaced by @descendingSort</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="descendingSorts" type="rw:booleans" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    Sorting in descending order?
                    numbers of descendingSorts should be same as sortBys
                    e.g. @sortBy="name, modelType" @descendingSorts="true, false"
                    then, sort by name will be descending, sort by modelType will be ascending
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="ForEachSubDiagram">
        <xsd:annotation>
            <xsd:documentation>Retrieve sub diagrams from Model</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <!-- any element after the comment "CONTENTS"-->
                <xsd:any minOccurs="1" maxOccurs="unbounded"/>
            </xsd:sequence>
            <xsd:attribute name="diagramType" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>Filter diagram by diagramType.</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="ignoreParagraphBreakForLastModel" type="xsd:boolean" use="optional" default="false"/>
            <xsd:attribute name="sortBy" type="xsd:NMTOKEN" use="optional">
                <xsd:annotation>
                    <xsd:documentation>Deprecated, replaced by @sortBys</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="sortBys" type="rw:strings" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    Sort by following options:
                    name | modelType | property
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="sortProperty" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    If sort by property, @sortProperty is required to specified sort by which property
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="sortValues" type="rw:strings" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    If sort by property, @sortValues can be specified for sort by values of the property
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="defaultPropertyValue" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    If sort by property, @defaultPropertyValue can be specified for the default value of the model has no this property value
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="descendingSort" type="xsd:boolean" use="optional" default="false">
                <xsd:annotation>
                    <xsd:documentation>Deprecated, replaced by @descendingSort</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="descendingSorts" type="rw:booleans" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    Sorting in descending order?
                    numbers of descendingSorts should be same as sortBys
                    e.g. @sortBy="name, modelType" @descendingSorts="true, false"
                    then, sort by name will be descending, sort by modelType will be ascending
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="ForEachOwnerDiagram">
        <xsd:annotation>
            <xsd:documentation>Retrieve owner diagrams which the Model is shown on</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <!-- any element after the comment "CONTENTS"-->
                <xsd:any minOccurs="1" maxOccurs="unbounded"/>
            </xsd:sequence>
            <xsd:attribute name="diagramType" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>Filter diagram by diagramType.</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="ignoreParagraphBreakForLastModel" type="xsd:boolean" use="optional" default="false"/>
            <xsd:attribute name="sortBy" type="xsd:NMTOKEN" use="optional">
                <xsd:annotation>
                    <xsd:documentation>Deprecated, replaced by @sortBys</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="sortBys" type="rw:strings" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    Sort by following options:
                    name | modelType | property
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="sortProperty" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    If sort by property, @sortProperty is required to specified sort by which property
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="sortValues" type="rw:strings" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    If sort by property, @sortValues can be specified for sort by values of the property
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="defaultPropertyValue" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    If sort by property, @defaultPropertyValue can be specified for the default value of the model has no this property value
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="descendingSort" type="xsd:boolean" use="optional" default="false">
                <xsd:annotation>
                    <xsd:documentation>Deprecated, replaced by @descendingSort</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="descendingSorts" type="rw:booleans" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    Sorting in descending order?
                    numbers of descendingSorts should be same as sortBys
                    e.g. @sortBy="name, modelType" @descendingSorts="true, false"
                    then, sort by name will be descending, sort by modelType will be ascending
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="ForEachDiagram">
        <xsd:annotation>
            <xsd:documentation>Retrieve diagrams from Project</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <!-- any element after the comment "CONTENTS"-->
                <xsd:any minOccurs="1" maxOccurs="unbounded"/>
            </xsd:sequence>
            <xsd:attribute name="diagramType" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>Filter diagram by diagramType.</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="ignoreParagraphBreakForLastModel" type="xsd:boolean" use="optional" default="false"/>
            <xsd:attribute name="sortBy" type="xsd:NMTOKEN" use="optional">
                <xsd:annotation>
                    <xsd:documentation>Deprecated, replaced by @sortBys</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="sortBys" type="rw:strings" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    Sort by following options:
                    name | modelType | property
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="sortProperty" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    If sort by property, @sortProperty is required to specified sort by which property
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="sortValues" type="rw:strings" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    If sort by property, @sortValues can be specified for sort by values of the property
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="defaultPropertyValue" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    If sort by property, @defaultPropertyValue can be specified for the default value of the model has no this property value
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="descendingSort" type="xsd:boolean" use="optional" default="false">
                <xsd:annotation>
                    <xsd:documentation>Deprecated, replaced by @descendingSort</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="descendingSorts" type="rw:booleans" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    Sorting in descending order?
                    numbers of descendingSorts should be same as sortBys
                    e.g. @sortBy="name, modelType" @descendingSorts="true, false"
                    then, sort by name will be descending, sort by modelType will be ascending
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
        </xsd:complexType>
    </xsd:element>
    
    <!--
     Conditional, if condition not match, children template node won't be executed
     (DefaultConditionChecker, ValueConditionChecker, HasChildElementChecker, HasMetaModelPropertyChecker, HasParentModelChecker, HasRelationshipChecker, ReportOptionChecker, HasDiagramChecker)
     -->
    <xsd:element name="DefaultConditionChecker">
        <xsd:annotation>
            <xsd:documentation>Check property value equals to its default value.</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <!-- any element after the comment "CONTENTS"-->
                <xsd:any minOccurs="1" maxOccurs="unbounded"/>
            </xsd:sequence>
            <xsd:attribute name="equalFlag" type="xsd:boolean" use="optional" default="false">
                <xsd:annotation>
                    <xsd:documentation>Deprecated, replaced by @flag</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="flag" type="xsd:boolean" use="optional" default="false"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="ValueConditionChecker">
        <xsd:annotation>
            <xsd:documentation>Check property value.</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <!-- any element after the comment "CONTENTS"-->
                <xsd:any minOccurs="1" maxOccurs="unbounded"/>
            </xsd:sequence>
            <xsd:attribute name="propertyType" use="optional" default="string">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:NMTOKEN">
                        <xsd:enumeration value="string"/>
                        <xsd:enumeration value="int"/>
                        <xsd:enumeration value="boolean"/>
                        <xsd:enumeration value="model"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute name="operator" use="required">
                <xsd:annotation>
                    <xsd:documentation>
                    "equal" is deprecated, replaced by "equals"
                    "not equal" is deprecated, replaced by "not equals"
                    
                    "equals", "not equals" for string/int/boolean/model property
                    "less than", "equals or less than", "greater than", "equals or greater than" for string/int property
                    "like", "not like" for string property
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="equals"/>
                        <xsd:enumeration value="not equals"/>
                        <xsd:enumeration value="less than"/>
                        <xsd:enumeration value="equals or less than"/>
                        <xsd:enumeration value="greater than"/>
                        <xsd:enumeration value="equals or greater than"/>
                        <xsd:enumeration value="like"/>
                        <xsd:enumeration value="not like"/>
                        <xsd:enumeration value="equal"/>
                        <xsd:enumeration value="not equal"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute name="expectedValue" type="xsd:string" use="optional"/>
            <xsd:attribute name="caseSensitive" type="xsd:boolean" use="optional" default="true">
                <xsd:annotation>
                    <xsd:documentation>Case sensitive/insensitive for string property</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="HasChildElementChecker">
        <xsd:complexType>
            <xsd:sequence>
                <!-- any element after the comment "CONTENTS"-->
                <xsd:any minOccurs="1" maxOccurs="unbounded"/>
            </xsd:sequence>
            <xsd:attribute name="flag" type="xsd:boolean" use="optional" default="true"/>
            <xsd:attribute name="type" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>Deprecated, replaced by @modelType</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="modelType" type="xsd:string" use="optional"/>
            <xsd:attribute name="elementTypes" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>Deprecated, replaced by @modelTypes</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="modelTypes" type="xsd:string" use="optional"/>
            <xsd:attribute name="includeConnector" type="xsd:boolean" use="optional" default="false">
                <xsd:annotation>
                    <xsd:documentation>Deprecated, replaced by @includeConnectors</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="includeConnectors" type="xsd:boolean" use="optional" default="false">
                <xsd:annotation>
                    <xsd:documentation>
                    Retrieve Shape+Connector from Diagram. Otherwise, only the Shape will retrived.
                    For retrieve from Diagram only.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="allLevel" type="xsd:boolean" use="optional" default="false">
                <xsd:annotation>
                    <xsd:documentation>
                    Retrieve all models of the project. Otherwise, only the "root level models (models have no parent model)" will be retrieved.
                    For retrieve from Project only.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="HasMetaModelPropertyChecker">
        <xsd:complexType>
            <xsd:sequence>
                <!-- any element after the comment "CONTENTS"-->
                <xsd:any minOccurs="1" maxOccurs="unbounded"/>
            </xsd:sequence>
            <xsd:attribute name="flag" type="xsd:boolean" use="optional" default="true"/>
            <xsd:attribute name="property" type="xsd:string" use="required"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="HasParentModelChecker">
        <xsd:complexType>
            <xsd:sequence>
                <!-- any element after the comment "CONTENTS"-->
                <xsd:any minOccurs="1" maxOccurs="unbounded"/>
            </xsd:sequence>
            <xsd:attribute name="flag" type="xsd:boolean" use="optional" default="true"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="HasRelationshipChecker">
        <xsd:complexType>
            <xsd:sequence>
                <!-- any element after the comment "CONTENTS"-->
                <xsd:any minOccurs="1" maxOccurs="unbounded"/>
            </xsd:sequence>
            <xsd:attribute name="flag" type="xsd:boolean" use="optional" default="true"/>
            <xsd:attribute name="type" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>Deprecated, replaced by @modelType</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="modelType" type="xsd:string" use="optional"/>
            <xsd:attribute name="modelTypes" type="xsd:string" use="optional"/>
            <xsd:attribute name="direction" use="optional" default="all">
                <xsd:annotation>
                    <xsd:documentation>
                    self_begins, self_ends are deprecated
                    self_begins = from
                    self_ends = to
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:NMTOKEN">
                        <xsd:enumeration value="all"/>
                        <xsd:enumeration value="from"/>
                        <xsd:enumeration value="to"/>
                        <xsd:enumeration value="self_begins"/>
                        <xsd:enumeration value="self_ends"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="ReportOptionChecker">
        <xsd:complexType>
            <xsd:sequence>
                <!-- any element after the comment "CONTENTS"-->
                <xsd:any minOccurs="1" maxOccurs="unbounded"/>
            </xsd:sequence>
            <xsd:attribute name="equalFlag" type="xsd:boolean" use="optional" default="false">
                <xsd:annotation>
                    <xsd:documentation>Deprecated, replaced by @flag</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="flag" type="xsd:boolean" use="optional" default="false"/>
            <xsd:attribute name="option" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>
                    Check the option. Now, only one option is supported. Which is:
                    basicInformationShowsDocumentation
                    user can switch the option on Report Writer main menu: Tool &gt; Options &gt;
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="HasDiagramChecker">
        <xsd:complexType>
            <xsd:sequence>
                <!-- any element after the comment "CONTENTS"-->
                <xsd:any minOccurs="1" maxOccurs="unbounded"/>
            </xsd:sequence>
            <xsd:attribute name="flag" type="xsd:boolean" use="optional" default="true"/>
            <xsd:attribute name="type" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>Deprecated, replaced by @diagramType</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="diagramType" type="xsd:string" use="optional"/>
        </xsd:complexType>
    </xsd:element>
    
    <!--
    Property, getting property value from model
    (StringPropertyText, IntPropertyText, BooleanPropertyText, MetaModelElement, FromEnd, ToEnd, RelationshipEndEndRelationship, RelationshipEndOppositeEnd, ParentModel, DiagramProperty)
    -->
    <xsd:element name="StringPropertyText">
        <xsd:complexType>
            <xsd:attribute name="propertyText" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>Deprecated, replaced by @property</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="isHTML" type="xsd:boolean" use="optional" default="false"/>
            <xsd:attribute name="forcePlainText" type="xsd:boolean" use="optional" default="false"/>
            <xsd:attribute name="defaultValue" type="xsd:string" use="optional"/>
            <xsd:attribute name="property" type="xsd:string" use="optional"/>
            <xsd:attribute name="isBold" type="xsd:boolean" use="optional" default="false"/>
            <xsd:attribute name="isItalic" type="xsd:boolean" use="optional" default="false"/>
            <xsd:attribute name="fontFamily" type="xsd:string" use="optional" default="Times New Roman"/>
            <xsd:attribute name="alignment" use="optional" default="left">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:NMTOKEN">
                        <xsd:enumeration value="left"/>
                        <xsd:enumeration value="center"/>
                        <xsd:enumeration value="right"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute name="fontSize" type="xsd:integer" use="optional" default="12"/>
            <xsd:attribute name="style" type="xsd:string" use="optional"/>
            <xsd:attribute name="numberingLevel" type="xsd:short" use="optional"/>
            <xsd:attribute name="foreColor" type="rw:color" use="optional"/>
            <xsd:attribute name="indentation" type="xsd:double" use="optional"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="IntPropertyText">
        <xsd:complexType>
            <xsd:attribute name="propertyText" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>Deprecated, replaced by @property</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="isHTML" type="xsd:boolean" use="optional" default="false"/>
            <xsd:attribute name="property" type="xsd:string" use="optional"/>
            <xsd:attribute name="isBold" type="xsd:boolean" use="optional" default="false"/>
            <xsd:attribute name="isItalic" type="xsd:boolean" use="optional" default="false"/>
            <xsd:attribute name="fontFamily" type="xsd:string" use="optional" default="Times New Roman"/>
            <xsd:attribute name="alignment" use="optional" default="left">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:NMTOKEN">
                        <xsd:enumeration value="left"/>
                        <xsd:enumeration value="center"/>
                        <xsd:enumeration value="right"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute name="fontSize" type="xsd:integer" use="optional" default="12"/>
            <xsd:attribute name="style" type="xsd:string" use="optional"/>
            <xsd:attribute name="numberingLevel" type="xsd:short" use="optional"/>
            <xsd:attribute name="foreColor" type="rw:color" use="optional"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="BooleanPropertyText">
        <xsd:complexType>
            <xsd:attribute name="propertyText" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>Deprecated, replaced by @property</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="property" type="xsd:string" use="optional"/>
            <xsd:attribute name="isBold" type="xsd:boolean" use="optional" default="false"/>
            <xsd:attribute name="isItalic" type="xsd:boolean" use="optional" default="false"/>
            <xsd:attribute name="fontFamily" type="xsd:string" use="optional" default="Times New Roman"/>
            <xsd:attribute name="alignment" use="optional" default="left">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:NMTOKEN">
                        <xsd:enumeration value="left"/>
                        <xsd:enumeration value="center"/>
                        <xsd:enumeration value="right"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute name="fontSize" type="xsd:integer" use="optional" default="12"/>
            <xsd:attribute name="style" type="xsd:string" use="optional"/>
            <xsd:attribute name="numberingLevel" type="xsd:short" use="optional"/>
            <xsd:attribute name="foreColor" type="rw:color" use="optional"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="MetaModelElement">
        <xsd:annotation>
            <xsd:documentation>Retrieve Model from property.</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:attribute name="mode" type="xsd:boolean" use="optional" default="true"/>
            <xsd:attribute name="modelProperty" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>Deprecated, replaced by @property</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="identifier" type="xsd:string" use="optional"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="FromEnd">
        <xsd:annotation>
            <xsd:documentation>Retrieve From RelationshipEnd from EndRelationship, or From model from SimpleRelationship.</xsd:documentation>
        </xsd:annotation>
    </xsd:element>
    <xsd:element name="ToEnd">
        <xsd:annotation>
            <xsd:documentation>Retrieve To RelationshipEnd from EndRelationship, or To model from SimpleRelationship.</xsd:documentation>
        </xsd:annotation>
    </xsd:element>
    <xsd:element name="RelationshipEndEndRelationship">
        <xsd:annotation>
            <xsd:documentation>Retrieve EndRelationship from RelationshipEnd.</xsd:documentation>
        </xsd:annotation>
    </xsd:element>
    <xsd:element name="RelationshipEndOppositeEnd">
        <xsd:annotation>
            <xsd:documentation>Retrieve opposite end from RelationshipEnd.</xsd:documentation>
        </xsd:annotation>
    </xsd:element>
    <xsd:element name="ParentModel">
        <xsd:annotation>
            <xsd:documentation>Retrieve parent model from Model.</xsd:documentation>
        </xsd:annotation>
    </xsd:element>
    <xsd:element name="DiagramProperty">
        <xsd:annotation>
            <xsd:documentation>Retrieve diagram from property. e.g. BPSubProcess.diagramId refer its bpd.</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:attribute name="property" type="xsd:string" use="required"/>
        </xsd:complexType>
    </xsd:element>
    
    
    <!--
    Others
    (ElementImage, FlowOfEventsTemplate)
    -->
    <xsd:element name="ElementImage">
        <xsd:annotation>
            <xsd:documentation>Showing image of Diagram/DiagramElement, or icon for model type.</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:attribute name="imageType" use="optional" default="icon">
                <xsd:annotation>
                    <xsd:documentation>
                    "diagram" means show image for Diagram/DiagramElement
                    "icon" means show icon for the model type
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:NMTOKEN">
                        <xsd:enumeration value="diagram"/>
                        <xsd:enumeration value="icon"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute name="alignment" use="optional" default="left">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:NMTOKEN">
                        <xsd:enumeration value="left"/>
                        <xsd:enumeration value="center"/>
                        <xsd:enumeration value="right"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute name="style" type="xsd:string" use="optional"/>
            <xsd:attribute name="width" type="xsd:integer" use="optional"/>
            <xsd:attribute name="height" type="xsd:integer" use="optional"/>
            <xsd:attribute name="maxWidth" type="xsd:integer" use="optional"/>
            <xsd:attribute name="maxHeight" type="xsd:integer" use="optional"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="FlowOfEventsTemplate">
        <xsd:annotation>
            <xsd:documentation>Showing Flow Of Events for a Use Case.</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:attribute name="showProcedure" use="optional" default="follow model">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="follow model"/>
                        <xsd:enumeration value="true"/>
                        <xsd:enumeration value="false"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute name="tableWidth" type="xsd:integer" use="optional" default="15500"/>
            <xsd:attribute name="showRowBorder" type="xsd:boolean" use="optional" default="false"/>
            <xsd:attribute name="showColumnBorder" type="xsd:boolean" use="optional" default="true"/>
            <xsd:attribute name="showName" type="xsd:boolean" use="optional" default="true">
                <xsd:annotation>
                    <xsd:documentation>Show the name of Flow of event?</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="columnWidths" type="rw:integers" use="optional"/>
            <xsd:attribute name="name" type="xsd:string" use="optional">
                <xsd:annotation>
                    <xsd:documentation>Filter Flow of events by name.</xsd:documentation>
                </xsd:annotation>
            </xsd:attribute>
        </xsd:complexType>
    </xsd:element>
    
    <xsd:simpleType name="strings">
        <xsd:annotation>
            <xsd:documentation>Strings separated by ", ". e.g. "Class, UseCase, Actor" means "Class", "UseCase", "Actor"</xsd:documentation>
        </xsd:annotation>
        <xsd:restriction base="xsd:string"/>
    </xsd:simpleType>
    
    <xsd:simpleType name="integers">
        <xsd:annotation>
            <xsd:documentation>Integers separated by ", ". e.g. "10, 20, 70"</xsd:documentation>
        </xsd:annotation>
        <xsd:restriction base="xsd:string"/>
    </xsd:simpleType>
    
    <xsd:simpleType name="booleans">
        <xsd:annotation>
            <xsd:documentation>Booleans separated by ", ". e.g. "true, false, false"</xsd:documentation>
        </xsd:annotation>
        <xsd:restriction base="xsd:string"/>
    </xsd:simpleType>
    
    <xsd:simpleType name="color">
        <xsd:annotation>
            <xsd:documentation>
            Color can be represented in following 2 forms:
            1. "R, G, B" in decimal, e.g. "230, 230, 230" (it is a light gray color)
            2. #FFFFFF (RGB in hexadecimal), e.g. #FF0000 (it is a red color)
            
            Prefer using #FFFFFF. Because "R, G, B" is not suitable for colors.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:restriction base="xsd:string"/>
    </xsd:simpleType>
    
    <xsd:simpleType name="colors">
        <xsd:annotation>
            <xsd:documentation>
            Colors separated by ", ". e.g. "#FF0000, #00FF00, #0000FF".
            </xsd:documentation>
        </xsd:annotation>
        <xsd:restriction base="xsd:string"/>
    </xsd:simpleType>
</xsd:schema>

 

 
6. Export and import report Table of Contents 8. Printing in Report Writer
 

Product

Try this feature with

Visual Paradigm for UML

Technical Support

Have technical issues or suggestions? Please contact Visual Paradigm Support Team.

Sales Support

Have questions related to registration, licensing or payment? Feel free to contact Visual Paradigm Sales Team.

Discussion Forum

Share your suggestions of opinions at VP Discussion Forum.