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 @@ + + +XHTML Support + + + + + +
XHTML Support

+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 + +
+ +
Compose an XHTML Message

+ +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());
+
+
+
+ +
+ +
Send an XHTML Message

+ +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);
+
+
+ +
+ +
Receive an XHTML Message

+ +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);
+
+
+
+ + +