XML Schemas

Applies To: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2003 with SP2

The following XML schemas are supported for WPS technology:

  • Master file schema. The master file schema is used to provide the locations of XML subfiles to client computers.

  • Wizard schema. The wizard schema is used by the sign-up and renewal wizards for account creation or renewal.

  • Register schema. The register schema contains a node with 3 subnodes: one for sign-up, one for renewal, and one for password expired. The text for each sub-node is a URL that points to the corresponding xml file. The signup sub-node is required, however the renewal and password expired sub-nodes are optional.

  • SSID schema. The SSID schema is used to provide clients with network Secure Set Identifier information.

  • Locations schema. The Locations schema is used to provide customers with a list of locations from which they can access your network.

  • Branding schema. The Branding schema is used to identify your company to your customers with artwork, such as your company logo, that is downloaded and displayed in the client computer user interface.

  • Help schema. The Help schema is used to provide customers with technical information and assistance.

  • EAP schemas. The EAP schemas are used to configure connection and user properties on client computers.

The next section describes the XML for each schema.

Master file schema

The following XML describes the XML master file schema for use by HSPs, WISPs, and enterprises to provide client computers with the locations of the XML subfiles and network information.

<xs:schema xmlns:xs="https://www.w3.org/2001/XMLSchema" targetNamespace="https://www.microsoft.com/provisioning/Master" xmlns="https://www.microsoft.com/provisioning/Master" elementFormDefault="qualified">
    <xs:import namespace="https://www.w3.org/XML/1998/namespace" schemaLocation="https://www.w3.org/2001/xml.xsd" />
    <xs:element name="Master">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="TTL" type="xs:positiveInteger" />
                <xs:element name="DomainName" type="xs:string" />
                <xs:element name="UpdateFrom" type="anyHttps" />
                <xs:element name="LangSet" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="Subfile" maxOccurs="unbounded">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="URL" type="anyHttps" />
                                        <xs:element name="Version" type="xs:positiveInteger" />
                                    </xs:sequence>
                                    <xs:attribute name="Name" type="xs:string" use="required" />
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                        <xs:attribute ref="xml:lang" use="required" />
                    </xs:complexType>
                </xs:element>
                <xs:element name="OtherMasters" minOccurs="0">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="MasterURL" type="anyHttps" maxOccurs="unbounded" />
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:simpleType name="anyHttps">
        <xs:restriction base="xs:string">
            <xs:pattern value="https://(.)+" />
        </xs:restriction>
    </xs:simpleType>
</xs:schema>

Wizard schema

The following XML describes the Wizard XML schema used by the sign-up and renewal wizards while customers create or renew an account.

<?xml version="1.0"?>
<xs:schema targetNamespace="https://www.microsoft.com/provisioning/Wizard" xmlns:mstns="https://www.microsoft.com/provisioning/Wizard"
    xmlns="https://www.microsoft.com/provisioning/Wizard" xmlns:xs="https://www.w3.org/2001/XMLSchema"
    xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified">
    <xs:element name="wizard">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="purpose" minOccurs="1" maxOccurs="1">
                    <xs:simpleType>
                        <xs:restriction base="xs:string">
                            <xs:enumeration value="signup" />
                            <xs:enumeration value="renewal" />
                            <xs:enumeration value="password" />
                        </xs:restriction>
                    </xs:simpleType>
                </xs:element>
                <xs:element name="postToUrl" type="xs:string" minOccurs="1" maxOccurs="1" />
                <xs:element name="panel-welcome" minOccurs="1" maxOccurs="1">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="title" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="subtitle" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="body" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="icon" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="branding" type="xs:string" minOccurs="0" maxOccurs="1" />
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="panel-plan" minOccurs="1" maxOccurs="1">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="title" type="xs:string" minOccurs="0" maxOccurs="1" msdata:Ordinal="0" />
                            <xs:element name="subtitle" type="xs:string" minOccurs="0" maxOccurs="1" msdata:Ordinal="1" />
                            <xs:element name="body" type="xs:string" minOccurs="0" maxOccurs="1" msdata:Ordinal="2" />
                            <xs:element name="plan" minOccurs="1" maxOccurs="unbounded">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="title" type="xs:string" minOccurs="0" maxOccurs="1" msdata:Ordinal="0" />
                                        <xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1" msdata:Ordinal="1" />
                                        <xs:element name="fulldescription" minOccurs="0" maxOccurs="1" msdata:Ordinal="2" >
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="MHTML" type="xs:string" minOccurs="1" maxOccurs="1"/>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                        <xs:element name="includePanels" minOccurs="1" maxOccurs="1">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="includePanel" minOccurs="0" maxOccurs="unbounded">
                                                        <xs:complexType>
                                                            <xs:attribute name="name" form="unqualified" type="xs:string" />
                                                            <xs:attribute name="id" use="required" form="unqualified" type="xs:string" />
                                                        </xs:complexType>
                                                    </xs:element>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:sequence>
                                    <xs:attribute name="category" form="unqualified" type="xs:string" />
                                    <xs:attribute name="selected" form="unqualified" type="xs:boolean" />
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                        <xs:attribute name="hint" use="optional" form="unqualified" type="xs:string" />
                        <xs:attribute name="error" use="optional" form="unqualified" type="xs:string" />
                    </xs:complexType>
                </xs:element>
                <xs:element name="panel-promotion" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="title" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="subtitle" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="body" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="promotionalcode" type="editField" minOccurs="0" maxOccurs="1" nillable="true" />
                        </xs:sequence>
                        <xs:attribute name="id" use="required" form="unqualified" type="xs:string" />
                    </xs:complexType>
                </xs:element>
                <xs:element name="panel-personal" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="title" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="subtitle" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="body" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="salutation" type="comboBox" minOccurs="0" maxOccurs="1" />
                            <xs:element name="first-name" type="editField" minOccurs="0" maxOccurs="1" nillable="true" />
                            <xs:element name="middle-initial" type="editField" minOccurs="0" maxOccurs="1" nillable="true" />
                            <xs:element name="last-name" type="editField" minOccurs="0" maxOccurs="1" nillable="true" />
                            <xs:element name="suffix" type="editField" minOccurs="0" maxOccurs="1" nillable="true" />
                            <xs:element name="company" type="editField" minOccurs="0" maxOccurs="1" nillable="true" />
                            <xs:element name="jobtitle" type="editField" minOccurs="0" maxOccurs="1" nillable="true" />
                            <xs:element name="language-preference" type="comboBox" minOccurs="0" maxOccurs="1" />
                        </xs:sequence>
                        <xs:attribute name="id" use="required" form="unqualified" type="xs:string" />
                    </xs:complexType>
                </xs:element>
                <xs:element name="panel-contact" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="title" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="subtitle" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="body" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="address1" type="editField" minOccurs="0" maxOccurs="1" nillable="true" />
                            <xs:element name="address2" type="editField" minOccurs="0" maxOccurs="1" nillable="true" />
                            <xs:element name="city" type="editField" minOccurs="0" maxOccurs="1" nillable="true" />
                            <xs:element name="state" type="comboBox" minOccurs="0" maxOccurs="1" />
                            <xs:element name="country" type="comboBox" minOccurs="0" maxOccurs="1" />
                            <xs:element name="zipcode" type="editField" minOccurs="0" maxOccurs="1" nillable="true" />
                            <xs:element name="telephone1" type="editField" minOccurs="0" maxOccurs="1" nillable="true" />
                            <xs:element name="telephone2" type="editField" minOccurs="0" maxOccurs="1" nillable="true" />
                            <xs:element name="email" type="editField" minOccurs="0" maxOccurs="1" nillable="true" />
                        </xs:sequence>
                        <xs:attribute name="id" use="required" form="unqualified" type="xs:string" />
                    </xs:complexType>
                </xs:element>
                <xs:element name="panel-privacy" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="title" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="subtitle" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="body" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="check1" type="check box" minOccurs="0" maxOccurs="1" nillable="true" />
                            <xs:element name="check2" type="check box" minOccurs="0" maxOccurs="1" nillable="true" />
                            <xs:element name="check3" type="check box" minOccurs="0" maxOccurs="1" nillable="true" />
                        </xs:sequence>
                        <xs:attribute name="id" use="required" form="unqualified" type="xs:string" />
                    </xs:complexType>
                </xs:element>
                <xs:element name="panel-creditcard" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="title" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="subtitle" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="body" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="card-name" type="comboBox" minOccurs="0" maxOccurs="1" />
                            <xs:element name="card-number" type="nonReadOnlyEditField" minOccurs="0" maxOccurs="1" nillable="true" />
                            <xs:element name="card-expdate" type="nonReadOnlyEditField" minOccurs="0" maxOccurs="1" nillable="true" />
                            <xs:element name="card-securitycode" type="nonReadOnlyEditField" minOccurs="0" maxOccurs="1"
                                nillable="true" />
                        </xs:sequence>
                        <xs:attribute name="id" use="required" form="unqualified" type="xs:string" />
                    </xs:complexType>
                </xs:element>
                <xs:element name="panel-billing" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="title" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="subtitle" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="body" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="first-name" type="editField" minOccurs="0" maxOccurs="1" nillable="true" />
                            <xs:element name="middle-initial" type="editField" minOccurs="0" maxOccurs="1" nillable="true" />
                            <xs:element name="last-name" type="editField" minOccurs="0" maxOccurs="1" nillable="true" />
                            <xs:element name="suffix" type="editField" minOccurs="0" maxOccurs="1" nillable="true" />
                            <xs:element name="address1" type="editField" minOccurs="0" maxOccurs="1" nillable="true" />
                            <xs:element name="address2" type="editField" minOccurs="0" maxOccurs="1" nillable="true" />
                            <xs:element name="city" type="editField" minOccurs="0" maxOccurs="1" nillable="true" />
                            <xs:element name="state" type="comboBox" minOccurs="0" maxOccurs="1" />
                            <xs:element name="country" type="comboBox" minOccurs="0" maxOccurs="1" />
                            <xs:element name="zipcode" type="editField" minOccurs="0" maxOccurs="1" nillable="true" />
                            <xs:element name="telephone1" type="editField" minOccurs="0" maxOccurs="1" nillable="true" />
                            <xs:element name="telephone2" type="editField" minOccurs="0" maxOccurs="1" nillable="true" />
                        </xs:sequence>
                        <xs:attribute name="id" use="required" form="unqualified" type="xs:string" />
                    </xs:complexType>
                </xs:element>
                <xs:element name="panel-coupon" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="title" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="subtitle" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="body" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="coupon" type="editField" minOccurs="1" maxOccurs="1" nillable="true" />
                        </xs:sequence>
                        <xs:attribute name="id" use="required" form="unqualified" type="xs:string" />
                    </xs:complexType>
                </xs:element>
                <xs:element name="panel-credentials" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="title" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="subtitle" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="body" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="username" type="editField" minOccurs="0" maxOccurs="1" nillable="true" />
                            <xs:element name="password" type="editField" minOccurs="0" maxOccurs="1" nillable="true" />
                        </xs:sequence>
                        <xs:attribute name="id" use="required" form="unqualified" type="xs:string" />
                    </xs:complexType>
                </xs:element>
                <xs:element name="panel-terms" minOccurs="1" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="title" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="subtitle" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="body" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="terms" type="xs:string" minOccurs="0" maxOccurs="1" />
                        </xs:sequence>
                        <xs:attribute name="id" use="required" form="unqualified" type="xs:string" />
                    </xs:complexType>
                </xs:element>
                <xs:element name="panel-post" minOccurs="1" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="title" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="subtitle" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="body" type="xs:string" minOccurs="0" maxOccurs="1" />
                        </xs:sequence>
                        <xs:attribute name="id" use="required" form="unqualified" type="xs:string" />
                    </xs:complexType>
                </xs:element>
                <xs:element name="panel-finish" minOccurs="1" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="title" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="subtitle" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="body" type="xs:string" minOccurs="0" maxOccurs="1" />
                            <xs:element name="info" type="xs:string" minOccurs="0" maxOccurs="1" />
                        </xs:sequence>
                        <xs:attribute name="id" use="required" form="unqualified" type="xs:string" />
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
            <xs:attribute name="error" use="optional" form="unqualified" type="xs:string" />
            <xs:attribute name="hint" use="optional" form="unqualified" type="xs:string" />
        </xs:complexType>
    </xs:element>
    <xs:complexType name="editField">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="required" use="optional" form="unqualified" type="xs:boolean" />
                <xs:attribute name="maxlen" use="optional" form="unqualified" type="xs:positiveInteger" />
                <xs:attribute name="hint" use="optional" form="unqualified" type="xs:string" />
                <xs:attribute name="error" use="optional" form="unqualified" type="xs:string" />
                <xs:attribute name="readonly" use="optional" form="unqualified" type="xs:boolean" />
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="nonReadOnlyEditField">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="required" use="optional" form="unqualified" type="xs:boolean" />
                <xs:attribute name="maxlen" use="optional" form="unqualified" type="xs:positiveInteger" />
                <xs:attribute name="hint" use="optional" form="unqualified" type="xs:string" />
                <xs:attribute name="error" use="optional" form="unqualified" type="xs:string" />
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="comboBox">
        <xs:sequence>
            <xs:element name="entry" minOccurs="1" maxOccurs="unbounded" nillable="true">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:string">
                            <xs:attribute name="selected" form="unqualified" type="xs:boolean" />
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="required" use="optional" form="unqualified" type="xs:boolean" />
        <xs:attribute name="hint" use="optional" form="unqualified" type="xs:string" />
        <xs:attribute name="error" use="optional" form="unqualified" type="xs:string" />
        <xs:attribute name="readonly" use="optional" form="unqualified" type="xs:boolean" />
    </xs:complexType>
    <xs:complexType name="check box">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="check" form="unqualified" type="xs:boolean" />
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
</xs:schema>

Register schema

The following XML describes the Register schema.

<?xml version="1.0"?>

<xs:schema id="registerFile" targetNamespace="https://www.microsoft.com/provisioning/Register" xmlns="https://www.microsoft.com/provisioning/Register" xmlns:xs="https://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified">
    <xs:element name="register">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="signup"          type="anyHttps" minOccurs="1" maxOccurs="1" />
                <xs:element name="renewal"         type="anyHttps" minOccurs="0" maxOccurs="1" />
                <xs:element name="passwordExpired" type="anyHttps" minOccurs="0" maxOccurs="1" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="registerFile" msdata:IsDataSet="true" msdata:EnforceConstraints="False">
        <xs:complexType>
            <xs:choice maxOccurs="1">
                <xs:element ref="register" />
            </xs:choice>
        </xs:complexType>
    </xs:element>
    <xs:simpleType name="anyHttps">
        <xs:restriction base="xs:string">
            <xs:pattern value="https://(.)+"/>
        </xs:restriction>
    </xs:simpleType>
</xs:schema>

SSID schema

The following XML describes the Secure Set Identifier (SSID) schema.

<?xml version="1.0" encoding="utf-8" ?>
<xs:schema xmlns:xs="https://www.w3.org/2001/XMLSchema"
                     targetNamespace="https://www.microsoft.com/provisioning/SSID"
                     xmlns="https://www.microsoft.com/provisioning/SSID"
                     elementFormDefault="qualified">
    <xs:element name="SSIDs">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" name="ssid">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="Priority" type="xs:positiveInteger" minOccurs="0" />
                            <xs:element name="Connection" minOccurs="0" >
                                <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                        <xs:enumeration value="IBSS" />
                                        <xs:enumeration value="ESS" />
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:element>
                            <xs:element name="Authentication" minOccurs="0" >
                                <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                        <xs:enumeration value="Open" />
                                        <xs:enumeration value="Shared" />
                                        <xs:enumeration value="WPA" />
                                        <xs:enumeration value="WPAPSK" />
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:element>
                            <xs:element name="Encryption" minOccurs="0" >
                                <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                        <xs:enumeration value="None" />
                                        <xs:enumeration value="WEP" />
                                        <xs:enumeration value="TKIP" />
                                        <xs:enumeration value="CCMP" />
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:element>
                            <xs:element name="KeyIndex" type="xs:positiveInteger" minOccurs="0" />
                            <xs:element name="IEEE802.1X" type="xs:string" minOccurs="0" />
                            <xs:element name="Non802.1XURL" type="xs:anyURI" minOccurs="0" />
                        </xs:sequence>
                        <xs:attribute name="Name" type="xs:string" use="required" />
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

Locations schema

The following XML describes the Locations schema, which provides your customers with the locations of your Wi-Fi hotspots.

<?xml version="1.0" ?>
<xs:schema id="hotspotfinder" targetNamespace="https://www.microsoft.com/provisioning/HotSpotLocation" xmlns="https://www.microsoft.com/provisioning/HotSpotLocation" xmlns:xs="https://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified">
    <xs:element name="hotspotfinder" msdata:IsDataSet="true" msdata:EnforceConstraints="False">
        <xs:complexType>
            <xs:choice maxOccurs="unbounded">
                <xs:element name="entry">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="city" type="xs:string" minOccurs="0" />
                            <xs:element name="state" type="xs:string" minOccurs="0" />
                            <xs:element name="country" type="xs:string" minOccurs="0" />
                            <xs:element name="zipcode" type="xs:string" minOccurs="0" />
                            <xs:element name="operator" type="xs:string" minOccurs="0" />
                            <xs:element name="location" type="xs:string" minOccurs="0" />
                            <xs:element name="address" type="xs:string" minOccurs="0" />
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:choice>
        </xs:complexType>
    </xs:element>
</xs:schema>

Branding schema

The following XML describes the branding schema, which you can use to identify your company to your customers.

<?xml version="1.0" ?>
<xs:schema id="BrandingFile" targetNamespace="https://www.microsoft.com/provisioning/Branding" xmlns="https://www.microsoft.com/provisioning/Branding" xmlns:xs="https://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified">
    <xs:element name="Branding">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="FriendlyName" type="xs:string" minOccurs="1" maxOccurs="1" />
                <xs:element name="PostConnectedAction" type="xs:string" minOccurs="0" maxOccurs="1"/>
                <xs:element name="ServiceDescription" type="xs:string" minOccurs="1" maxOccurs="1"/>
                <xs:element name="Logo" type="xs:string" minOccurs="1" maxOccurs="1" />
                <xs:element name="Header" type="xs:string" minOccurs="1" maxOccurs="1"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="BrandingFile" msdata:IsDataSet="true" msdata:EnforceConstraints="False">
        <xs:complexType>
            <xs:choice maxOccurs="1">
                <xs:element ref="Branding" />
            </xs:choice>
        </xs:complexType>
    </xs:element>
    
</xs:schema>

Help schema

The following XML is the Help schema that allows HSPs and WISPs to provide customers with user assistance.

<?xml version="1.0" ?>
<xs:schema id="HelpFile" targetNamespace="https://www.microsoft.com/provisioning/Help" xmlns="https://www.microsoft.com/provisioning/Help" xmlns:xs="https://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified">
    <xs:element name="Help">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="MHTML" type="xs:string" minOccurs="1" maxOccurs="1"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:element name="HelpFile" msdata:IsDataSet="true" msdata:EnforceConstraints="False">
        <xs:complexType>
            <xs:choice maxOccurs="1">
                <xs:element ref="Help" />
            </xs:choice>
        </xs:complexType>
    </xs:element>
</xs:schema>

EAP schemas

There are eight EAP schemas, including the following:

Connection properties schemas:

  • Base EAP Connection Properties schema

  • EAP Connection Properties schema

  • MS-CHAP v2 Connection Properties schema

  • Microsoft PEAP Connection Properties schema

User properties schemas:

  • Base EAP User Properties schema

  • EAP User Properties schema

  • MS-CHAP v2 User Properties schema

  • Microsoft PEAP User Properties schema

Each of these schemas is described below.

Connection properties schemas

Following are the four connection properties schemas.

Base EAP Connection Properties schema

The following XML describes the Base EAP Connection Properties schema.

<?xml version="1.0" ?>
<xs:schema
      targetNamespace="https://www.microsoft.com/provisioning/BaseEapConnectionPropertiesV1"
      elementFormDefault="qualified"
      xmlns="https://www.microsoft.com/provisioning/BaseEapConnectionPropertiesV1"
      xmlns:xs="https://www.w3.org/2001/XMLSchema"
      version="1.0"
   >
   <xs:complexType name="BaseEapTypeParameters" abstract="true" />
   <xs:complexType name="BaseEapParameters">
      <xs:sequence>
         <xs:element name="Type" type="xs:integer"/>
         <xs:any
               processContents="lax"
               minOccurs="0"
               maxOccurs="unbounded"
               namespace="##any"
         />
         <!-- One or more elements of the kind as follows should go in here. -->
         <!--
         <xs:element ref="EapType" maxOccurs="unbounded" />
         -->
      </xs:sequence>
   </xs:complexType>
   <xs:element name="EapType" type="BaseEapTypeParameters" abstract="true"/>
   <xs:element name="Eap" type="BaseEapParameters"/>
</xs:schema>

EAP Connection Properties schema

The following XML describes the EAP Connection Properties schema.

<?xml version="1.0" ?>
<xs:schema
      targetNamespace="https://www.microsoft.com/provisioning/EapConnectionPropertiesV1"
      elementFormDefault="qualified"
      xmlns="https://www.microsoft.com/provisioning/EapConnectionPropertiesV1"
      xmlns:xs="https://www.w3.org/2001/XMLSchema"
      xmlns:baseEap="https://www.microsoft.com/provisioning/BaseEapConnectionPropertiesV1"
      version="1.0"
   >
   <xs:import
         namespace="https://www.microsoft.com/provisioning/BaseEapConnectionPropertiesV1"
         schemaLocation="BaseEapConnectionPropertiesV1.xsd"
   />
   <xs:element name="Connections">
      <xs:complexType>
         <xs:sequence>
            <xs:element name="Connection" minOccurs="0" maxOccurs="unbounded">
               <xs:complexType>
                  <xs:sequence>
                     <xs:element name="Name" type="xs:string" />
                     <xs:element ref="baseEap:Eap" maxOccurs="unbounded" />
                  </xs:sequence>
               </xs:complexType>
            </xs:element>
         </xs:sequence>
      </xs:complexType>
   </xs:element>
</xs:schema>

MS-CHAP v2 Connection Properties schema

The following XML describes the MS-CHAP v2 Connection Properties schema.

<?xml version="1.0" ?>
<xs:schema
      targetNamespace="https://www.microsoft.com/provisioning/MsChapV2ConnectionPropertiesV1"
      elementFormDefault="qualified"
      xmlns="https://www.microsoft.com/provisioning/MsChapV2ConnectionPropertiesV1"
      xmlns:xs="https://www.w3.org/2001/XMLSchema"
      xmlns:baseEap="https://www.microsoft.com/provisioning/BaseEapConnectionPropertiesV1"
      version="1.0"
   >
   <xs:import
      namespace="https://www.microsoft.com/provisioning/BaseEapConnectionPropertiesV1"
      schemaLocation="BaseEapConnectionPropertiesV1.xsd"
   />
   <xs:element name="EapType" substitutionGroup="baseEap:EapType">
      <xs:complexType>
         <xs:complexContent>
            <xs:extension base="baseEap:BaseEapTypeParameters"/>
         </xs:complexContent>
      </xs:complexType>
   </xs:element>
</xs:schema>

Microsoft PEAP Connection Properties schema

When you configure the PEAP Connection Properties XML file, change the value of DisableUserPromptForServerValidation from zero (0, or false) to one (1, or true). Also add the Secure Hash Algorithm (SHA-1) hash of your trusted root CA certificate to TrustedRootCA. In the following example, the SHA-1 hash of the trusted root CA certificate is the hexadecimal string: a4 34 89 15 9a 52 0f 0d 93 d0 32 cc af 37 e7 fe 20 a8 b4 19. When you use a SHA-1 hash in the XML file, you can keep the spaces between the pairs of numbers in the hash - you do not need to delete the spaces.

<msPeap:DisableUserPromptForServerValidation>1</msPeap:DisableUserPromptForServerValidation>
<msPeap:TrustedRootCA>a4 34 89 15 9a 52 0f 0d 93 d0 32 cc af 37 e7 fe 20 a8 b4 19</msPeap:TrustedRootCA>

You can specify more than one trusted root CA certificate by inserting additional lines that contain TrustedRootCA and the SHA-1 hashes of the additional certificates. The following example depicts an XML file that designates three trusted root CA certificates:

<msPeap:DisableUserPromptForServerValidation>1</msPeap:DisableUserPromptForServerValidation>
<msPeap:TrustedRootCA>SHA-1 hash of the CA 1 certificate</msPeap:TrustedRootCA>
<msPeap:TrustedRootCA>SHA-1 hash of the CA 2 certificate</msPeap:TrustedRootCA>
<msPeap:TrustedRootCA>SHA-1 hash of the CA 3 certificate</msPeap:TrustedRootCA>

To obtain the SHA-1 hash of a trusted root CA certificate

  1. Open the Certificates snap-in for the Local Computer certificate store.

  2. In the left pane, double-click Certificates (Local Computer), and then double-click the Trusted Root Certification Authorities subfolder.

  3. The Certificates folder is a subfolder of the Trusted Root Certification Authorities folder. Click the Certificates folder.

  4. In the details pane, browse to the certificate for your trusted root CA. Double-click the certificate. The Certificate dialog box opens.

  5. In the Certificate dialog box, click the Details tab.

  6. In the list of fields, select Thumbprint.

  7. In the lower pane, the hexadecimal string that is the SHA-1 hash of your certificate is displayed. Select the SHA-1 hash and press the Windows keyboard shortcut for the Copy command (CTRL+C) to copy the hash to the Windows clipboard.

For more information about using the Certificates snap-in, see “To manage certificates for a computer” in Windows XP Help and Support Center or on the Web at https://go.microsoft.com/fwlink/?LinkId=41042.

For more information about Windows keyboard shortcuts, see “Windows keyboard shortcuts overview” in Windows XP Help and Support Center or on the Web at https://go.microsoft.com/fwlink/?LinkId=36303.

The following XML describes the Microsoft PEAP Connection Properties schema.

<?xml version="1.0"?>
<xs:schema
      targetNamespace="https://www.microsoft.com/provisioning/MsPeapConnectionPropertiesV1"
      elementFormDefault="qualified"
      xmlns="https://www.microsoft.com/provisioning/MsPeapConnectionPropertiesV1"
      xmlns:xs="https://www.w3.org/2001/XMLSchema"
      xmlns:baseEap="https://www.microsoft.com/provisioning/BaseEapConnectionPropertiesV1"
      version="1.0"
   >
   <xs:import
         namespace="https://www.microsoft.com/provisioning/BaseEapConnectionPropertiesV1"
         schemaLocation="BaseEapConnectionPropertiesV1.xsd"
   />

   <xs:element name="EapType" substitutionGroup="baseEap:EapType">
      <xs:complexType>
         <xs:complexContent>
            <xs:extension base="baseEap:BaseEapTypeParameters">
               <xs:sequence>
                  <xs:element
                        name="ServerValidation"
                        type="ServerValidationParameters"
                        minOccurs="0"
                  />
                  <xs:element name="FastReconnect" type="xs:boolean" minOccurs="0"/>
                  <xs:element name="InnerEapOptional" type="xs:boolean" minOccurs="0"/>
                  <xs:element ref="baseEap:Eap" minOccurs="0" maxOccurs="unbounded" />
               </xs:sequence>
            </xs:extension>
         </xs:complexContent>
      </xs:complexType>
   </xs:element>
   
   <xs:complexType name="ServerValidationParameters">
      <xs:sequence>
         <xs:element
               name="DisableUserPromptForServerValidation"
               type="xs:boolean"
               minOccurs="0"
         />
         <!-- A set of server names delimited by semicolons -->
         <!-- each server name can be represented by regular -->
         <!-- expressions -->
         <xs:element name="ServerNames" type="xs:string" minOccurs="0" />
         <!-- The thumbprint of a trusted root CA is -->
         <!-- a hexadecimal string that contains -->
         <!-- the SHA-1 hash of the certificate. -->
         <xs:element
               name="TrustedRootCA"
               type="xs:hexBinary"
               minOccurs="0"
               maxOccurs="unbounded"
         />
      </xs:sequence>
   </xs:complexType>
</xs:schema>

User properties schemas

Following are the four user properties schemas.

Base EAP User Properties schema

The following XML describes the Base EAP User Properties schema.

<?xml version="1.0" ?>
<xs:schema
      targetNamespace="https://www.microsoft.com/provisioning/BaseEapUserPropertiesV1"
      elementFormDefault="qualified"
      xmlns="https://www.microsoft.com/provisioning/BaseEapUserPropertiesV1"
      xmlns:xs="https://www.w3.org/2001/XMLSchema"
      version="1.0"
   >
   <xs:complexType name="BaseEapTypeParameters" abstract="true" />
   <xs:complexType name="BaseEapParameters" >
      <xs:sequence>
         <xs:element name="Type" type="xs:integer"/>
         <xs:any
               minOccurs="0"
               processContents="lax"
               maxOccurs="unbounded"
               namespace="##any"
         />
         <!-- One or more elements of the kind as follows should go in here. -->
         <!--
         <xs:element ref="EapType" maxOccurs="unbounded" />
         -->
      </xs:sequence>
   </xs:complexType>
   <xs:element name="EapType" type="BaseEapTypeParameters" abstract="true"/>
   <xs:element name="Identity" type="xs:string" abstract="true" />
   <xs:element name="Eap" type="BaseEapParameters"/>
</xs:schema>

EAP User Properties schema

The following XML describes the EAP User Properties schema.

<?xml version="1.0" ?>
<xs:schema
      targetNamespace="https://www.microsoft.com/provisioning/EapUserPropertiesV1"
      elementFormDefault="qualified"
      xmlns="https://www.microsoft.com/provisioning/EapUserPropertiesV1"
      xmlns:xs="https://www.w3.org/2001/XMLSchema"
      xmlns:baseEap="https://www.microsoft.com/provisioning/BaseEapUserPropertiesV1"
      version="1.0"
   >
   <xs:import
         namespace="https://www.microsoft.com/provisioning/BaseEapUserPropertiesV1"
         schemaLocation="BaseEapUserPropertiesV1.xsd"
   />
   <xs:element name="User">
      <xs:complexType>
         <xs:sequence>
            <xs:element ref="baseEap:Eap" maxOccurs="unbounded"/>
         </xs:sequence>
      </xs:complexType>
   </xs:element>
</xs:schema>

MS-CHAP v2 User Properties schema

The following XML describes the MS-CHAP v2 User Properties schema.

<?xml version="1.0" ?>
<xs:schema
      targetNamespace="https://www.microsoft.com/provisioning/MsChapV2UserPropertiesV1"
      elementFormDefault="qualified"
      xmlns="https://www.microsoft.com/provisioning/MsChapV2UserPropertiesV1"
      xmlns:xs="https://www.w3.org/2001/XMLSchema"
      xmlns:baseEap="https://www.microsoft.com/provisioning/BaseEapUserPropertiesV1"
      version="1.0"
   >
   <xs:import
         namespace="https://www.microsoft.com/provisioning/BaseEapUserPropertiesV1"
         schemaLocation="BaseEapUserPropertiesV1.xsd"
   />
   <xs:element name="Username" substitutionGroup="baseEap:Identity"/>
   <xs:element name="EapType" substitutionGroup="baseEap:EapType">
      <xs:complexType>
         <xs:complexContent>
            <xs:extension base="baseEap:BaseEapTypeParameters">
               <xs:sequence>
                  <xs:element ref="Username" minOccurs="0" />
                  <xs:element name="Password" type="xs:string" minOccurs="0" />
                  <xs:element name="LogonDomain" type="xs:string" minOccurs="0"/>
               </xs:sequence>
            </xs:extension>
         </xs:complexContent>
      </xs:complexType>
   </xs:element>
</xs:schema>

Microsoft PEAP User Properties schema

The following XML describes the Microsoft PEAP User Properties schema.

<?xml version="1.0" ?>
<xs:schema
      targetNamespace="https://www.microsoft.com/provisioning/MsPeapUserPropertiesV1"
      elementFormDefault="qualified"
      xmlns="https://www.microsoft.com/provisioning/MsPeapUserPropertiesV1"
      xmlns:xs="https://www.w3.org/2001/XMLSchema"
      xmlns:baseEap="https://www.microsoft.com/provisioning/BaseEapUserPropertiesV1"
      version="1.0"
   >
   <xs:import
         namespace="https://www.microsoft.com/provisioning/BaseEapUserPropertiesV1"
         schemaLocation="BaseEapUserPropertiesV1.xsd"
   />
   <xs:element name="RoutingIdentity" substitutionGroup="baseEap:Identity"/>
   <xs:element name="EapType" substitutionGroup="baseEap:EapType">
      <xs:complexType>
         <xs:complexContent>
            <xs:extension base="baseEap:BaseEapTypeParameters">
               <xs:sequence>
                  <xs:element ref="RoutingIdentity" minOccurs="0"/>
                  <xs:element ref="baseEap:Eap" minOccurs="0" maxOccurs="unbounded" />
               </xs:sequence>
            </xs:extension>
         </xs:complexContent>
      </xs:complexType>
   </xs:element>
</xs:schema>