Message

A TAX breakdown with TAX Category codes E, AE, K, G or O SHALL have a TAX exemption reason text

Context
cac:TaxSubtotal/cac:TaxCategory[not(cbc:TaxExemptionReason)]
Test
contains( ' S Z L M ',concat(' ',normalize-space(cbc:ID),' '))