XML Schema Designer Graph View

The new XML Schema Designer (see this previous blog post for a d/l location to the CTP) offers four views over XML Schema Sets: XML Schema Explorer, Graph View, Content Model View, and Start View.  This entry will focus on the Graph View.  The Graph View is a hyperbolic 2D browser over nodes and relationships in a schema set.

Basics of the view:

Q: What’s the purpose of the Graph View?

A: To give you an overview of your schema set: the global nodes in it and how the nodes are related.  This is a 5000 foot view of a schema set and should answer questions such as… how big is the schema?, what does the type hierarchy look like?, what’s the design pattern (Russian Doll, Garden of Eden, ...)?, etc. 

Q: How do you get to it?

A: You open an XSD in VS, drag nodes onto the design surface and switch the designer to the Graph View.

image

Q: Are all nodes and all relationships between nodes shown?

A: No.  In the CTP we just show Complex Types and Elements.  In current builds we show all global nodes.  For relationships we show relationships for a node’s content model up until we hit a local def. 

Q: Can you edit nodes on the design surface?

A: Not on the surface directly.  This is something the team has spent a fair bit of time on and we’re interested in your feedback:  How important is this to you?  What does it mean to edit a node to you too?  e.g. Do you want to just change node names or do you want to drag relationships around, change extension/restriction/etc?  What editing features are compelling?  Note you have tight integration with the XML Editor so you can tile an XML Editor instance with the designer and get support for SxS editing, viewing, navigating in XML Editor to specific nodes from the design surface, etc. 

The view is built with WPF and has nice zoom + pan capability.  We also show the properties of nodes using the Property Window.

Here are a few screenshots:

Graph view showing a type hierarchy (all types and relationships between them):

image

Graph view showing all globals and relationships from the brainml & brainmetal namespaces (note the mix of attrgroups, types, and elements and edges between them):

 image

Shoot me an email at timlav@microsoft.com or post any comments & feedback you have here.

More on the Start View next week….

Thanks!

- Tim Laverty

PM, Data Programmability Tools