I am puzzled by the redundancy in the schema. Take the simple example
where ActivityStatus code 2 is indeed "Implementation"
so is the text redundant or not? should an application always get the text to display from the codelist or use the supplied text? In the tabular schema, activity-status/text() has the description "Text describing the status" and is required. But which text should a renderer use? I see some discussion of multilingual codelists and thats surely the way to implement a mulilingual interface. This implies that the activity-status/text() is redundant - but necessary according to the schema. It may be intended to avoid the lookup, or to make the XML more readable but it surely can't be used in an application. Indeed what would it mean if it was different from the text associated with the code?
Another example :
<participating-org role="Implementing" ref="21000" type="INTERNATIONAL NGOs" xml:lang="en">Farm Africa</participating-org>
where the text "Farm Africa" is non-redundant since 21000 is just "INTERNATIONAL NGO" However in this case there is confusion with the organisationalType - I guess a better way to code this is to omit the ref (ref is optional) and code the type appropriately "21" - then a user knows that the text is significant.