I think the Cocoon XIncludeTransformer might be missing some important functionality. Namely, I don't think it inserts xml:base attributes according to the specification (see http://www.w3.org/TR/2004/REC-xinclude-20041220/#base ).

For example, given these source documents:

-------------------foo.xml----------------------
<?xml version="1.0" encoding="UTF-8"?>
<doc xmlns:xi="http://www.w3.org/2001/XInclude";>
   <xi:include href="Content/bar.xml"/>
</doc>
---------------Content/bar.xml------------------
<?xml version="1.0" encoding="UTF-8"?>
<included>
   Text
</included>

And the pipeline fragment:

<map:match pattern="foo.xml">
   <map:generate src="foo.xml"/>
   <map:transform type="xinclude"/>
   <map:serialize type="xml"/>
</map:match>

I would expect the serialized output to be:

<?xml version="1.0" encoding="UTF-8"?>
<doc xmlns:xi="http://www.w3.org/2001/XInclude";>
   <included xml:base="Content/bar.xml">
       Text
   </included>
</doc>

However, in reality, the xml:base attribute is not present. Trying this with the command line XML parser, xmllint, yields the expected result. A quick scan of the XIncludeTransformer source turned up nothing that looked like it was meant to take care of this base URI fixup. Maybe there's something I'm missing? Can anyone else confirm this issue?

The reason I'd like to see this functionality is that my included documents, located in subdirectories, will often have relative file URIs pointing to images, and those paths break when included into a document in a different directory. I'd like to be able to use the xml:base attributes to resolve those URIs. Is there perhaps another mechanism to deal with this issue?

Thanks for any insight,
Andrew Cave


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to