
import java.io.ByteArrayInputStream;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.FactoryConfigurationError;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.apache.commons.jxpath.JXPathContext;
import org.xml.sax.SAXException;

public class NamespacedDOMAttributesBug {
    public static void main (String[] args) {
        try {
            String XML = "<?xml version='1.0' encoding='UTF-8'?><ns:root xmlns:ns='a-namespace'><ns:foo ns:bar='wrong'/></ns:root>";
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            factory.setNamespaceAware(true);
            factory.setValidating(false);
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document test = builder.parse(new ByteArrayInputStream(XML.getBytes()));
            JXPathContext context = JXPathContext.newContext(test);
            context.setLenient(true);

            System.out.println("ns:bar='" + context.getValue("/ns:root/ns:foo/@ns:bar") + "'");
            System.out.println("ns:any-attribute-name-can-go-here='" + context.getValue("/ns:root/ns:foo/@ns:any-attribute-name-can-go-here") + "'");
        }
        catch (Exception e) {
            System.err.println(e);
        }
    }
}
