SETI Markup Language Schema


The File Manager was built to a SML schema. This insures uniform construction and meaning of the data. If you would like to help develop the SML schema I would welcome it. Down load SML Spy or some other tool and build your test files. Insure that the NamespaceSchemaLocation information points to this page.

To view the schema itself click here. This will cause your browser to display the schema. Save it for you local use. Also included is a XML file (GeneratedSML.xml)that was generated directly from the schema. You can view it here.

Modifying the Schema
  • These are the steps necessary to modify the SML schema file and then rebuild the XML data bindings - Updated.

    To change the XML you must:

    1. Open XMLSpy and then the schema file itself (SETI_SML.xsd)
    2. Fuck around with it
    3. Check and Validate (XML | Validate)
    4. Create an example (DTD/Schema | Generate Sample
    5. Save the schema and the sample

    To rebuild the XML Binding Interface you must:

    1. Remove the current SML File from the project (SETI_SML.Pas)
    2. Open the working project then
    3. Select File | New | Other
    4. Select XML Data Binding then OK
    5. Point it to the latest Schema
    6. Uncheck the XDB thingy
    7. Next, Next, Finish
    8. IMPORTANT You must Save the file to get it into the directory



All Example

Here some of the nodes are required (Mount, Shape, horn) and otheres are optional (LNA, L1) but the order is unimportant (ALL in XML).

This is the LNA In or Out check box. Setting it will add one, and only one LNA node with its attributes. Unsetting it will remove that node. Setting it again will add it back but it may be in a different place in the list of Antenna nodes.

The Delphi code for this is stright forward. If the user interface wants an LNA (checkbox it checked) then test for LNA = nil and add it if it is nil. Otherwise you wind up with two LNA nodes and will fail validation.

also notice that you don't need to test for a node before you delete it (last line) but you cannot simply say 'Delete('LNA')". It must be 'ChildNodes.Delete('LNA')'



Selector Implementation Example

Here there can be only one Mount child node. Either AzEl, DriftScan or BirdBath. If the Attributes Manufacture and Model exist they must become part of the SML. The Selector symbol follows the Mount Node.

In the File Manager Application the Selector is implemented with a TRadioGroup collection of three buttons.

So the incomming SML must set the correct Mount Type Selector and modify the underlying SML. If the user changes the Selector the SML must be modified correctly so that the SML still will validate against the SML schema.

The Delphi code for it to work is shown below:


Schema used (station.xsd) TBD