On Thu, Oct 13, 2022 at 14:25:30 +0100, Daniel P. Berrangé wrote: > On Thu, Oct 13, 2022 at 02:57:33PM +0200, Peter Krempa wrote: > > The validation of a '<filesystem type='mount'>' device fails if the > > elements inside are not ordered in the order in the schema despite using > > <interleave>. This is a bug in libxml2's validator as removing the > > '<optional>' property from the definition of the 'type' attribute with > > 'mount' variable fixes the problem. > > > > I've reported it as another instance of a seemingly related issue: > > > > https://gitlab.gnome.org/GNOME/libxml2/-/issues/131 > > > > Meanwhile libvirt can re-arrange the schema by extracting the common > > bits into a new definition and referencing them from each of the choice > > groups explicitly. > > > > Resolves: https://gitlab.com/libvirt/libvirt/-/issues/392 > > Signed-off-by: Peter Krempa <pkrempa@xxxxxxxxxx> > > --- > > src/conf/schemas/domaincommon.rng | 365 +++++++++++++++--------------- > > 1 file changed, 186 insertions(+), 179 deletions(-) > > Reviewed-by: Daniel P. Berrangé <berrange@xxxxxxxxxx> > > > We've had many of these schema ordering problems, and I wondered if > we've got them all yet. To the surprise of absolutely no one, the > answer is no. I'm not surprised about that. I was surprised though about what this patch fixes as the schema is actually correct in this case. [...] > reverse(root) > print(etree.tostring(tree, pretty_print=True).decode('utf8')) > > > $ for i in `find -name '*.xml' ` > do > echo $1 > ./xmlrngfuzz.py < $i > ${i%%xml}rev.xml > done This also includes stuff like: - '*-invalid.xml' files - these are excluded from validation as they are intentionally invalid, but no longer match exclusion pattern after reversal - output-only XML such as capabilities/domcapabilities - we are strictly defining the order there, I'm not sure if it makes sense to allow interleaving Disregarding the above it's not that bad. I've seen ~40 instances e.g. in qemuxml2argvdata boiling down to 7 actual mistakes in the scheama. I'll have a look at some more input xmls, but I don't feel like we should touch the schema for output-only ones.