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