def __init__( self ): """ Constructor: expects the filepath of the source XML file. Loads (and crudely validates the XML file) into an element tree. """ self._filenameBase = 'BibleOrganisationalSystems' # These fields are used for parsing the XML self._treeTag = 'BibleOrganisationalSystems' self._headerTag = 'header' self._mainElementTag = 'BibleOrganisationalSystem' # These fields are used for automatically checking/validating the XML self._compulsoryAttributes = ( 'type', ) self._optionalAttributes = () self._uniqueAttributes = () self._compulsoryElements = ( 'referenceAbbreviation', 'languageCode', ) self._optionalElements = ( 'name', 'completionDate', 'publicationDate', 'copyright', 'versificationSystem', 'punctuationSystem', 'bookOrderSystem', 'booksNamesSystem', 'translator', 'publisher', 'derivedFrom', 'usesText', 'includesBooks', 'url', 'comment', ) self._uniqueElements = () self._allowedMultiple = ( 'name', 'translator', 'derivedFrom', 'usesText', 'url', 'comment', ) # These are fields that we will fill later self.title, self.version, self.date = None, None, None self.header, self._XMLtree = None, None self.__dataDicts = None # Get the data tables that we need for proper checking self._ISOLanguages = ISO_639_3_Languages().loadData() self._BibleBookOrderSystems = BibleBookOrderSystems().loadData() self._BiblePunctuationSystems = BiblePunctuationSystems().loadData() self._BibleVersificationSystems = BibleVersificationSystems().loadData() self._BibleBooksNamesSystems = BibleBooksNamesSystems().loadData()