diff --git a/documentation/extensions/xhtml.html b/documentation/extensions/xhtml.html new file mode 100644 index 000000000..9f3ab46d5 --- /dev/null +++ b/documentation/extensions/xhtml.html @@ -0,0 +1,149 @@ + +
++This extension is an XHTML subset for use in exchanging formatted messages. +
Follow these links to learn how to compose, send and receive XHTML messages:
+ +JEP related: JEP-71 + ++ +Description
+ +The first step in order to send an XHTML message is to compose it. Smack provides a special +class that helps to build valid XHTML messages hiding any low level complexity. +For special situations, advanced users may decide not to use the helper class and generate +the XHTML by themselves. Even for these situations Smack provides a well defined entry point +in order to add the generated XHTML content to a given message.
+ +Usage+ +Create an instance of XHTMLText specifying the style and language of the body. +You can add several XHTML bodies to the message but each body should be for a different language. +Once you have an XHTMLText you can start to append tags and text to it. In order to append tags there +are several messages that you can use. For each XHTML defined tag there is a message that you can send. +In order to add text you can send the message #append(String textToAppend).
+ +After you have configured the XHTML text, the last step you have to do is to add the XHTML text +to the message you want to send. If you decided to create the XHTML text by yourself, you will have to +follow this last step too. In order to add the XHTML text to the message send the message +#addBody(Message message, String body) to the XHTMLManager class where message +is the message that will receive the XHTML body and body is the string to add as an XHTML body to +the message.
+ +Example
+
+In this example we can see how to compose the following XHTML message:
+<body><p style='font-size:large'>Hey John, this is my new <span
+ style='color:green'>green</span><em>!!!!</em></p></body>
+
++ +// Create a message to send + Message msg = chat.createMessage(); + msg.setSubject("Any subject you want"); + msg.setBody("Hey John, this is my new green!!!!"); + + // Create an XHTMLText to send with the message + XHTMLText xhtmlText = new XHTMLText(null, null); + xhtmlText.appendOpenParagraphTag("font-size:large"); + xhtmlText.append("Hey John, this is my new "); + xhtmlText.appendOpenSpanTag("color:green"); + xhtmlText.append("green"); + xhtmlText.appendCloseSpanTag(); + xhtmlText.appendOpenEmTag(); + xhtmlText.append("!!!!"); + xhtmlText.appendCloseEmTag(); + xhtmlText.appendCloseParagraphTag(); + + // Add the XHTML text to the message + XHTMLManager.addBody(msg, xhtmlText.toString()); + ++
+ +Description
+ +After you have composed an XHTML message you will want to send it. Once you have added +the XHTML content to the message you want to send you are almost done. The last step is to send +the message as you do with any other message.
+ +Usage+ +An XHTML message is like any regular message, therefore to send the message you can follow +the usual steps you do in order to send a message. For example, to send a message as part +of a chat just use the message #send(Message) of Chat or you can use +the message #send(Packet) of XMPPConnection.
+ +Example+ +In this example we can see how to send a message with XHTML content as part of a chat. +
++ +// Create a message to send + Message msg = chat.createMessage(); + // Obtain the XHTML text to send from somewhere + String xhtmlBody = getXHTMLTextToSend(); + + // Add the XHTML text to the message + XHTMLManager.addBody(msg, xhtmlBody); + + // Send the message that contains the XHTML + chat1.sendMessage(msg); ++
+ +Description
+ +It is also possible to obtain the XHTML content from a received message. Remember +that the specification defines that a message may contain several XHTML bodies +where each body should be for a different language.
+ +Usage+ +To get the XHTML bodies of a given message just send the message #getBodies(Message) + to the class XHTMLManager. The answer of this message will be an + Iterator with the different XHTML bodies of the message or null if none.
+ +Example+ +In this example we can see how to create a PacketListener that obtains the XHTML bodies of any received message. +
++ + +// Create a listener for the chat and display any XHTML content + PacketListener packetListener = new PacketListener() { + public void processPacket(Packet packet) { + Message message = (Message) packet; + // Obtain the XHTML bodies of the message + Iterator it = XHTMLManager.getBodies(message); + if (it != null) { + // Display the bodies on the console + while (it.hasNext()) { + String body = (String) it.next(); + System.out.println(body); + } + } + }; + chat.addMessageListener(packetListener); + ++