[Standards] XEP 297 xmlns and lang preservation in forwarding

Kurt Zeilenga kurt.zeilenga at isode.com
Thu Aug 14 17:12:26 UTC 2014


While XEP 298 does say:
The namespace of the forwarded stanza MUST be preserved (this is typically 'jabber:client'). If no 'xmlns' is set for the stanza then as per XML namespacing rules it would inherit the 'urn:xmpp:forward:0' namespace, which is wrong.

This, by itself, is insufficient to ensure all relevant namespaces of the original stanza are preserved.  Any namespaces of the stream which the original message was received on, as well those of the original stanza need to preserved if used in the original stanza, need to preserved.    Also, lang tags should preserved.

One way to do this is for the forwarded to copy all the name space declarations of the stream the original message was received into the forward element, use a prefix for the 'urn:xmpp:forward:0' which doesn't clash, and copy all prefixes of the original message with the original message, using the same prefixes as on the stream it was received on.

So, for instance, if one received:

   <stream:stream
       from='juliet at im.example.com'
       to='im.example.com'
       version='1.0'
       xml:lang='en'
       xmlns='jabber:client'
       xmlns:stream='http://etherx.jabber.org/streams'>
     <message>
       <body>foo</body>
     </message>
   </stream:stream>


The element to be forwarded (inside a suitable message element) would be:

   <forwarded:forwarded xmlns:forwarded='urn:xmpp:forward:0
       xml:lang='en'
       xmlns='jabber:client'
       xmlns:stream='http://etherx.jabber.org/streams'>
     <message>
       <body>foo</body>
     </message>
   </forwarded:forwarded>

Or if one received:

   <stream
       from='juliet at im.example.com'
       to='im.example.com'
       version='1.0'
       xml:lang='en'
       xmlns='http://etherx.jabber.org/streams'>
     <message xmlns='jabber:client'>
       <body>foo</body>
     </message>
   </stream>

   <forwarded:forwarded xmlns:forwarded='urn:xmpp:forward:0'xml:lang='en'
       xml:lang='en'
       xmlns='http://etherx.jabber.org/streams'>
     <message xmlns='jabber:client'>
       <body>foo</body>
     </message>
   </forwarded:forwarded>


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.jabber.org/pipermail/standards/attachments/20140814/02834b7c/attachment.html>


More information about the Standards mailing list