On Sep 17, 2010, at 1:46 PM, Denis Gervalle wrote:

> Hi Vincent,
> 
> On Fri, Sep 17, 2010 at 08:12, Vincent Massol <[email protected]> wrote:
> 
>> Hi,
>> 
>> I thought it would be good to summarize the rules I'm implementing/fixing
>> relative to escaping in link references for both XWiki Syntax 2.0 and the
>> new XWiki Syntax 2.1 I have started. This will later go in the XWiki Syntax
>> page on xwiki.org.
>> 
>> There are 2 set of rules:
>> - For entity references
>> - For link references
>> 
>> Entity References
>> ==============
>> 
>> The rules are (independent of the XWiki Syntax):
>> - if you need a \ in any part of the reference then you need to double it
>> with \\
>> - For a : in a space name it's \:
>> - For a . in a page name it's \.
>> - For a @ in an attachment name it's \@
>> - For a ^ in an object name it's \^
>> - For a . in an object property name it's \.
>> 
>> Link References
>> =============
>> 
>> For XWiki Syntax 2.0
>> ----------------------------
>> 
>> The rules are:
>> 
>> - if the link reference points to a document and you want a ?, #, @ or \ in
>> any part of the reference you need to escape them with \?, \#, \@ or \\.
>> 
>> Note that when resolving a link reference to a document the link reference
>> escapes are first unescaped and then the entity reference is unescaped. For
>> ex for: [[label>>my\.page]] will result in a link to a page named "my.page"
>> and [[label>>my\?page]] to "my?page".
>> 
>> - if link reference points to a mailto then no escaping is performed at
>> all. Thus [[label>>mailto:[email protected]]] will generate in HTML <a
>> href="mailto:[email protected]";>[email protected]</a>
>> - same for link refs to URLs
>> - For link to attachments, only the entity reference escape is performed,
>> no additional escape is done for the link reference.
>> - For link to interwiki, if the interwiki path needs a @ then it must be
>> escaped with \...@. Same for the interwiki alias. Example:
>> [[label>>wh...@ever@wi...@pedia]]
>> 
>> For XWiki Syntax 2.1
>> ----------------------------
>> 
>> The rules are:
>> 
>> - if the link reference points to a document and you want a ?, # or \ in
>> any part of the reference you need to escape them with \?, \#, or \\.
>> - if link reference points to a mailto then no escaping is performed at
>> all.
>> - same for link refs to URLs
>> - For link to attachments, only the entity reference escape is performed,
>> no additional escape is done for the link reference.
>> - For link to interwiki, no escaping is performed at all (and ":" is not
>> allowed in the interwiki alias). Example:
>> [[label>>interwiki:wikipedia:what\\ever]] will generate an interwiki path of
>> what\\ever
>> 
>> Open Questions
>> =============
>> 
>> Do we want to allow \\ in any link references (mailto, attach, interwiki,
>> url, etc) and unescape it to \ or should we keep the rules defined above?
>> 
> 
> Well, it is really too complex, I cannot imagine that I should explain that
> to an end-user. My feeling is that we need to be able to write a simplified
> rule like this:
> 
> "In link reference, \ (backslash), : (colon), . (dot), @ (atsign) and ^
> (circumflex) may have a special meaning, and may need to be escaped by
> preceding them with backslash when used literally. In doubt, you may always
> escape the special characters in link reference if you need them
> litterally."

You're oversimplifying a lot. First you haven't differentiated references from 
links. They're 2 different concepts and exist independently of one another. 
Then you're mixing 2.0 syntax and 2.1 syntax which are different (the @ sign is 
an example of difference between both).

> Obviously, the implementation could be a clever mix of the your initial
> rules and support "over" escaping.
> I would really like to see that as the rules for 2.1 syntax unless there is
> strong reasons not to do so that I am not aware of.
> 
> WDYT ?

I'm not sure. I agree for references to documents but I don't think we should 
do any escaping for the other types.

Thanks
-Vincent

_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to