protected DatasetBuilder readDataset(DatasetBuilder parent, Element dsElem) {
    """
	/* <xsd:complexType name="DatasetType">
	<xsd:sequence>
	<xsd:group ref="threddsMetadataGroup" minOccurs="0" maxOccurs="unbounded" />
	
	<xsd:element ref="access" minOccurs="0" maxOccurs="unbounded"/>
	<xsd:element ref="ncml:netcdf" minOccurs="0"/>
	<xsd:element ref="dataset" minOccurs="0" maxOccurs="unbounded"/>
	</xsd:sequence>
	
	<xsd:attribute name="name" type="xsd:string" use="required"/>
	<xsd:attribute name="alias" type="xsd:token"/>
	<xsd:attribute name="authority" type="xsd:string"/> <!-- deprecated : use element -->
	<xsd:attribute name="collectionType" type="collectionTypes"/>
	<xsd:attribute name="dataType" type="dataTypes"/> <!-- deprecated : use element -->
	<xsd:attribute name="harvest" type="xsd:boolean"/>
	<xsd:attribute name="ID" type="xsd:token"/>
	<xsd:attribute name="resourceControl" type="xsd:string"/>
	
	<xsd:attribute name="serviceName" type="xsd:string" /> <!-- deprecated : use element -->
	<xsd:attribute name="urlPath" type="xsd:token" />
	</xsd:complexType>
    """

    DatasetBuilder dataset = new DatasetBuilder(parent);
    readDatasetInfo(dataset, dsElem);

    // look for access elements
    java.util.List<Element> aList = dsElem.getChildren("access", Catalog.defNS);
    for (Element e : aList) {
      dataset.addAccess(readAccess(dataset, e));
    }

    // look for nested dataset and catalogRefs elements (keep them in order)
    java.util.List<Element> allChildren = dsElem.getChildren();
    for (Element e : allChildren) {
      if (e.getName().equals("dataset")) {
        dataset.addDataset(readDataset(dataset, e));
      }
      else if (e.getName().equals("catalogRef")) {
        dataset.addDataset(readCatalogRef(dataset, e));
      }
      else {
        dataset.addDataset( buildOtherDataset(dataset, e));
      }
    }

    return dataset;
  }
protected DatasetBuilder readDataset(DatasetBuilder parent, Element dsElem) {

    DatasetBuilder dataset = new DatasetBuilder(parent);
    readDatasetInfo(dataset, dsElem);

    // look for access elements
    java.util.List<Element> aList = dsElem.getChildren("access", Catalog.defNS);
    for (Element e : aList) {
      dataset.addAccess(readAccess(dataset, e));
    }

    // look for nested dataset and catalogRefs elements (keep them in order)
    java.util.List<Element> allChildren = dsElem.getChildren();
    for (Element e : allChildren) {
      if (e.getName().equals("dataset")) {
        dataset.addDataset(readDataset(dataset, e));
      }
      else if (e.getName().equals("catalogRef")) {
        dataset.addDataset(readCatalogRef(dataset, e));
      }
      else {
        dataset.addDataset( buildOtherDataset(dataset, e));
      }
    }

    return dataset;
  }
protected DatasetBuilder readDataset ( DatasetBuilder parent , Element dsElem ) { DatasetBuilder dataset = new DatasetBuilder ( parent ) ; readDatasetInfo ( dataset , dsElem ) ; // look for access elements java . util . List < Element > aList = dsElem . getChildren ( "access" , Catalog . defNS ) ; for ( Element e : aList ) { dataset . addAccess ( readAccess ( dataset , e ) ) ; } // look for nested dataset and catalogRefs elements (keep them in order) java . util . List < Element > allChildren = dsElem . getChildren ( ) ; for ( Element e : allChildren ) { if ( e . getName ( ) . equals ( "dataset" ) ) { dataset . addDataset ( readDataset ( dataset , e ) ) ; } else if ( e . getName ( ) . equals ( "catalogRef" ) ) { dataset . addDataset ( readCatalogRef ( dataset , e ) ) ; } else { dataset . addDataset ( buildOtherDataset ( dataset , e ) ) ; } } return dataset ; }
/* <xsd:complexType name="DatasetType">
<xsd:sequence>
<xsd:group ref="threddsMetadataGroup" minOccurs="0" maxOccurs="unbounded" />

<xsd:element ref="access" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="ncml:netcdf" minOccurs="0"/>
<xsd:element ref="dataset" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>

<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="alias" type="xsd:token"/>
<xsd:attribute name="authority" type="xsd:string"/> <!-- deprecated : use element -->
<xsd:attribute name="collectionType" type="collectionTypes"/>
<xsd:attribute name="dataType" type="dataTypes"/> <!-- deprecated : use element -->
<xsd:attribute name="harvest" type="xsd:boolean"/>
<xsd:attribute name="ID" type="xsd:token"/>
<xsd:attribute name="resourceControl" type="xsd:string"/>

<xsd:attribute name="serviceName" type="xsd:string" /> <!-- deprecated : use element -->
<xsd:attribute name="urlPath" type="xsd:token" />
</xsd:complexType>
/ * <xsd : complexType name = DatasetType > <xsd : sequence > <xsd : group ref = threddsMetadataGroup minOccurs = 0 maxOccurs = unbounded / >