> On April 15, 2013, 1:58 p.m., Jos van den Oever wrote:
> > The current use is this:
> >   if (el.namespaceUri() == KoXml::fo && el.name == "border") { ... }
> > You propose to have code like this:
> >   if (el.qualifiedName() == "fo:border") { ... }
> > 
> > That is still too error-prone. This would be better:
> >   if (el === ODFElement::fo::border) { ... }
> > 
> > It has the advantage that no typo in the namespace or local name are 
> > possible: the compiler will check that.
> > In addition, the code behind the operator== and even the type of 
> > ODFElement::fo::border can be optimized independently of the code that uses 
> > it.

Oops s/===/==
I've been writing too much javascript ;-)


- Jos


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


On April 6, 2013, 3:56 p.m., Inge Wallin wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://git.reviewboard.kde.org/r/109887/
> -----------------------------------------------------------
> 
> (Updated April 6, 2013, 3:56 p.m.)
> 
> 
> 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