Это выглядит довольно странно, но если я правильно понимаю, вы бы хотели написать свои собственные обработчики событий, чтобы они могли легко получить ссылку на элемент, к которому они присоединены. Это не должно быть сложно; в конце концов, вы сами вызываете пользовательский обработчик, так что вы уже знаете, к какому элементу он присоединен - вам просто нужно передать его самому обработчику:
function init(aThis) {
var result = document.evaluate("//@testd_on_load",
aThis.document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
for (var i=0; i<result.snapshotLength; i++) {
var n = result.snapshotItem(i); // attribute node
var s = n.nodeValue; // script to run
var e = n.ownerElement; // element for context
(new Function(s)).call(e); // run script with `this` set to the context node
}
}
Теперь вы можете упростить код вашего события:
<xsl:attribute name="testd_on_load">testdOnChange(this);</xsl:attribute>