Generic Description Language

The Generic Description Language (GDL) defines a syntax with which to express hierarchically structured data. GDL also enables manufacturers and consumers to cooperatively define a schema that can be used to standardize the way in which the data is expressed. This schema can be used to validate the structure and format of the data and to guide the transformation of the data into another format (such as XML).

Microsoft provides the GDL parser and associated parser filters, which access and process data from a source data file and convert it to hierarchical data that the GDL syntax defines. GDL supports complex data sets, object-oriented schemas that define the structure and processing of this data, and a mechanism for easy extension by vendors.

GDL is designed as a superset of the Generic Printer Description (GPD) language, which is used to describe printer capabilities for Unidrv minidrivers.

GDL has the following main features:

  • GDL is backwards compatible with GPD legacy format.

  • GDL is arbitrarily extensible. That is, anyone can add custom attributes and constructs.

  • GDL uses templates to provide data structures.

  • GDL uses preprocessor directives and parameter-driven configuration to provide flexible linking and conditions.

  • GDL parses data input and returns an XML stream to the client.

When the data in a GDL source file is parsed by the GDL parser, the parser maintains a hierarchical data structure. The client accesses the parsed data structure indirectly through a snapshot. The snapshot is a representation of the data in a particular state. This state is specified through a configuration. In the current implementation of the GDL parser, the snapshot is expressed as XML, and the data in the snapshot can be accessed by using XML tools.

In addition to data entries, the GDL parser recognizes keywords (which are called directives). The directives include categories such as preprocessors, macros, namespaces, templates, and configurations.

The following sections provide more information about GDL:

GDL Architecture

GDL Programming Guide

GDL Reference

GDL Examples