odb ODF standard conformance [was: minutes of ESC call ...]

Michael Stahl mstahl at redhat.com
Fri Jan 10 09:14:14 PST 2014


On 07/01/14 17:20, Lionel Elie Mamane wrote:
> On Mon, Jan 06, 2014 at 09:45:54PM +0100, Michael Stahl wrote:
>> On 20/12/13 14:40, Lionel Elie Mamane wrote:

>>> 2) manifest:manifest without version attribute: I have no clue what
>>>    version I should put there. Any hint?
> 
>> to expand on Thorsten's answer, "1.2", but only if that's the ODF
>> version; the attribute did not exist in ODF 1.1/1.0.
> 
> I don't find how to set the manifest:manifest version. It seems to be
> in the GetVersion() of the m_pRootFolder of ZipPackage
> (package/source/zippackage/ZipPackage.cxx), but I don't see how that
> is ever set except when reading the file (that is, parsing the
> manifest). So where/when is it set when *writing* the file?
> 
> I pushed a maybe-related fix, but in my testing it still does not set
> the version in the manifest... See
> http://cgit.freedesktop.org/libreoffice/core/commit/?id=67db0c190ed2fe0629380ca32d153d3f5ab475dc
> 
> Help appreciated.

the relevant line for other files is in SfxObjectShell::SetupStorage():

>                         xProps->setPropertyValue("Version", uno::makeAny( ODFVER_012_TEXT ) );

xProps is the XStorage; dbaccess (and chart2) do not use SfxBaseModel so
they're missing that bit.

i'm not seeing any code to set "Version" in sw/source/filter/xml,
probably the "Version" you added in the above commit (which was
half-there is a broken way before) doesn't do anything?

ok i've pushed f60b61b2cf87e89938c760877a56bc4dd5c577a9 based on the
above, seems to work here.

>>> I need help on these:
> 
>>> 1) fdo36288-2.odb/forms/Obj42/content.xml[2,17145]:  Error: attribute
>>>    "xlink:href" has a bad value: ".uno:FormController/saveRecord" does
>>>    not satisfy the "anyURI" type
> 
>>>    What is the "right" way to put a .uno URI?
> 
>> anyURI is actually an IRI reference in ODF (not that it makes a
>> difference here).  RFC3987 says:
> 
>>    scheme         = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )
> 
>> ... so the problem is that it starts with "." where only ALPHA is
>> allowed.  was that perhaps legal in a previous URI RFC or how did we end
>> up with this?
> 
> <shrug> I don't know the history, but as far as I can see, that's how
> UNO commands are stored as a URI; that's also used extensively within
> LibreOffice, e.g. to give the action of a toolbar button.

hmm... the only option to make that conforming is to do some hack to
write "uno:" instead and add a "." when reading that ... but it would
create interop issues with older versions, and the ".uno:" urls are
specific to this code-base anyway, it's not like MSO will ever
understand those, so there are no real-world benefits to gain here...




More information about the LibreOffice mailing list