XML Schema supports the specification of occurrence constraints by declaring values for its min/maxOccurs attributes. These constraints are structural in the sense that they restrict the cardinality of children elements independently of the data that is present in their subtrees. Thus, occurrence constraints do not address any data semantics and are therefore only of limited interest to data modelling. In this tutorial we first survey the benefits of introducing semantic cardinality constraints into the framework of XML modeling languages: enhanced modeling capabilities, increased levels of data consistency and integrity, additional techniques for XML query optimization and query rewriting, prediction of the number of XML query answers, updates and encryptions. Secondly, we survey different techniques of representing many-to-many relationship types within XML. In particular, we focus on the preservation of key, foreign key and participation constraints.