Vincent Massol wrote:
> On Jun 27, 2009, at 10:16 AM, Sergiu Dumitriu wrote:
> 
>> Vincent Massol wrote:
>>> On Jun 26, 2009, at 8:37 PM, Sergiu Dumitriu wrote:
>>>
>>>> vmassol (SVN) wrote:
>>>>> Author: vmassol
>>>>> Date: 2009-06-19 21:18:47 +0200 (Fri, 19 Jun 2009)
>>>>> New Revision: 21360
>>>>>
>>>>> Modified:
>>>>>  platform/core/branches/xwiki-core-1.8/xwiki-xml/src/main/java/org/
>>>>> xwiki/xml/XMLUtils.java
>>>>>  platform/core/branches/xwiki-core-1.8/xwiki-xml/src/test/java/org/
>>>>> xwiki/xml/internal/html/DefaultHTMLCleanerTest.java
>>>>> Log:
>>>>> XWIKI-4005: HMTL Cleaner should not expand empty elements for BR
>>>>> and HR in order to support IE6
>>>>>
>>>>>
>>>>> Modified: platform/core/branches/xwiki-core-1.8/xwiki-xml/src/main/
>>>>> java/org/xwiki/xml/XMLUtils.java
>>>>> ===================================================================
>>>>> --- platform/core/branches/xwiki-core-1.8/xwiki-xml/src/main/java/
>>>>> org/xwiki/xml/XMLUtils.java       2009-06-19 16:35:08 UTC (rev 21359)
>>>>> +++ platform/core/branches/xwiki-core-1.8/xwiki-xml/src/main/java/
>>>>> org/xwiki/xml/XMLUtils.java       2009-06-19 19:18:47 UTC (rev 21360)
>>>>> @@ -213,7 +225,16 @@
>>>>>        format.setOmitDeclaration(omitDeclaration);
>>>>>
>>>>>        XMLOutputter outputter = new XWikiXMLOutputter(format,
>>>>> omitDoctype);
>>>>> -        return outputter.outputString(jdomDoc);
>>>>> +        String result = outputter.outputString(jdomDoc);
>>>>> +
>>>>> +        // Since we need to support IE6 we must generate compact
>>>>> form for the following HTML elements (otherwise they
>>>>> +        // won't be understood by IE6):
>>>>> +        for (String specialElement : OMIT_ELEMENT_CLOSE_SET) {
>>>>> +            result =
>>>>> result.replaceAll(MessageFormat.format("<{0}></{0}>",
>>>>> specialElement),
>>>> Shouldn't this be something like "<{0}[^>]*+></{0}>"? I doubt that
>>>> there
>>>> really is <img></img>, and if it is, it won't make much difference
>>>> which
>>>> way it's written.
>>> This is not a regex but a simple MessageFormat.format(). BTW A Regex
>>> would probably be better since the Pattern could be precompiled (at
>>> the expense of more complex code though).
>>>
>> No, it is a regexp. The result of the MessageFormat is used for
>> replaceAll, which treats the first argument as a regexp.
> 
> ah right :)
> 
> Now I don't understand your regex does.
> 
> I understand it would replace for ex "<imghello whatever></img>". Why  
> would we want this?
> 
> It's very likely I don't understand the regex you pasted since it  
> doesnt make sense to me.

Hm, it won't work correctly like this, since the new value must take 
into account the attributes.

The goal is to replace <img src="/some/image.png"></img> with <img 
src="/some/image.png"/>. You used a long list of elements that should 
not use the <x></x> closing tag format, but most of those never appear 
without attributes. The regex is not rigorous, meaning that it accepts 
non-valid syntax, but since the source comes from our printer, which 
*should* in theory generate simple, valid markup, this simpler regex 
should be fine.

So, the actual code should be:

result = result.replaceAll(MessageFormat.format("<{0}([^>]*+)></{0}>", 
specialElement), MessageFormat.format("<{0}$1/>", specialElement));
-- 
Sergiu Dumitriu
http://purl.org/net/sergiu/
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to