I'm no good at reading relax/ng, but I think that this:
<group>
<ref name='os'/>
<optional>
<ref name='bootloader'/>
</optional>
</group>
<group>
<ref name='bootloader'/>
<optional>
<ref name='os'/>
</optional>
</group>
means I can specify either os, or bootloader, or both. The latter case
makes a lot of sense when using pygrub. However, src/xml.c doesn't
implement those semantics:
1219 if (!bootloader) {
1220 if ((node = virXPathNode("/domain/os[1]", ctxt)) != NULL) {
1221 /* Analyze of the os description, based on HVM or PV. */
1222 str = virXPathString("string(/domain/os/type[1])", ctxt);
I think that we should just remove the "if (!bootloader) {" bit here -
agree?
I'm looking at the schema and I don't see (at least)
domain/devices/input, which appears to be used in src/xml.c too - is the
schema out of date in 0.3.3 ? The tests don't pass xmllint!
thanks
john