Hola,
A mi entender existen dos opciones, la primera sin necesidad de escribir codigo. Podrías configurar tu XSN para que la primera lista, llamémosle lista A, controle la lista B que el usuario tendrá disponible. Puedes tener varias listas: B1 (para la primera provincia), B2 (para la segunda provincia), etc. Si el usuario selecciona la primera provincia en la Lista A, entonces el XSN presenta la lista B1 (las demás permanecen escondidas). Claro que el problema con esta implementación es que tu formulario, al abrir por primera vez, tendré que cargar varias listas. Usando formateo condicional tendrías que esconder las provincias que no han sido seleccionadas y mostrar solamente la que fue escogida.
Utilizando DBXL y WSSP he podido crear conexiones de datos dinamicas. O sea, la persona selecciona la provincia en la lista A y el xsn utiliza esta opción para iniciar una conexión que carga la Lista B. Nunca lo he hecho sin DBXL pero me imagino que con programacion sea posible. En este caso el problema es que si la persona cambia la provincia, se abre una conexion y el usuario tiene que esperar. Si el usuario cambia de nuevo, de nuevo otra conexion.
Yo personalmente prefiero la primera opcion pues presenta una espera para el usuario solo al abrir el formulario.