diff --git a/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/doc/XWikiAttachment.java b/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/doc/XWikiAttachment.java
index 5436c26..de6c6d5 100644
--- a/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/doc/XWikiAttachment.java
+++ b/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/doc/XWikiAttachment.java
@@ -19,6 +19,7 @@
*/
package com.xpn.xwiki.doc;
+import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -28,6 +29,7 @@
import java.util.List;
import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.StringUtils;
import org.dom4j.Document;
import org.dom4j.DocumentException;
@@ -404,7 +406,13 @@ public void toXML(XMLWriter wr, boolean bWithAttachmentContent, boolean bWithVer
loadContent(context);
XWikiAttachmentContent acontent = getAttachment_content();
if (acontent != null) {
- wr.writeBase64(el, getAttachment_content().getContentInputStream());
+ String contentType = getMimeType(context);
+ if (contentType.startsWith("text/")) {
+ String sContent = new String(acontent.getContent());
+ wr.write(el, new ByteArrayInputStream(StringEscapeUtils.escapeXml(sContent).getBytes()));
+ } else {
+ wr.writeBase64(el, getAttachment_content().getContentInputStream());
+ }
} else {
el.addText("");
wr.write(el);
diff --git a/xwiki-platform-core/xwiki-platform-web/src/main/webapp/WEB-INF/web.xml b/xwiki-platform-core/xwiki-platform-web/src/main/webapp/WEB-INF/web.xml
index dcf610b..cbc29fe 100644
--- a/xwiki-platform-core/xwiki-platform-web/src/main/webapp/WEB-INF/web.xml
+++ b/xwiki-platform-core/xwiki-platform-web/src/main/webapp/WEB-INF/web.xml
@@ -301,6 +301,12 @@
text/css
+
+
+ vm
+ text/velocity
+
+
htc