gazebosim/sdformat

XSD schema generation doesn't parse all nested elements

Aperta

#633 aperta il 24 lug 2021

 (2 commenti) (0 reazioni) (0 assegnatari)C++ (122 fork)auto 404
bughelp wanted

Metriche repository

Star
 (216 stelle)
Metriche merge PR
 (Metriche PR in attesa)

Descrizione

The current xmlschema.b parses each X.sdf file and generates an accompanying X.xsd file; however, if any element other than the root element contains a nested <include> tag this tag is ignored. This is because the root element is parsed by the function printXSD, whereas other elements are parsed by printElem and the latter doesn't check for <include> tags.

This is a problem with more recent SDFormat files, which introduce <pose> as a complex type with an optionally nested <relative_to>. Pose is now <include>d, and hence never makes it into the produced .xsd.

The two solutions I can think of are: (1) copy the include parsing code from printXSD to printElem (works, but dirty). Refactor xmlschema.b and merge all code paths that parse element tags.

Guida contributor