def start_element(self, name=None, type=None, ref=None, substitutionGroup=None, minOccurs=None, maxOccurs=None):
        element = Element()
        element.name = name

        if ref:
            (namespacename, localname) = QName.split(ref)

            if namespacename in self.schema.prefixmappings:
                elementref = QName(self.schema.prefixmappings[namespacename], localname)
            else:
                elementref = QName(namespacename, localname)

            element.ref = elementref

        if type:
            (namespacename, localname) = QName.split(type)

            if namespacename in self.schema.prefixmappings:
                typename = QName(self.schema.prefixmappings[namespacename], localname)
            else:
                typename = QName(namespacename, localname)

            element.typename = typename

        if substitutionGroup:
            (namespacename, localname) = QName.split(substitutionGroup)

            if namespacename in self.schema.prefixmappings:
                elementref = QName(self.schema.prefixmappings[namespacename], localname)
            else:
                elementref = QName(namespacename, localname)

            element.substitutiongroup = elementref

        if minOccurs:
            try:
                element.minoccurs = int(minOccurs)
            except ValueError:
                element.minoccurs = minOccurs

        if maxOccurs:
            try:
                element.maxoccurs = int(maxOccurs)
            except ValueError:
                element.maxoccurs = maxOccurs

        self.handleelement(element)
    def start_extension(self, base):
        extension = Extension()
        basetyperef = QName(*QName.split(base))

        if basetyperef.namespacename in self.schema.prefixmappings:
            basetyperef = QName(self.schema.prefixmappings[basetyperef.namespacename], basetyperef.localname)

        extension.basetypereference = basetyperef

        parent = self.elementstack[-1]

        if isinstance(parent, (SimpleContent, ComplexContent)):
            parent.extension = extension

        self.startxmlelement(extension)
def test_split():
    parts = QName.split("somename.org:directory")

    assert parts[0] == "somename.org"
    assert parts[1] == "directory"