Sorry, I don't mean to spam the list, but does anyone know why the
doctype would cause the "/html/body" and "/html/head" XPATH expressions
to break?
They both work without the doctype.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Title</title>
<style>
body{
background: blue;
}
</style>
</head>
<body>
<div id="main">
HI!
</div>
</body>
</html>
./run.sh test3.html "/descendant::[EMAIL PROTECTED]'main']" "/html" "/html/body"
"/html/head"
Build time: 2283
XPATH time: 429
XPATH time: 2
XPATH time: 10
NO MATCHES!
XPATH time: 1
NO MATCHES!
Serialize time: 28
Transform time: 203
Evan Kirkconnell wrote:
Hello all,
I can't seem to get XPATH to work properly. The only thing I've been
able to select is the root node.
Any help is much apreciated.
Thanks,
--Evan
Here's my HTML, code, and input/output. I think I must be doing
something fundamentally wrong, but can't seem to spot it.
test.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Title</title>
<style>
body{
background: blue;
}
</style>
</head>
<body>
<div id="main">
HI!
</div>
</body>
</html>
CODE:(note: args[0] is the file, args[1] is the XPath expression)
Document doc = DOM.getCachedDocument(args[0]);
Element root = doc.getRootElement();
List l = root.selectNodes(args[1]);
if(l.size() > 0){
Element elem = (Element)l.get(0);
Element p = elem.addElement("p");
p.setText("hi");
}else{
System.out.println(" NO MATCHES! ");
}
DOM.print( doc, new PrintWriter(System.out, true) );
TRIES:
./run.sh test.html /html/body
NO MATCHES!
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Title</title>
<style xml:space="preserve">
body{
background: blue;
}
</style>
</head>
<body>
<div id="main">
HI!
</div>
</body>
</html>
./run.sh test.html *
NO MATCHES!
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Title</title>
<style xml:space="preserve">
body{
background: blue;
}
</style>
</head>
<body>
<div id="main">
HI!
</div>
</body>
</html>
This one works:
./run.sh test.html .
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Title</title>
<style xml:space="preserve">
body{
background: blue;
}
</style>
</head>
<body>
<div id="main">
HI!
</div>
</body>
<p>hi</p>
</html>
I don't really understand this either. If the context node doesn't
throw this, why would the root node?
./run.sh test.html /
java.lang.ClassCastException
at edu.uark.util.dom.DOMTest.main(DOMTest.java:17)
-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems? Stop! Download the new AJAX search engine that makes
searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
dom4j-user mailing list
dom4j-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dom4j-user