diff --git a/sosci2word/_SoSci2Word.mm b/sosci2word/_SoSci2Word.mm index 6b5e2a9..8494131 100644 --- a/sosci2word/_SoSci2Word.mm +++ b/sosci2word/_SoSci2Word.mm @@ -276,15 +276,21 @@ - - - - - - - + + + + + + + + + + + + + + - diff --git a/sosci2word/sosci2word.py b/sosci2word/sosci2word.py index 004e0b7..7f116e6 100644 --- a/sosci2word/sosci2word.py +++ b/sosci2word/sosci2word.py @@ -20,8 +20,9 @@ WORD_OUTPUT='Thesis-Fragebogen-import.docx' def convertSosci2Word(): # Schritt-1 : alle Frage-Definitionen aufsammeln - collectQuestionDefinitions() + questions = collectQuestionDefinitions() # Schritt-2 : die Fragen in der Reihenfolge vom Questionaire + questionaire = buildQuestionaire(questions) ## TODO # Schritt-3 : Questionaire in das Word-Dokument ausgeben ## TODO @@ -105,15 +106,12 @@ def collectQuestionDefinitions(): # questions = {} # + print("Extracting Question Definitions...") root = ElementTree.parse(SOSCI_XML).getroot() for section in root.findall('section'): - title = section.find('title') id_prefix = getSpecificID(section) - print("Section: Title »%s« Prefix=%s" % (title.text,id_prefix)) for question in section.findall('question'): - title = question.find('title').text - desc = question.find('description').text questionType = question.find('class').text id_suffix = getSpecificID(question) id_suffix = int(id_suffix) @@ -131,12 +129,9 @@ def collectQuestionDefinitions(): questions[questionID] = element - print(questions.keys()) - for key in questions.keys(): - quest = questions[key] - print("Question: ID=%s type=%s desc=%s" % (quest.qid, type(quest), quest.desc)) - print(quest.dump()) - + # Rückgabe: ein Dictionary mit allen bekannten Question-Elementen (keyed by ID) + return questions + # Hilfsmittel für SoSci-XML: extrahiert ein ID-Element, das eingeschachtelt in liegt @@ -146,6 +141,37 @@ def getSpecificID(element): +def buildQuestionaire(questions): + # + print("Building Questionaire Pages...") + # + root = ElementTree.parse(SOSCI_XML).getroot() + quest = root.find('questionnaire').find('attributes.specific') + quest = next(a for a in quest.findall('attr') if a.get('id') == 'content') + quest = quest.text + + questionaire = [] + + questRoot = ElementTree.fromstring(quest) + for page in questRoot.findall('page'): + if page.get('ident') == 'I': + continue # die erste Seite enthält den Einführungstext. Den fügen wir später manuell ein + # + info = page.find('info').text + print('Seite: %s' % info) + questionsOnThisPage = [] + for quest in page.findall('question'): + questionID = quest.get('id') + print(questionID) + element = questions[questionID] + print(element.dump()) + questionsOnThisPage.append(element) + + questionaire.append((info, questionsOnThisPage)) + # + print(questionaire) + return questionaire + # ---- Hilfsfunktionen