Howdy!
I spent some time scratching my head this evening, as libvirt was
stripping the target/@dev entry from my interface[@type='ethernet'].
Turns out that this was caused by the interface name containing a
period, which is rejected by isValidIfname(). As the kernel allows the
creation of such interfaces, it is improper for libvirt to reject them.
The attached one-liner (built against RHEL6b1's libvirt but still
applicable against current master as of 10c681622) fixes this issue.