<?xml version="1.0" encoding="utf-8"?>
<!-- This schema is used by the Visual Studio Content Installer to validate .vscontent xml files. -->
<xs:schema attributeFormDefault="unqualified" 
           elementFormDefault="qualified"  
           targetNamespace="http://schemas.microsoft.com/developer/vscontent/2005" 
           xmlns="http://schemas.microsoft.com/developer/vscontent/2005" 
           xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:simpleType name="non-empty-string">
    <xs:restriction base="xs:string">
      <xs:minLength value="1" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="VSContent" >
      <xs:annotation>
        <xs:documentation>
           <!-- _logID_text-"VSContent" _locComment""-->The VSContent element is the root element of the VS Content XML Schema.
        </xs:documentation>
      </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="Content" minOccurs="1">
            <xs:annotation>
                <xs:documentation>
                    <!-- _logID_text-"Content" _locComment""-->The Content element defines each item to be installed.
                </xs:documentation>
            </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:choice maxOccurs="unbounded">
                  <xs:element name="FileName" type="non-empty-string" minOccurs="1" maxOccurs="1">
                      <xs:annotation>
                          <xs:documentation>
                              <!-- _logID_text-"FileName" _locComment""-->The name of the file corresponding to the content.
                          </xs:documentation>
                      </xs:annotation>
                  </xs:element>
                  <xs:element name="DisplayName" type="non-empty-string" minOccurs="1" maxOccurs="1">
                      <xs:annotation>
                          <xs:documentation>
                              <!-- _logID_text-"DisplayName" _locComment""-->Name displayed to user when installing the content
                          </xs:documentation>
                      </xs:annotation>
                  </xs:element>
                  <xs:element name="Description" type="non-empty-string" minOccurs="1" maxOccurs="1" >
                      <xs:annotation>
                          <xs:documentation>
                              <!-- _logID_text-"Description" _locComment""-->Description displayed to user when installing the content
                          </xs:documentation>
                      </xs:annotation>
                  </xs:element>
                  <xs:element name="FileContentType" minOccurs="1" maxOccurs="1">
                      <xs:annotation>
                          <xs:documentation>
                              <!-- _logID_text-"FileContentType" _locComment""-->The type of content to be installed.
                          </xs:documentation>
                      </xs:annotation>
                           <xs:simpleType>
                                    <xs:union>
                                        <xs:simpleType>
                                            <xs:restriction base ="non-empty-string"></xs:restriction>
                                        </xs:simpleType>
                                        <xs:simpleType>
                                            <xs:restriction base="non-empty-string">
                                                <xs:enumeration value="Addin"><xs:annotation><xs:documentation><!-- _logID_text-"Addin" _locComment""-->Denotes the content as an Add-in.</xs:documentation></xs:annotation></xs:enumeration>
                                                <xs:enumeration value="Code Snippet"><xs:annotation><xs:documentation><!-- _logID_text-"Code Snippet" _locComment""-->Denotes the content as an Intellisense Code Snippet</xs:documentation></xs:annotation></xs:enumeration>
                                                <xs:enumeration value="VSTemplate"><xs:annotation><xs:documentation><!-- _logID_text-"VSTemplate" _locComment""-->Denotes the content as a Template.</xs:documentation></xs:annotation></xs:enumeration>
                                                <xs:enumeration value="Toolbox Control"><xs:annotation><xs:documentation><!-- _logID_text-"Toolbox Control" _locComment""-->Denotes the content as a Toolbox Control.</xs:documentation></xs:annotation></xs:enumeration>
                                                <xs:enumeration value="Macro Project"><xs:annotation><xs:documentation><!-- _logID_text-"Macro Project" _locComment""-->Denotes the content as a Macro Project.</xs:documentation></xs:annotation></xs:enumeration>
                                            </xs:restriction>
                                        </xs:simpleType>
                                    </xs:union>
                                </xs:simpleType>
                  </xs:element>
                  <xs:element name="ContentVersion" type="xs:decimal" minOccurs="1" maxOccurs="1">
                      <xs:annotation>
                          <xs:documentation>
                              <!-- _logID_text-"ContentVersion" _locComment""-->The version of the content.
                          </xs:documentation>
                      </xs:annotation>
                  </xs:element>
                <xs:element name="Attributes" minOccurs="0" maxOccurs="1">
                    <xs:annotation>
                        <xs:documentation>
                            <!-- _logID_text-"Attributes" _locComment""-->Collection of Attributes specific to the type of content.
                        </xs:documentation>
                    </xs:annotation>
                  <xs:complexType>
                    <xs:sequence>
                      <xs:element maxOccurs="unbounded" name="Attribute">
                          <xs:annotation>
                              <xs:documentation>
                                  <!-- _logID_text-"Attribute" _locComment""-->Name and value pair describing the content.
                              </xs:documentation>
                          </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="name" use="required">
                                <xs:annotation>
                                    <xs:documentation>
                                        <!-- _logID_text-"name" _locComment""-->The name of the attribute to set.
                                    </xs:documentation>
                                </xs:annotation>
                                <xs:simpleType>
                                    <xs:union>
                                        <xs:simpleType>
                                            <xs:restriction base ="non-empty-string"></xs:restriction>
                                        </xs:simpleType>
                                        <xs:simpleType>
                                            <xs:restriction base="non-empty-string">
                                                <xs:enumeration value="language"><xs:annotation><xs:documentation><!-- _logID_text-"language" _locComment""-->Spoken language for the content. E.g. en, jp</xs:documentation></xs:annotation></xs:enumeration>
                                                <xs:enumeration value="lang"><xs:annotation><xs:documentation><!-- _logID_text-"lang" _locComment""-->Programming language for the content. E.g. csharp, vjsharp, vb, xml</xs:documentation></xs:annotation></xs:enumeration>
                                                <xs:enumeration value="TemplateType"><xs:annotation><xs:documentation><!-- _logID_text-"TemplateType" _locComment""-->Type of a template. E.g. Project, Item</xs:documentation></xs:annotation></xs:enumeration>
                                                <xs:enumeration value="ProjectType"><xs:annotation><xs:documentation><!-- _logID_text-"ProjectType" _locComment""-->Language of a template. E.g. Visual Basic, Visual C#, Visual J#, Visual Web Developer</xs:documentation></xs:annotation></xs:enumeration>
                                                <xs:enumeration value="ProjectSubType"><xs:annotation><xs:documentation><!-- _logID_text-"ProjectSubType" _locComment""-->SubType of the Template. E.g. Windows, Database, Office</xs:documentation></xs:annotation></xs:enumeration>
                                            </xs:restriction>
                                        </xs:simpleType>
                                    </xs:union>
                                </xs:simpleType>
                            </xs:attribute>
                            <xs:attribute name="value" use="required" >
                                <xs:annotation>
                                    <xs:documentation>
                                        <!-- _logID_text-"value" _locComment""-->
                                    </xs:documentation>
                                </xs:annotation>                                <xs:simpleType>
                                    <xs:union>
                                        <xs:simpleType>
                                            <xs:restriction base ="non-empty-string"></xs:restriction>
                                        </xs:simpleType>
                                        <xs:simpleType>
                                            <xs:restriction base="non-empty-string">
                                                <xs:enumeration value="csharp"><xs:annotation><xs:documentation><!-- _logID_text-"csharp" _locComment""-->Valid for Code Snippets. Indicates C# Programming Language for lang attribute</xs:documentation></xs:annotation></xs:enumeration>
                                                <xs:enumeration value="vjsharp"><xs:annotation><xs:documentation><!-- _logID_text-"jsharp" _locComment""-->Valid for Code Snippets. Indicates J# Programming Language for lang attribute</xs:documentation></xs:annotation></xs:enumeration>
                                                <xs:enumeration value="vb"><xs:annotation><xs:documentation><!-- _logID_text-"vb" _locComment""-->Valid for Code Snippets. Indicates VB Programming Language for lang attribute</xs:documentation></xs:annotation></xs:enumeration>
                                                <xs:enumeration value="xml"><xs:annotation><xs:documentation><!-- _logID_text-"xml" _locComment""-->Valid for Code Snippets. Indicates XML Programming Language for lang attribute</xs:documentation></xs:annotation></xs:enumeration>
                                                <xs:enumeration value="Item"><xs:annotation><xs:documentation><!-- _logID_text-"Item" _locComment""-->Valid for VSTemplates. Indicates Item Template for TemplateType attribute</xs:documentation></xs:annotation></xs:enumeration>
                                                <xs:enumeration value="Project"><xs:annotation><xs:documentation><!-- _logID_text-"Project" _locComment""-->Valid for VSTemplates. Indicates content is an Project Templates for TemplateType attribute</xs:documentation></xs:annotation></xs:enumeration>
                                                <xs:enumeration value="Visual Basic"><xs:annotation><xs:documentation><!-- _logID_text-"Visual Basic" _locComment""-->Valid for VSTemplates. Indicates Visual Basic for ProjectType attribute</xs:documentation></xs:annotation></xs:enumeration>
                                                <xs:enumeration value="Visual C#"><xs:annotation><xs:documentation><!-- _logID_text-"Visual C#" _locComment""-->Valid for VSTemplates. Indicates Visual C# for ProjectType attribute</xs:documentation></xs:annotation></xs:enumeration>
                                                <xs:enumeration value="Visual J#"><xs:annotation><xs:documentation><!-- _logID_text-"Visual J#" _locComment""-->Valid for VSTemplates. Indicates Visual J# for ProjectType attribute</xs:documentation></xs:annotation></xs:enumeration>
                                                <xs:enumeration value="Visual Web Developer"><xs:annotation><xs:documentation><!-- _logID_text-"Visual Web Developer" _locComment""-->Valid for VSTemplates. Indicates Visual Web Developer for ProjectType attribute</xs:documentation></xs:annotation></xs:enumeration>
                                                <xs:enumeration value="Windows"><xs:annotation><xs:documentation><!-- _logID_text-"Windows" _locComment""-->Valid for VSTemplates. Indicates Windows for ProjectSubType attribute</xs:documentation></xs:annotation></xs:enumeration>
                                                <xs:enumeration value="Office"><xs:annotation><xs:documentation><!-- _logID_text-"Office" _locComment""-->Valid for VSTemplates. Indicates Windows for ProjectSubType attribute</xs:documentation></xs:annotation></xs:enumeration>
                                                <xs:enumeration value="Smart Device"><xs:annotation><xs:documentation><!-- _logID_text-"Smart Device" _locComment""-->Valid for VSTemplates. Indicates Windows for ProjectSubType attribute</xs:documentation></xs:annotation></xs:enumeration>
                                                <xs:enumeration value="Database"><xs:annotation><xs:documentation><!-- _logID_text-"Database" _locComment""-->Valid for VSTemplates. Indicates Windows for ProjectSubType attribute</xs:documentation></xs:annotation></xs:enumeration>
                                                <xs:enumeration value="Test"><xs:annotation><xs:documentation><!-- _logID_text-"Test" _locComment""-->Valid for VSTemplates. Indicates Windows for ProjectSubType attribute</xs:documentation></xs:annotation></xs:enumeration>
                                            </xs:restriction>
                                        </xs:simpleType>
                                    </xs:union>
                                </xs:simpleType>
                            </xs:attribute>
                        </xs:complexType>
                    </xs:element>
                    </xs:sequence>
                  </xs:complexType>
                </xs:element>
              </xs:choice>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>