I have spent some time reading several articles and blogs on SML, and I think that some clarification about the definition and scope of SML is required. Here's a short and simple definition of SML: It is a modeling language based on XML Schema 1.0 and Schematron. That's all.  SML does not define any common/core models,  domain-specific models, or  web service interfaces. So, it does not have any overlap or conflict with CIM, WSDL, or other WS* standards.

Now for some details. SML defines:

  • A profile of XML Schema 1.0
  • A profile of Schematron
  • A mechanism for binding Schematron constraints to types and elements
  • Typed inter-document references
  • deref(): an XPath 1.0 extension function for traversing inter-document references
  • sml:key, sml:unique, and sml:keyref elements for defining key and unique constrainst across references

SML supports very broad profiles of XML Schema 1.0 and Schematron. The profile for XML Schema 1.o  does not allow the use of xs:redefine, requires local elements to be qualified, and requires xs:targetNamespace attribute to be specified for xs:schema elements. SML supports all attributes and elements of Schematron, but restricts   Schematron constraints to use XPath 1.0 expressions. Schematron constraints are bound to a type/element by embedding the constraints in the type's/element's descendant xs:appinfo element.  The SML specification covers these topics in detail, and also has a sample model (in Appendix I).  If the specification is a bit heavy for you ;-), then stay tuned for future postings at this blog.