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