cdm/src/main/java/thredds/client/catalog/builder/CatalogBuilder.java
protected ThreddsMetadata.Source readSource(Element elem) {
    if (elem == null) {
      return null;
    }
    ThreddsMetadata.Vocab name = readControlledVocabulary(elem.getChild("name", Catalog.defNS));
    Element contact = elem.getChild("contact", Catalog.defNS);
    if (contact == null) {
      errlog.format(" ** Parse error: Missing contact element in = '%s'%n", elem.getName());
      logger.debug(" ** Parse error: Missing contact element in = '{}'", elem.getName());
      return null;
    }
    return new ThreddsMetadata.Source(name, contact.getAttributeValue("url"), contact.getAttributeValue("email"));
  }
protected ThreddsMetadata.Source readSource(Element elem) {
    if (elem == null) {
      return null;
    }
    ThreddsMetadata.Vocab name = readControlledVocabulary(elem.getChild("name", Catalog.defNS));
    Element contact = elem.getChild("contact", Catalog.defNS);
    if (contact == null) {
      errlog.format(" ** Parse error: Missing contact element in = '%s'%n", elem.getName());
      logger.debug(" ** Parse error: Missing contact element in = '{}'", elem.getName());
      return null;
    }
    return new ThreddsMetadata.Source(name, contact.getAttributeValue("url"), contact.getAttributeValue("email"));
  }
protected ThreddsMetadata . Source readSource ( Element elem ) { if ( elem == null ) { return null ; } ThreddsMetadata . Vocab name = readControlledVocabulary ( elem . getChild ( "name" , Catalog . defNS ) ) ; Element contact = elem . getChild ( "contact" , Catalog . defNS ) ; if ( contact == null ) { errlog . format ( " ** Parse error: Missing contact element in = '%s'%n" , elem . getName ( ) ) ; logger . debug ( " ** Parse error: Missing contact element in = '{}'" , elem . getName ( ) ) ; return null ; } return new ThreddsMetadata . Source ( name , contact . getAttributeValue ( "url" ) , contact . getAttributeValue ( "email" ) ) ; }
/*
<xsd:complexType name="sourceType">
<xsd:sequence>
<xsd:element name="name" type="controlledVocabulary"/>

<xsd:element name="contact">
<xsd:complexType>
<xsd:attribute name="email" type="xsd:string" use="required"/>
<xsd:attribute name="url" type="xsd:anyURI"/>
</xsd:complexType>
</xsd:element>

</xsd:sequence>
</xsd:complexType>
/ * <xsd : complexType name = sourceType > <xsd : sequence > <xsd : element name = name type = controlledVocabulary / >