>>516
ありがとうございます

例の英語のエラーメッセージですが僕は
「ルート要素が既に存在します」と、思っていました
でも実際の訳は
「ルート要素の情報が一致しない(あるはずなのに無い)」なんですね

「ルート要素ある」⇔「ルート要素の情報を持ってる」

これは、大きな勘違いでした。でもこの指摘によりいろんな謎が解けました
指摘していただいたparentをはずす処理に当たるのがorg.jdom.Element#detach()です。
JDOMのJavadocはもっていないのですが、
org.jdom。Elementのソースコードのコメントに以下のように書いてあったので期待する動作をすると思われます
/ * This detaches the element from its parent, or does nothing if the
/ * element has no parent.


で、修正後のコードです
Element selected = (Element) XPath.selectSingleNode(inputdoc, "/staff-list/staff[@id=\"001\"] ");
selected.detach();//←org.jdom.Element#detach() 戻り値を利用せずにそのまま使えそうです
//selected=(Element)selected.clone();←コレでも動作しますが、detachのほうがスマートですかね
Document resul = new Document(selected);
XMLOutputter out = new XMLOutputter(" ", true, "Shift_JIS");
out.output(resul, System.out);