L'attaque a eu lieu dans un train circulant dans l'est, le long de la frontière avec le Liechtenstein, a déclaré la police régionale de Saint-Gall dans un communiqué, précisant que l'assaillant a également été blessé.
La police, qui a ouvert une enquête criminelle, ne se prononçait pas sur le mobile de l'assaillant. L'attaque a lieu vers 14H20 heure locale (12H20 GMT) près de la gare de Salez. Le train reliait Buchs à Sennwald.
"L'homme, un Suisse de 27 ans, a versé du liquide inflammable (...) qui a pris feu", a dit la police, ajoutant qu'il était "également armé d'au moins un couteau".
Les six passagers blessés et l'assaillant ont été hospitalisés pour des brûlures ou des plaies provoquées par les coups de couteau, ajoute le communiqué.
Outre l'enfant, deux hommes, de 17 et 50 ans, et trois femmes de respectivement 17, 34, et 43 ans ont été blessés, selon la police qui précise que des dizaines de passagers se trouvaient à bord du train au moment de l'attaque.
Policiers, pompiers, ambulances et hélicoptères sont arrivés en masse sur les lieux de l'attaque.
La police a précisé que le montant des dégâts causés au train s'élevait à 92.000 euros.