How to create a XSD scheme from a class?

I'm a hard time with the XSD files.

From a class like I'm trying to create the XSD file:

public enum Levels { Easy, Medium, Hard }
public sealed class Configuration
    public string Name { get;set; }
    public Levels Level { get; set; }
    public ConfigurationSpec { get;set;}

public abstract class ConfigurationSpec { }
public class ConfigurationSpec1
    // ...
public class ConfigurationSpec2
    // ...

Please note that I have an abstract class inside of Configuration. With that feature, is there possible to create the XSD and if it's possible how?

I mean, the idea is to pass the class Configuration to the XSD.


You can use XSD.exe (Available from your Visual Studio Installation.)

public sealed class Configuration
 public string Name { get; set; }
 public Levels Level { get; set; }
 public ConfigurationSpec Spec { get; set; }
 public abstract class ConfigurationSpec { }
 public class ConfigurationSpec1    {   }
public class ConfigurationSpec2 {   }

results in

<?xml version="1.0" encoding="utf-8"?>
<xs:schema elementFormDefault="qualified" xmlns:xs="">
  <xs:element name="Levels" type="Levels" />
  <xs:simpleType name="Levels">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Easy" />
      <xs:enumeration value="Medium" />
      <xs:enumeration value="Hard" />
  <xs:element name="Configuration" nillable="true" type="Configuration" />
  <xs:complexType name="Configuration">
      <xs:element minOccurs="0" maxOccurs="1" name="Name" type="xs:string" />
      <xs:element minOccurs="1" maxOccurs="1" name="Level" type="Levels" />
      <xs:element minOccurs="0" maxOccurs="1" name="Spec" type="ConfigurationSpec" />
  <xs:complexType name="ConfigurationSpec" abstract="true" />
  <xs:element name="ConfigurationSpec" nillable="true" type="ConfigurationSpec" />
  <xs:element name="ConfigurationSpec1" nillable="true" type="ConfigurationSpec1" />
  <xs:complexType name="ConfigurationSpec1" />
  <xs:element name="ConfigurationSpec2" nillable="true" type="ConfigurationSpec2" />
  <xs:complexType name="ConfigurationSpec2" />

All you have to do is compiling your assembly and run XSD.exe with the path to your assembly as argument. XSD.exe /? has a list of all arguments as well.

Example: XSD.exe C:\Dev\Project1\Bin\Debug\library.dll

You can successfully integrate xsd.exe into the Visual Studio IDE like this:

Go into Tools, External Tools and click the Add button:




Create Schema From Class

Command (per framework):


C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\x64\xsd.exe


C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\x64\xsd.exe


C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\x64\xsd.exe


$(BinDir)$(TargetName).dll /outputdir:$(ItemDir) /type:$(ItemFileName)

Use Output window:

Prevents an extra command window from popping up and keeps a record of the output until you clear it. Probably a good idea.

Prompt For Arguments:

Check if you want to test the output or troubleshoot; otherwise, leave unchecked.

Click OK

How to use:

  1. Compile your project. XSD.exe only looks at compiled code.
  2. Click on the class in Solution Explorer.
  3. Click Tools, Create Schema From Class
  4. Click on the Show All Files button in the Solution Explorer.
  5. Look in the same folder as your class and you will see Schema0.xsd.
  6. Right-click on Schema0.xsd and choose Include In Project
  7. Rename Schema0.xsd to <the name of the class>.xsd
  8. (optional) You may have to edit this new xsd by hand if you want to edit xml files in the xml editor using this schema and you are not using all attributes. You can replace use="required" with use="optional" to get rid of the blue squiggly lines in the xml editor (which create warnings), if indeed these attributes are not required.

Need Your Help

py2exe and msvcr100.dll. The dll is not valid

python windows py2exe

I'm trying to make an exe for a python program I developed, with py2exe. I managed to do it, but I can't figure out the last problem I have: include the msvcr100.dll.

How should one correctly check for a string in a javascript array on a loop

javascript arrays

yI have an array that receives one new string element ever 2 seconds on a loop:

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.