POST /api/convert/xlsform-to-ddi returns only the children of formtransform's <dataDscr>. ddixml.DataDscr cuts away everything formtransform writes on <stdyDscr>:
- the title (
titl/parTitl) and IDNo;
- settings:
cdl:setting, default_language;
- language names and order:
cdl:language;
- note rows with no question after them:
notes[@type='instruction'] with cdl:position;
- metadata rows (
start, deviceid, …): cdl:row, cdl:row_label, cdl:row_column.
So XLSForm → /api/convert/xlsform-to-ddi → /api/convert/ddi-to-xlsform does not give the form back, although formtransform's own round trip does.
Proposal
?codebook=1 returns formtransform's <codeBook> unchanged. The fragment stays the default, since clients rely on it.
Not urgent: no client needs a whole-form round trip through these two endpoints today. Do it when one does.
POST /api/convert/xlsform-to-ddireturns only the children of formtransform's<dataDscr>.ddixml.DataDscrcuts away everything formtransform writes on<stdyDscr>:titl/parTitl) andIDNo;cdl:setting,default_language;cdl:language;notes[@type='instruction']withcdl:position;start,deviceid, …):cdl:row,cdl:row_label,cdl:row_column.So XLSForm →
/api/convert/xlsform-to-ddi→/api/convert/ddi-to-xlsformdoes not give the form back, although formtransform's own round trip does.Proposal
?codebook=1returns formtransform's<codeBook>unchanged. The fragment stays the default, since clients rely on it.Not urgent: no client needs a whole-form round trip through these two endpoints today. Do it when one does.