In this example ASL script, you are requesting XML output for all instances of the ServiceSubscriber class, the ServiceOfferings to which they are subscribed, and the Applications that compose the ServiceOfferings:

/* xml-export-sample.asl
 *
 * Copyright (C) 2003, System Management ARTS (SMARTS)
 * All Rights Reserved
 *
 * Sample Rule Set to export the topology of the ServiceSubscribers, the
 * ServiceOfferings they are subscribed to, the Applications that these
 * ServiceOfferings are composedOf, and the Hosts that Host these
*  Applications from the server into an XML document that will confirm 
* to the ICIM/XML DTD specifications.
 *
 * This is a sample xml-export-*.asl file. Users should make copies of this
 * file, and edit them according to their needs. But they should always name
 * these asl files according to the Naming convention, xml-export-<name>.asl
 */
/*
 * the XML_Builder object
 */
default builderName = "";
aslname = " ".getRuleFileName().": ";
builder = self->object("XML_Builder", builderName)? LOG, STOP;
if (builder->isNull()) {
    print(aslname."ERROR: The Wrapper object has not been created.");
    print(aslname."ERROR: Please make sure the CREATE_BUILDER is called ".
                        "before calling the INITIALIZE rule in the script.");
    stop();
}
/*
 * NOTE: Customize the script from this point on.
 */
START() {
    .. eol
    EXPORT_BIM_INSTANCES
}
EXPORT_BIM_INSTANCES {
    EXPORT_SERVICESUBSCRIBER
    EXPORT_SERVICEOFFERRING
    EXPORT_APPLICATION
}
EXPORT_SERVICESUBSCRIBER {
} do {
    /*
     * Get all the instances of ServiceSubscriber class and start adding to the
     * XML Document.
     */
    svcSubList = getInstances("ServiceSubscriber")? LOG, NEXT;
    foreach svcSub (svcSubList) {
        svcSubObj = object("ServiceSubscriber", svcSub)? LOG, IGNORE;
        builder->addObject(svcSub, "ServiceSubscriber");
        builder->addAttribute(svcSub, "DisplayName");
        builder->addRelationship("Subscriptions");
        /*
         * Get all the ServiceOffering objects that each of these
         * ServiceSubscribers subscribe to, and add them to the document.
         */
        foreach svcOffObj (svcSubObj->Subscriptions) {
            builder->addObject(svcOffObj->Name, svcOffObj->CreationClassName);
            builder->addObjectClosing();
        }
        builder->addRelationshipClosing();
        builder->addObjectClosing();
    }
}
EXPORT_SERVICEOFFERRING {
} do {
    /*
     * Get all the instances of ServiceOffering class and start adding to the
     * XML Document.
     */
    svcOffList = getInstances("ServiceOffering")? LOG, NEXT;
    foreach svcOff (svcOffList) {
        svcOffObj = object("ServiceOffering", svcOff)? LOG, IGNORE;
        builder->addObject(svcOff, "ServiceOffering");
        builder->addAttribute(svcOff, "DisplayName");
        builder->addRelationship("ConsistsOf");
        /*
         * Get all the <infrastructure> objects that each of these
         * ServiceOfferings consists of, and add them to the document.
         */
        foreach infObj (svcOffObj->ConsistsOf) {
            builder->addObject(infObj->Name, infObj->CreationClassName);
            builder->addObjectClosing();
        }
        builder->addRelationshipClosing();
        builder->addObjectClosing();
    }
}
EXPORT_APPLICATION {
} do {
    /*
     * Get all the instances of Application class and start adding to the
     * XML Document.
     */
    appList = getInstances("Application")? LOG, NEXT;
    foreach app (appList) {
        appObj = object("Application", app)? LOG, IGNORE;
        builder->addObject(app, "Application");
        builder->addAttribute(app, "DisplayName");
/*
         * Get the Host object that this Application is HostedBy,
         * and add it to the document.
         */
        hostObj = appObj->HostedBy;
        builder->addRelationship("HostedBy");
        builder->addObject(hostObj->Name, hostObj->CreationClassName);
        builder->addObjectClosing();
        builder->addRelationshipClosing();
        /*
         * Get all the Transaction objects that these Applications Produce and
         * Consume, and export them to the XML Document also.
         */
        builder->addRelationship("Produces");
        foreach trans (appObj->Produces) {
            builder->addObjectClosing();
        }
builder->addRelationshipClosing();
        builder->addRelationship("Consumes");
        foreach trans (appObj->Consumes) {
            builder->addObject(trans->Name, trans->CreationClassName);
            builder->addObjectClosing();
        }
        builder->addRelationshipClosing();
        builder->addObjectClosing();
    }
}