Ah -- I see your content model is this: ( macro.anyXML+ ) whereas I'd been thinking you'd use the same model as <egXML>: ( text | macro.anyXML )* where I can happily put text or a CDATA section. Do we really want to exclude non-XML data?
See previous post in reply to Hugh, who seems to want non-XML data.
Not empty, but non-XML is worth considering, surely?
If we allow non-XML, we have to use a facet or a Schematron rule to insist on non-empty (since rng:text/ matches 0 or more characters). I'm not sure it's worth the bother. (Especially if <xenoData> remains in att.typed, in which case it is arguable that saying there is no metadata of type X is making an assertion.) So I'm inclined to leave it as-is, or if those who want non-XML data win the day, to change it to the same content model as <egXML>. After all, that's what Martin expected, so it's reasonable to think others might expect that, too. BTW, I won't cry if we go the <egXML> content model (i.e., ( text | macro.anyXML )*) route.