The default factory producing schema objects from schema files has the following restrictions:

  • There must not be two rules, such that:
    • the intersection of their nameclass is non-empty, and
    • the tree, generated by first rule is a subtree of the tree generated by second rule

    In other words, it means:

    • For each element in the XML file, Schematic must be able to guess the correct rule from the element placement and contents, and
    • If we insert some content into the element then the rule generating this element must not change.
  • No element nor attribute schema rule can accept infinite number of localnames. This is because of the autocompletion feature: when inserting new elements/attributes, Schematic must offer list of allowed names. If there was infinite number of local QNames, this list would have unlimited items and it couldn't be displayed.
  • There can't be no rule that can generate element OR it can generate attribute. There can't even be rule that can generate attribute OR another attribute. So, presence of attribute must not allow/disallow presence of other attributes and/or elements.
  • The <concur> rule present in TREX and similar rules in another schema languages are not supported and probably never will be.
  • MSV doesn't support default values, therefore Schematic doesn't support them either. Please see this page for explanation, why default values shouldn't be defined by external schema. Internal DTD definition is currently unsupported.