return;
}
QDomDocument domDoc = parent.ownerDocument();
- QDomElement gradeElement = domDoc.createElement( KVTML_DECLENSION );
- parent.appendChild(gradeElement);
-
- ///@todo write contents
+ QDomElement declensionElement = domDoc.createElement( KVTML_DECLENSION );
+
+ for ( KEduVocDeclension::DeclensionNumber num = KEduVocDeclension::Singular; num <= KEduVocDeclension::Plural; num = KEduVocDeclension::DeclensionNumber(num +1) ) {
+ QDomElement numberElement = domDoc.createElement( KVTML_GRAMMATICAL_NUMBER[num] );
+ for ( KEduVocDeclension::DeclensionCase dcase = KEduVocDeclension::Nominative; dcase < KEduVocDeclension::DeclensionCaseMAX; dcase = KEduVocDeclension::DeclensionCase(dcase +1) ) {
+ QDomElement caseElement = domDoc.createElement( KVTML_DECLENSION_CASE[dcase] );
+ declension(num, dcase).toXML(caseElement);
+
+ if (caseElement.hasChildNodes()) {
+ numberElement.appendChild(caseElement);
+ }
+ }
+ if (numberElement.hasChildNodes()) {
+ declensionElement.appendChild(numberElement);
+ }
+ }
+ if (declensionElement.hasChildNodes()) {
+ parent.appendChild(declensionElement);
+ }
}
void KEduVocText::toXML(QDomElement& parent)
{
QDomDocument domDoc = parent.ownerDocument();
+ if (text().isEmpty()) {
+ return;
+ }
// the text
KEduVocKvtml2Writer::appendTextElement( parent, KVTML_TEXT, text() );
// declension
#define KVTML_DECLENSION "declension"
+static const QString KVTML_DECLENSION_CASE[] = {
+ "nominative",
+ "genitive",
+ "dative",
+ "accusative",
+ "ablative",
+ "locative",
+ "vocative" };
+
+static const QString KVTML_GRAMMATICAL_NUMBER[] = {
+ "singular",
+ "dual",
+ "plural" };
// conjugation and personal pronouns
#define KVTML_CONJUGATION "conjugation"