<?xml version="1.0" encoding="US-ASCII"?>
<schema targetNamespace="urn:mace:eduPerson:1.0" xmlns:edu="urn:mace:eduPerson:1.0" xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <!--
    Attribute Identifiers:
    
    urn:mace:eduPerson:1.0:eduPersonPrincipalName
        - AttributeValue xsi:type is eduPersonPrincipalNameType
        - AttributeValue element contains the LHS of the eduPerson-defined EPPN
        - Scope, if any, contains the RHS of the eduPerson-defined EPPN
        - MUST be singly occurring value
    
    urn:mace:eduPerson:1.0:eduPersonScopedAffiliation
        - AttributeValue xsi:type is eduPersonScopedAffiliationType
        - AttributeValue elements contain an eduPerson-defined affiliation token
        - Scope, if any, contains a DNS-style organization name
        - MAY be multi-valued
    
    urn:mace:eduPerson:1.0:eduPersonEntitlement
        - AttributeValue xsi:type is xsd:anyURI
        - AttributeValue elements contain a URI representing the entitlement
        - MAY be multi-valued
    -->
    <complexType name="ScopedStringValueType">
        <simpleContent>
            <extension base="string">
                <attribute name="Scope" type="string" use="optional"/>
            </extension>
        </simpleContent>
    </complexType>
    <complexType name="eduPersonPrincipalNameType">
        <simpleContent>
            <restriction base="edu:ScopedStringValueType">
                <pattern value="[^\s@]+"/>
                <attribute name="Scope" type="string" use="optional"/>
            </restriction>
        </simpleContent>
    </complexType>
    <complexType name="eduPersonScopedAffiliationType">
        <simpleContent>
            <restriction base="edu:ScopedStringValueType">
                <enumeration value="faculty"/>
                <enumeration value="student"/>
                <enumeration value="staff"/>
                <enumeration value="alum"/>
                <enumeration value="member"/>
                <enumeration value="affiliate"/>
                <enumeration value="employee"/>
                <attribute name="Scope" type="string" use="optional"/>
            </restriction>
        </simpleContent>
    </complexType>
    <simpleType name="ValueType">
        <restriction base="string">
            <enumeration value="literal"/>
            <enumeration value="regexp"/>
            <enumeration value="xpath"/>
        </restriction>
    </simpleType>
    <complexType name="SiteRuleType">
        <sequence>
            <element name="Value" maxOccurs="unbounded">
                <complexType>
                    <simpleContent>
                        <extension base="string">
                            <attribute name="Type" type="edu:ValueType" use="optional" default="literal"/>
                        </extension>
                    </simpleContent>
                </complexType>
            </element>
        </sequence>
    </complexType>
    <element name="AnySite" type="edu:SiteRuleType"/>
    <element name="SiteRule">
        <complexType>
            <complexContent>
                <extension base="edu:SiteRuleType">
                    <attribute name="Name" type="string" use="required"/>
                </extension>
            </complexContent>
        </complexType>
    </element>
    <complexType name="AttributeRuleType">
        <sequence>
            <element ref="edu:AnySite" minOccurs="0"/>
            <element ref="edu:SiteRule" minOccurs="0" maxOccurs="unbounded"/>
        </sequence>
        <attribute name="Name" type="anyURI"/>
    </complexType>
    <element name="AttributeRule" type="edu:AttributeRuleType">
        <key name="SiteRuleKey">
            <selector xpath="./edu:SiteRule"/>
            <field xpath="@Name"/>
        </key>
    </element>
    <element name="AttributeAcceptancePolicy">
        <complexType>
            <sequence>
                <element ref="edu:AttributeRule" minOccurs="0" maxOccurs="unbounded"/>
            </sequence>
        </complexType>
        <key name="AttributeNameKey">
            <selector xpath="./edu:AttributeRule"/>
            <field xpath="@Name"/>
        </key>
    </element>
</schema>
