#### Example 2: Importing an HDS from an XML file to a catalog

To import an HDS from an XML file, follow the steps below:

1. Start JReport Designer and open an existing catalog.
2. In the Data tab of the Catalog Browser, expand the data source to which to add the HDS, then right-click the Hierarchical node, and then select Import XML Hierarchical Data Source from the shortcut menu. The Import XML Hierarchical Data Source dialog appears.
3. Provide the information respectively according to your data source information. See the dialog.

   JReport Designer supports all kinds of URI as the XML data source. See the detailed information below:

   - If you want to specify a schema file for the XML data source file, you must first make sure that the schema file path specified in the XML data source file is consistent with the path you specified in the XSD URI field, and that this file actually exists. Click the Load Tree button to load the structure of the XML file. The root of the file will then be listed in the Root Name field. Modify the column properties in the Columns box as required.
   - JReport Designer supports static string inline with multiple parameters, for example:

     `"http://localhost:8888/jrserver%2fSampleReports%2fSampleReports.cat/StockMarket.cls?jrs.cmd=jrs.try_vw&jrs.result_type=7&jrs.param$p_Year=2007&jrs.param$p_Month=2"`

     It is the URL used to run the sample report StockMarket.cls to the XML format in JReport Enterprise Server. Type the URL into the XML URI text field, and click the Load Tree button, the structure of the returned XML stream will be loaded in the Structure panel (before doing so, make sure that JReport Enterprise Server is started). Modify the column properties in the Columns box as required.

     The colon ':' and '@' symbols are used to identify JReport parameter names. If these symbols are used in your XML URI and you do not want JReport to parse them as parameters, you must add quotation marks to them. For example, when you browse to `d:\test\employee.xml`, you can quote it either as `"d:\test\employee.xml"` or `d":"\test\employee.xml`.

     Note that you should check the No Security Checking option in the Advanced tab of the Configuration dialog in the JReport Enterprise Server Administration Page before parsing this URL. In addition, JReport parameters can be dynamically referenced in the URI for setting different values at runtime.

4. Click OK to import the HDS.

Notes:

- An XML data source file without any schema file is also allowed. That is, you can leave the XSD URI entry empty. However, the data type VARCHAR will be used for all the columns in the data source. See details about the XSD file.
- JReport Designer also supports dynamic XML URI. The XSD file defines the structure of the XML format HDS and the XML file in fact only provides the data, so one XSD file can match more than one XML file. That enables you to develop reports with dynamic XML URI. For details, see Example 1: Developing a report from an HDS with dynamic XML URI.
- When importing the XML file, you have to define the types of some data in the Format column. For example, if it is Date type, such as 1978-03-12, in the corresponding Format column, type in yyyy-MM-dd. If the data is $12,345.32, in the corresponding Format column, type in $##,###.##.
- By default, the value of the Scale column is 0. So, for decimal type data, you will have to specify the scale value in its corresponding Scale column. That is, modify this value to the number of digits that you want to appear to the right of the decimal point. For example, if the data is 123.23, then in the Scale column, modify this value to 2.
- For the Currency, and Array columns, check them if required.
- When specifying a schema file for the XML data source file, due to the schema file being complex, there are some limitations:
  - Namespace: Now, only default namespace (3w) is supported by JReport Designer. You can define a prefix, such as xs, or xsd, but the value of elementFormDefault must be qualified. The value of attributeFormDefault should be unqualified, but JReport Designer will not allow you to add prefixes before the attributes of the elements.
  - Type: If a customized complexType or simpleType is used, do not add the prefix to the value of the type, while if the built-in simpleType or complexType is used, the prefix must be added.

##### The XSD file

When you import an XML format HDS with an XSD file, the XML file only provides the data to the JReport Designer reports, while the structure and data type etc. of the data from the XML file is defined in the XSD file. That is, the structure of the HDS is determined by the XSD file. You should be aware of the following points about the XSD file in order to generate a correct report based on an XML format HDS with an XSD file.

Data type conversion table

Before the data type defined in the XSD file can function with JReport Designer, it should first be converted into a corresponding data type when the XML format hierarchical data source is imported, following the rules in the conversion table below.

XML Data Type | JReport Data Type
--- | ---
SchemaSymbols.ATTVAL_BOOLEAN | java.sql.Types.BIT
SchemaSymbols.ATTVAL_INT | java.sql.Types.INTEGER
SchemaSymbols.ATTVAL_SHORT | java.sql.Types.SMALLINT
SchemaSymbols.ATTVAL_BYTE | java.sql.Types.TINYINT
SchemaSymbols.ATTVAL_INTEGER | java.sql.Types.INTEGER
SchemaSymbols.ATTVAL_NONPOSITIVEINTEGER | java.sql.Types.INTEGER
SchemaSymbols.ATTVAL_NEGATIVEINTEGER | java.sql.Types.INTEGER
SchemaSymbols.ATTVAL_NONNEGATIVEINTEGER | java.sql.Types.INTEGER
SchemaSymbols.ATTVAL_UNSIGNEDLONG | java.sql.Types.BIGINT
SchemaSymbols.ATTVAL_LONG | java.sql.Types.BIGINT
SchemaSymbols.ATTVAL_UNSIGNEDINT, //4294967295 | java.sql.Types.BIGINT
SchemaSymbols.ATTVAL_UNSIGNEDSHORT, //65535 | java.sql.Types.INTEGER
SchemaSymbols.ATTVAL_UNSIGNEDBYTE, //255 | java.sql.Types.SMALLINT
SchemaSymbols.ATTVAL_POSITIVEINTEGER | java.sql.Types.INTEGER
SchemaSymbols.ATTVAL_FLOAT | java.sql.Types.FLOAT
SchemaSymbols.ATTVAL_DOUBLE | java.sql.Types.DOUBLE
SchemaSymbols.ATTVAL_DECIMAL | java.sql.Types.DECIMAL
SchemaSymbols.ATTVAL_STRING | java.sql.Types.VARCHAR
SchemaSymbols.ATTVAL_DATE | java.sql.Types.DATE
SchemaSymbols.ATTVAL_TIME | java.sql.Types.TIME
SchemaSymbols.ATTVAL_DATETIME | java.sql.Types.TIMESTAMP
SchemaSymbols.ATTVAL_HEXBINARY | java.sql.Types.LONGVARBINARY

Note: When you import data of List type from an XSD file, you can define the delimiter through the property List Delimiter in the Report Inspector.

XSD structure supported by JReport Designer

In JReport Designer, not all XSD structures can be supported. The following diagrams show which structures are supported by JReport Designer.

- The ComplexType

  The Element type in the diagram can be of simpleType, ref, or complexType (it is different from the ComplexType in the root of this diagram. It can be global complexType but cannot be the anonymous one. If you have defined a complexType named A, and in this complexType A redefined an element as complexType named B, then the elements belong to complexType B must be of the simpleType).

  The Attribute type in the diagram should be of the anonymous type or of the schema built-in type, such as xs:string.

- The SimpleType

  SimpleType here should be of the schema built-in type, such as xs:string. List type here cannot support some functions, such as minLength, and maxLength.

- The Element

  ComplexType here can include both global and anonymous complexType. The anonymous type means you do not give a name to the type, for example,

      <xs:element name="aa">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="Julie P. Adams"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>

  From the code above, you can see that the simpleType in the element aa has no name specified.