'Merge the contents from the schema.  Only objects not already contained
in this schema\'s collections are merged.  This is to provide for bidirectional
import which produce cyclic includes.
@returns: self
@rtype: L{Schema}'

def merge(self, schema):

    for item in schema.attributes.items():
        if (item[0] in self.attributes):
            continue
        self.all.append(item[1])
        self.attributes[item[0]] = item[1]
    for item in schema.elements.items():
        if (item[0] in self.elements):
            continue
        self.all.append(item[1])
        self.elements[item[0]] = item[1]
    for item in schema.types.items():
        if (item[0] in self.types):
            continue
        self.all.append(item[1])
        self.types[item[0]] = item[1]
    for item in schema.groups.items():
        if (item[0] in self.groups):
            continue
        self.all.append(item[1])
        self.groups[item[0]] = item[1]
    for item in schema.agrps.items():
        if (item[0] in self.agrps):
            continue
        self.all.append(item[1])
        self.agrps[item[0]] = item[1]
    schema.merged = True
    return self
