There are only six possible sequences of (1,2,3) appearing once each in any order, so it's feasible to enumerate them all. Of course this doesn't scale but it might work for you. That would be
(1((2,3)|(3,2)) | 2((1,3)|(3,1)) | 3((1,2)|(2,1))
using "," for sequence and "|" for choice.
Your only other options are not XSD 1.0. E.g. XSD 1.1 or schematron.