[Dom4j][Rules] What's wromng with this ?

C

Cram TeXeD

Hello.
I got a simple XML (retrieved with DB with Oracle XSU) like this
<rowset>
<row num="1">
<foo>John Doo</foo>
...
<row/>
<rowset>

And I'm using
org.dom4j.rule package this way.

-----------------------------------------
package xx.xx.xxx.dirty.sources;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.rule.Action;
import org.dom4j.rule.Rule;
import org.dom4j.rule.Stylesheet;
import org.dom4j.tree.DefaultDocument;
import org.dom4j.tree.DefaultElement;

public class DirtyXsuPersonne implements DirtyTransformSource {


Stylesheet selector = new Stylesheet();
Document toRet;
Element root;
String usecase="";

public DirtyXsuPersonne(String useCase){
this.usecase = useCase;
selector.addRule(new
Rule(DocumentHelper.createPattern("/rowset"), new headerBlock()));
selector.addRule(new
Rule(DocumentHelper.createPattern("/rowset/row"), new rowBlock()));
selector.addRule(new
Rule(DocumentHelper.createPattern("/rowset/row/*"), new dataBlock()));
}

public Document run(Document doc) throws Exception {
selector.run(doc);
return toRet;
}

private class headerBlock implements Action {
public void run(Node node) throws Exception {
root = new DefaultElement("transaction");
toRet = new DefaultDocument(root);
root.addAttribute("application","MyApp");
}
}

private class rowBlock implements Action {
public void run(Node node) throws Exception {
root.addElement("usecase",usecase);
}
}
private class dataBlock implements Action {
public void run(Node node) throws Exception {
Element data = new DefaultElement("data");
data.addAttribute("name",node.getName());
Element value = new DefaultElement("value");
value.addText(node.getText());
data.add(value);
root.add(data);
}
}
}


-----------------------------------------

But it seems to only fire first rule "/rowset".
If I flip rules, it always fire the first.
As the dom4j mailing list is down, I post this here.
Do someone got an idea ?

Thanks ?

8:0) Cram TeXeD
 
C

Cram TeXeD

Hello.
I got a simple XML (retrieved with DB with Oracle XSU) like this
<rowset>
<row num="1">
<foo>John Doo</foo>
...
<row/>
<rowset>

And I'm using
org.dom4j.rule package this way.

Ok. There's nobody to answer my question ? I answering myself !

You have to use StyleSheet appyTemplate methode inside Action
implented methode.

8:0) Cram TeXeD
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,434
Messages
2,571,691
Members
48,796
Latest member
Greg L.

Latest Threads

Top