Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCurtis D'Entremont2006-10-23 23:18:59 +0000
committerCurtis D'Entremont2006-10-23 23:18:59 +0000
commitafc1c2203e2b118c686b257dc851f4969216918f (patch)
tree1dea2b6d1b3144c12745ea96ef32c97b858e6f90
parent4ea1fcd13003b11c4be100f9a0506c9da1d54553 (diff)
downloadeclipse.platform.ua-afc1c2203e2b118c686b257dc851f4969216918f.tar.gz
eclipse.platform.ua-afc1c2203e2b118c686b257dc851f4969216918f.tar.xz
eclipse.platform.ua-afc1c2203e2b118c686b257dc851f4969216918f.zip
160969 [Help] Exception occurred while adding document xxx.xhtml to index.
-rw-r--r--org.eclipse.help.base/src/org/eclipse/help/internal/xhtml/DynamicXHTMLProcessor.java4
-rw-r--r--org.eclipse.help.base/src/org/eclipse/help/internal/xhtml/XHTMLCharsetHandler.java31
2 files changed, 34 insertions, 1 deletions
diff --git a/org.eclipse.help.base/src/org/eclipse/help/internal/xhtml/DynamicXHTMLProcessor.java b/org.eclipse.help.base/src/org/eclipse/help/internal/xhtml/DynamicXHTMLProcessor.java
index 2fb68d733..bf1db1d57 100644
--- a/org.eclipse.help.base/src/org/eclipse/help/internal/xhtml/DynamicXHTMLProcessor.java
+++ b/org.eclipse.help.base/src/org/eclipse/help/internal/xhtml/DynamicXHTMLProcessor.java
@@ -47,6 +47,7 @@ public class DynamicXHTMLProcessor {
xmlProcessor = new XMLProcessor(new DOMProcessorHandler[] {
new IncludeHandler(locale),
new ExtensionHandler(locale),
+ new XHTMLCharsetHandler(),
new FilterHandler()
});
}
@@ -55,7 +56,8 @@ public class DynamicXHTMLProcessor {
if (xmlProcessorNoFilter == null) {
xmlProcessorNoFilter = new XMLProcessor(new DOMProcessorHandler[] {
new IncludeHandler(locale),
- new ExtensionHandler(locale)
+ new ExtensionHandler(locale),
+ new XHTMLCharsetHandler()
});
}
return xmlProcessorNoFilter.process(buf, href);
diff --git a/org.eclipse.help.base/src/org/eclipse/help/internal/xhtml/XHTMLCharsetHandler.java b/org.eclipse.help.base/src/org/eclipse/help/internal/xhtml/XHTMLCharsetHandler.java
new file mode 100644
index 000000000..fb636b1b0
--- /dev/null
+++ b/org.eclipse.help.base/src/org/eclipse/help/internal/xhtml/XHTMLCharsetHandler.java
@@ -0,0 +1,31 @@
+package org.eclipse.help.internal.xhtml;
+
+import org.eclipse.help.internal.dynamic.DOMProcessorHandler;
+import org.w3c.dom.Element;
+
+/*
+ * Converts the charset in XHTML meta tag to UTF-8. This is the encoding
+ * output by the XMLProcessor, and we need the charset in the meta tags
+ * to match, otherwise browsers will be confused.
+ */
+public class XHTMLCharsetHandler extends DOMProcessorHandler {
+
+ private static final String ELEMENT_META = "meta"; //$NON-NLS-1$
+ private static final String ATTRIBUTE_CONTENT = "content"; //$NON-NLS-1$
+ private static final String PREFIX_CHARSET = "text/html; charset="; //$NON-NLS-1$
+ private static final String ENCODING_UTF8 = "UTF-8"; //$NON-NLS-1$
+
+ /* (non-Javadoc)
+ * @see org.eclipse.help.internal.dynamic.DOMProcessorHandler#handle(org.w3c.dom.Element, java.lang.String)
+ */
+ public short handle(Element elem, String id) {
+ if (ELEMENT_META.equals(elem.getNodeName())) {
+ String content = elem.getAttribute(ATTRIBUTE_CONTENT);
+ if (content.startsWith(PREFIX_CHARSET)) {
+ elem.setAttribute(ATTRIBUTE_CONTENT, PREFIX_CHARSET + ENCODING_UTF8);
+ return HANDLED_CONTINUE;
+ }
+ }
+ return UNHANDLED;
+ }
+}

Back to the top