-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/109887/
-----------------------------------------------------------

(Updated July 26, 2013, 7:16 p.m.)


Status
------

This change has been marked as submitted.


Review request for Calligra, Jarosław Staniek and Jos van den Oever.


Description
-------

This patch contains a new XML stream reader based on the QXmlStreamReader that 
is better suited for ODF.

Much ODF parsing code in Calligra looks like:

  if (el.namespaceUri() == KoXml::fo && el.name == "border") { ... }

The reason for this complicated construction is that the prefix (the "fo" in 
"fo:border") is not unique but is declared at the beginning of each Xml file. 
Even though "fo" is the normal prefix there is no guarantee that it is  the 
same in every document. 

However, it is a very rare document where it is *not* the normal prefix, so 
what we want to do is to be able to write code like this:

  If (el.qualifiedName() == "fo:border") { ... }

and make the XML stream reader or dom tree rewrite the qualified name in the 
very rare cases that the prefix does not match what we want.

This is exactly what the KoXmlStreamReader does. It allows you to write easier 
and faster code while still be correct in the few cases where the prefixes are 
not the expected ones. It does this by letting the user enter the expected 
namespace declarations and then compare those to the actual namespace 
declarations in the document. If they match everything will be as fast as 
possible. If they don't, it will be slower but still correct.

As an extra feature I have allowed the user to declare some extra namespaces 
(see fixNamespace() in KoXmlReader.cpp). This will let documents created by old 
versions of OpenOffice.org be read even though they use other namespaces.

I have code that uses this file but that is not yet ready for review. I wanted 
to put this up early to get feedback while the rest of the yet unfinished code 
is maturing.


Diffs
-----

  libs/odf/CMakeLists.txt 3680486 
  libs/odf/KoXmlStreamReader.h PRE-CREATION 
  libs/odf/KoXmlStreamReader.cpp PRE-CREATION 

Diff: http://git.reviewboard.kde.org/r/109887/diff/


Testing
-------

Not much. I will do that when the code that uses this code is ready. This 
review is for getting feedback on the ideas and implementation details.


Thanks,

Inge Wallin

_______________________________________________
calligra-devel mailing list
calligra-devel@kde.org
https://mail.kde.org/mailman/listinfo/calligra-devel

Reply via email to