Preferences over results of an XML query are of two distinct flavors. First, the user may prefer results which containdesired values, e.g., lower prices, favorite foods, higher ratings. Second, the user may prefer results with a certain structure, e.g., existence of a "discount" node, existence of an edge (and not only a path) between "departure" and "arrival" nodes. The first type of preference has been studied extensively over relational data, using skyline semantics, but has barely been considered for XML. The second type of preference has been studied for XML in the context of inexact querying, using scoring functions to rank results. This paper presents a query language for XML that incorporates both value-based and structural desires. Skyline semantics is used to determine optimal results. Algorithms for query evaluation under skyline semantics are presented and experimentation proves efficiency. The paper is novel in three aspects. First, it considers skyline querying over XML data values, and not over values in a relational database. Second, it presents a method for inexact querying of the structure of XML that is based on computing a skyline, instead of using scoring functions. Third, it combines both types of user preference into a single language. These facets join together to yield a versatile language for flexible querying of XML.