Prueba algo como:
where (X.Name <> 'xxx' or X.Name is null)
and (XY.Product <> 1 or XY.Product is null)
Ya que, por definición NULL
es un valor desconocido (un poco simplificado pero está bien para esta explicación), no será igual o no será igual a un valor dado, es por eso que IS NULL
se requiere aquí.