### Eclipse Workspace Patch 1.0
#P tika-parsers
Index: src/test/java/org/apache/tika/parser/html/HtmlParserTest.java
===================================================================
--- src/test/java/org/apache/tika/parser/html/HtmlParserTest.java	(revision 823377)
+++ src/test/java/org/apache/tika/parser/html/HtmlParserTest.java	(working copy)
@@ -20,8 +20,29 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.StringWriter;
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
 
+import javax.xml.namespace.NamespaceContext;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.dom.DOMResult;
+import javax.xml.transform.sax.SAXTransformerFactory;
+import javax.xml.transform.sax.TransformerHandler;
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathFactory;
+
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
 import junit.framework.TestCase;
 
 import org.apache.tika.Tika;
@@ -36,6 +57,28 @@
 
 public class HtmlParserTest extends TestCase {
 
+    private static final class XHTMLNamespaceContext implements NamespaceContext {
+        public String getNamespaceURI(String prefix) {
+            if ("x".equals(prefix)) {
+                return "http://www.w3.org/1999/xhtml";
+            }
+            return null;
+        }
+
+        public String getPrefix(String uri) {
+            if ("http://www.w3.org/1999/xhtml".equals(uri)) {
+                return "x";
+            }
+            return null;
+        }
+
+        public Iterator getPrefixes(String arg0) {
+            List<String> list = new ArrayList<String>();
+            list.add("x");
+            return list.iterator();
+        }
+    }
+
     public void testParseAscii() throws Exception {
         String path = "/test-documents/testHTML.html";
         final StringWriter href = new StringWriter();
@@ -109,6 +152,47 @@
         assertTrue(content.contains("extract content"));
         assertTrue(content.contains("an XHTML document"));
     }
+    
+    public void testHtmlToXhtml() throws Exception {
+        SAXTransformerFactory factory = (SAXTransformerFactory)SAXTransformerFactory.newInstance();
+        TransformerHandler handler = factory.newTransformerHandler();
+        handler.getTransformer().setOutputProperty(OutputKeys.METHOD, "xml");
+        Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
+        handler.setResult(new DOMResult(doc));
+        Metadata metadata = new Metadata();
+        org.apache.tika.sax.XHTMLContentHandler xhtmlContentHandler = new org.apache.tika.sax.XHTMLContentHandler(handler, metadata);
+        HtmlParser parser = new HtmlParser();
+        InputStream content = getClass().getResourceAsStream("/test-documents/testHTML.html");
+        Map<String, Object> contentMap = new HashMap<String, Object>();
+        parser.parse(content, xhtmlContentHandler, metadata, contentMap);
+        NodeList allA = doc.getElementsByTagName("a");
+        Element aElement = (Element)allA.item(0);
+        NamedNodeMap amap = aElement.getAttributes();
+        for (int x = 0; x < amap.getLength(); x++) {
+            Attr attr = (Attr) amap.item(x);
+            assertEquals("", attr.getNamespaceURI());
+        }
+        
+    }
+    
+    public void testXhtmlToXhtml() throws Exception {
+        SAXTransformerFactory factory = (SAXTransformerFactory)SAXTransformerFactory.newInstance();
+        TransformerHandler handler = factory.newTransformerHandler();
+        handler.getTransformer().setOutputProperty(OutputKeys.METHOD, "xml");
+        Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
+        handler.setResult(new DOMResult(doc));
+        Metadata metadata = new Metadata();
+        org.apache.tika.sax.XHTMLContentHandler xhtmlContentHandler = new org.apache.tika.sax.XHTMLContentHandler(handler, metadata);
+        HtmlParser parser = new HtmlParser();
+        InputStream content = getClass().getResourceAsStream("/test-documents/testXHTML.html");
+        Map<String, Object> contentMap = new HashMap<String, Object>();
+        parser.parse(content, xhtmlContentHandler, metadata, contentMap);
+        XPath xpath = XPathFactory.newInstance().newXPath();
+        xpath.setNamespaceContext(new XHTMLNamespaceContext());
+        Node n = (Node)xpath.evaluate("/x:html/x:body/x:p", doc, XPathConstants.NODE);
+        // will be null if the P is pushed down below extra header stuff.
+        assertNotNull(n);
+    }
 
     public void testParseEmpty() throws Exception {
         ContentHandler handler = new BodyContentHandler();
