<?xml version="1.0" encoding="UTF-8"?>
<!--
    NamesforLife Menu XML Schema
    
    Copyright (c) 2005-2018 NamesforLife, LLC
    All rights reserved.
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://namesforlife.com/ns/menu" targetNamespace="http://namesforlife.com/ns/menu" elementFormDefault="qualified">
<!--
    Copyright (c) 2024, The Regents of the University of California, through
    Lawrence Berkeley National Laboratory (subject to receipt of any required
    approvals from the U.S. Dept. of Energy). All rights reserved.

    CLOCKSS system has permission to ingest, preserve, and serve this Archival Unit.
    LOCKSS system has permission to collect, preserve, and serve this Archival Unit.

    This content is licensed under a Creative Commons Attribution 3.0 International license.
    https://creativecommons.org/licenses/by/3.0/
-->
    <!-- The menu document element. -->
    <xs:element name="menu" type="menuType"/>

    <!-- Enumeration of supported item types. -->
    <xs:simpleType name="itemTypeEnum">
        <xs:restriction base="xs:string">
            <xs:enumeration value="default"/>
            <xs:enumeration value="root-menutitle"/>
            <xs:enumeration value="name"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="itemType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:string" use="required"/>
                <xs:attribute name="type" type="itemTypeEnum" use="required"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

    <xs:complexType name="iconbarType">
        <xs:sequence>
            <xs:element name="icon" type="iconType" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="iconType">
        <xs:attribute name="name" type="xs:string" use="required"/>
        <xs:attribute name="value" type="xs:string" use="required"/>
        <xs:attribute name="description" type="xs:string" use="optional"/>
    </xs:complexType>

    <xs:complexType name="menuType">
        <xs:sequence>
            <xs:element name="title" type="xs:string" minOccurs="0" maxOccurs="1"/>
            <xs:element name="iconbar" type="iconbarType" minOccurs="0" maxOccurs="1"/>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element name="separator"/>
                <xs:element name="item" type="itemType"/>
                <xs:element name="submenu" type="menuType"/>
            </xs:choice>
        </xs:sequence>
        <xs:attribute name="id" type="xs:string" use="required"/>
    </xs:complexType>

</xs:schema>
