- From: <jvrdam@xs4all.nl>
- Date: Sun, 24 Mar 2002 13:48:06 +0100 (CET)
- To: <www-dom-ts@w3.org>
Curt wrote:
<curt>
handleEvent basically was intended to be used to define something
like an anonymous inner class.
<var name="myHandler" type="EventListener">
<handleEvent return="true">
<!-- body of method goes here -->
</handleEvent>
</var>
</curt>
Ok, sounds promising.
Lets have a look at a simple example derived from our testsuite to verify
the setup. (bare in mind that this is the first test I'm writing using the
framework...)
----------
public class LSTest {
DOMImplementation implementation ;
DOMImplementationLS lsImplementation;
Document document ;
DOMBuilder builder ;
MyDOMBuilderFilter myfilter ;
......
public void testFilterStartNode() throws Exception {
lsImplementation = (DOMImplementationLS) implementation;
builder = lsImplementation.createDOMBuilder
(DOMImplementationLS.MODE_SYNCHRONOUS);
myfilter = new MyDOMBuilderFilter();
builder.setFilter(myfilter);
document = builder.parseURI(getURL("test.xml").toString());
assertEquals("elt2 is skipped, so document element has only one child",
1, document.getDocumentElement().getChildNodes().getLength());
assertEquals("That one child is elt1", "elt1",
document.getDocumentElement().getFirstChild().getNodeName());
}
}
class MyDOMBuilderFilter implement DOMBuilderFilter{
public int startNode(Node element) {
boolean accept = ! element.getNodeName().equals("elt2");
if (accept) {
return NodeFilter.FILTER_ACCEPT;
} else {
return NodeFilter.FILTER_REJECT;
}
}
public int endNode(Node enode) {
return NodeFilter.FILTER_ACCEPT;
}
public int getWhatToShow() {
return NodeFilter.SHOW_ELEMENT;
}
}
-------------
The XML file for the actual test would look something like:
<test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-3"
name="builderfilter">
<metadata>
<title>attrSpecifiedValue</title>
<creator>X-Hive</creator>
<description></description>
<contributor>X-Hive</contributor>
<date qualifier="created">2002-03-23</date>
<subject resource="http://www.w3.org/TR/DOM-Level-3-ASLS/load-
save.html#LS-Interfaces-DOMBuilderFilter"/>
</metadata>
<var name="implementation" type="DOMImplementation"/>
<var name="lsImplementation" type="DOMImplementationLS"/>
<var name="document" type="Document"/>
<var name="builder" type="DOMBuilder"/>
<var name="myfilter" type="MyDOMBuilderFilter">
<var name="accept" type="boolean"/>
<startNode return="returnValue" snode="element">
<nodeName var="accept" obj="element"/>
<if>
<equals actual="accept" expected="elt2" ignoreCase="false"/>
<assign var="returnValue" value="FILTER_REJECT"/>
<else>
<assign var="returnValue" value="FILTER_ACCEPT"/>
</else>
</if>
</startNode>
<endNode return="returnValue" enode="endnode">
<assign var="returnValue" value="FILTER_ACCEPT"/>
</endNode>
<getWhatToShow return="returnValue">
<assign var="returnValue" value="SHOW_ELEMENT"/>
</getWhatToShow>
</var>
<implementationLS var="lsImplementation"/>
<createDOMBuilder var="builder" obj="lsImplementation"
mode="MODE_SYNCHRONOUS"/>
<setFilter obj="builder" filter="myfilter"/>
<parseURI var="document" obj="builder" uri="test.xml"/>
-----asserts-----
</test>
--------------
If this is somehow correct than I guess the dtd needs some work, especially
when you look at the definition of <var>
By the way, how are constants handled ?
jeroen
--
Jeroen van Rotterdam
X-Hive Corporation
http://www.x-hive.com
jeroen@x-hive.com
Received on Sunday, 24 March 2002 07:43:49 UTC