[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [xml] empty tag



Hi, 

> -----Original Message-----
> From: xml-bounces gnome org [mailto:xml-bounces gnome org] On 
> Behalf Of Daniel Veillard
> 
> On Thu, Jul 06, 2006 at 10:55:40PM -0500, Alex Neblett wrote:
> > Hello!
> > 
> > Somewhat related, is it possible to preserve <tag></tag> 
> rather than have it
> > convert to <tag/> when doing an xslt tranform?
> 
>   No, they are not distinguishable once parsed, they have 
> exactly the same
> data model, it's actually something clearly stated in the XML-1.0 spec
> 
> > I am using libexslt to transform xml into xhtml.
> > 
> > Sadly, the consumer of the xhtml content (to which I do not 
> have source code
> > access) is issued and sometimes interprets <tag/> as <tag> then
> > "autocorrects" the xhtml by inserting a </tag> where it 
> deems appropriate
> > causing all sorts of issues.
> 
>   Their application is not XML compliant, too bad they didn't ask for
> something compliant to the standard. Note that libxml2 
> XHTML-1 serializer
> do use <br /> and other crazy suggestions to workaround 
> non-XML aware clients
> make sure you are outputting the XHTML-1 doctype and libxml2 
> will take care of
> it.
> 
> > Presently, I do a second xslt transform to place comments 
> inside empty tags
> > resulting in <tag><!-- DELETE THIS --></tag> as a poor workaround.
> > 
> > Probably, I am not the first person to encounter this 
> problem and am also
> > open to alternative suggestions as to how to solve this issue.
> 
>   Yup, that's poor, unfortunately there is no magic spell. 
> Have you tried
> inserting an empty text node, I think that should be 
> sufficient to fool 
> libxml2 serializer and force an end tag. However at the XSLT 
> level I'm not sure
> <xsl:text/> will really do what you want, it might be optimized out.
>   XML recommendation was issued in 1998, 8 years ago, if they 
> still use
> non-compliant tools, then as your customer they force you to 
> develop custom
> code, hence more expensive I assume, make them pay the 
> difference, they
> will end up fixing their stack eventually.
> 
> Daniel

The trick with inserting an empty text node won't work anymore
in the next release of Libxslt.
There should be no way on the XSLT side to manipulate
the serialization here. Saxon and MS .NET cannot be fooled by
inserting an empty text node but MSXML 4.0 and Xalan behave
like Libxslt does currently.

This is a serialization issue, and should be handled by customizing
the serialization; if it's possible to customize the serialization
with Libxslt is an other question.

Regards,

Kasimier



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]