There’s no way to have content-type based validation in x-data.
As Thomas mentioned, you could use a mixin inside content type schema. You could create two different mixins with the same set of fields but different values of occurrences (depending on which fields should be mandatory in which content types) and plug them in inside content type schemas.
You won’t have to care about x-data name since data from a mixin will simply be injected into content data as opposite to x-data that is stored separately inside “x/appName” node.
Note that in the example below the only difference between the two mixins is value in occurrences.minimum - for mixin A the field is mandatory, for mixin B it’s not.