Re: cloning nodes vs. creating new() ones
Jacob Kjome <[email protected]> Mon, 15 Sep 2003 15:11:11 -0500
| Newsgroups | gmane.comp.java.enhydra.xmlc |
|---|---|
| Message-ID | <[email protected]> |
Very close. The standard XMLC way to deal with adding multiple dynamic
elements to the dom goes like this...
HTMLElement parentHook = xmlcObj.getElementParentHook();
HTMLElement templateRow = xmlcObj.getElementTemplateRow();
templateRow.removeAttribute("id");
Node clonedRow = null;
while (businessObject.hasMoreElements()) {
xmlcObj.setTextProductName(businessObject.getProductName());
clonedRow = templateRow.cloneNode(true);
parentHook.appendChild(clonedRow);
}
parentHook.removeChild(templateRow);
The above implies that the templateRow (whatever element it is, be it a
<td>, <li>, <option>, etc...) contains something like <span
id="ProductName">dummy data</span>. You keep on modifying data the
XMLC-generated methods and clone the node. After all that, you get rid of
the original template row, leaving only the nodes you inserted containing
real data. Note that we remove the id attribute of the template row before
doing any cloning since we don't want to have a bunch of cloned nodes with
the same id. This would result in invalid HTML/XHTML.
Hope that makes sense. Note how the methodology above makes heavy use of
template hooks using id's. This makes the code more robust by have an
absolute reference to particular elements which can be checked at compile
time. Counting on getFirstChild() and such to get to nodes that you assume
to be there can fail if the template designer neglects to structure things
as you expect or leaves certain things out that you assumed would be there.
Jake
At 11:03 AM 9/15/2003 -0700, you wrote:
>In my HTML I have a dropdown list with one teacher option. I'm using
>cloneNode() to create another <option> element and calling cloneNode() on
>that teacher's <option> to create the text that goes <option>right
>here</option>. I'm using cloneNode() because I don't know how to go about
>creating a new object that implements HTMLOptionElement. Is the way I'm
>doing this how its supposed to be done, by using the w3c API, or is there
>a better way to instantiate new XMLC specific objects and add them to the
>HTMLSelectElement?
> Thanks,
> -M@
>
> HTMLSelectElement teacherDropdown =
> form.getElementTeacherDropdown();
> HTMLOptionElement teacher1 = form.getElementTeacherOption();
> HTMLOptionElement teacher2 = (HTMLOptionElement)
> teacher1.cloneNode(false);
>
>teacher2.appendChild(teacher1.getFirstChild().cloneNode(false));
> teacher2.getFirstChild().setNodeValue("Mr. Snyde");
> teacher2.setValue("2");
>
>_______________________________________________
>XMLC mailing list
>[email protected]
>http://www.enhydra.org/mailman/listinfo.cgi/xmlc