opendap/src/main/java/opendap/dap/DDS.java
public void parseXML(InputStream is, boolean validation) throws DAP2Exception
    {

        DDSXMLParser dp = new DDSXMLParser(opendapNameSpace);

        dp.parse(is, this, factory, validation);

        // Check for name conflicts. IN the XML representation
        // of the DDS it is syntactically possible for a
        // variable container (Dconstructor) to possess an
        // Attribute that has the same name as one of the container
        // variable's member variables. That's a NO-NO!.
        // Check for it here and throw a nice fat exception if we find it.

        checkForAttributeNameConflict();

        // Resolve the aliases. Aliases are basically analagous
        // to softlinks in a UNIX filesystem. Since an alias
        // can point any Attribute in the dataset, the vailidity
        // of the alias cannot be checked until all of the
        // members of the Dataset (both variables and their
        // Attributes) have been built. Once that is done
        // we can check to make sure that every alias points
        // at a vaild Attribute (and not another alias, non-existent
        // Attribute, etc)

        resolveAliases();


    }
public void parseXML(InputStream is, boolean validation) throws DAP2Exception
    {

        DDSXMLParser dp = new DDSXMLParser(opendapNameSpace);

        dp.parse(is, this, factory, validation);

        // Check for name conflicts. IN the XML representation
        // of the DDS it is syntactically possible for a
        // variable container (Dconstructor) to possess an
        // Attribute that has the same name as one of the container
        // variable's member variables. That's a NO-NO!.
        // Check for it here and throw a nice fat exception if we find it.

        checkForAttributeNameConflict();

        // Resolve the aliases. Aliases are basically analagous
        // to softlinks in a UNIX filesystem. Since an alias
        // can point any Attribute in the dataset, the vailidity
        // of the alias cannot be checked until all of the
        // members of the Dataset (both variables and their
        // Attributes) have been built. Once that is done
        // we can check to make sure that every alias points
        // at a vaild Attribute (and not another alias, non-existent
        // Attribute, etc)

        resolveAliases();


    }
Reads a <b>DDX</b> from the named <code>InputStream</code>. This
method calls a generated parser to interpret an XML representation of a
<code>DDS</code> (aka a <b>DDX</b>), and instantiate that
<code>DDS</code> in memory. This method does the following:
<ul>
<li> Gets a new <code>DDSXMLParser</code> using the <code>BaseTypeFactory</code>
held in this (the <code>DDS</code>) class. </li>
<li> Uses the <code>DDSXMLParser</code> to parse the DDX waiting
in the <code>InputStream</code> <i>is</i>. </li>
<li> Calls <code>DDS.checkForAttributeNameConflict()</code></li>
<li> Calls <code>DDS.resolveAliases()</code></li>
</ul>
<p/>
The last two items should be called EVERY time a <code>DDS</code>
is populated with variables ( by a parser, or through the <code>DDS</code> API)
and prior to releasing it for use to any calling program.

@param is         the InputStream containing the <code>DDS</code> to parse.
@param validation Is a boolean indicating whether or not the parser should
validate the XML document using the Schema (typically referenced in the
document itself). In general server side applications should always vaidate,
while clients shouldn't bother (since they are ostensibly receiving the
document from a server that has already done so.)
@throws DDSException thrown on an error constructing the
<code>DDS</code>.
@opendap.ddx.experimental
@see opendap.dap.parsers.DDSXMLParser
@see #checkForAttributeNameConflict
@see #resolveAliases