+ my(undef, $prefix, $nsElem) = $element =~ /((.*?):)?(.*)/;
+ my $new = new XML::LibXML::Element($nsElem);
+ $new->setNamespace(irspy_namespace($prefix), $prefix)
+ if $prefix ne "";
+
+ $new->appendText($value);
+ foreach my $predecessor (reverse @addAfter) {
+ my($child) = $xc->findnodes($predecessor, $node);
+ if (defined $child) {
+ $node->insertAfter($new, $child);
+ #print "Added after '$predecessor'<br/>\n";
+ return;
+ }
+ }
+
+ # Didn't find any of the nodes that are supposed to precede the
+ # new one, so we need to insert the new node as the first of the
+ # parent's children. However *sigh* there is no prependChild()
+ # analogous to appendChild(), so we have to go the long way round.
+ my @children = $node->childNodes();
+ if (@children) {
+ $node->insertBefore($new, $children[0]);
+ #print "Added new first child<br/>\n";
+ } else {
+ $node->appendChild($new);
+ #print "Added new only child<br/>\n";
+ }
+
+ if (0) {