<?xml version="1.0"?>
<!-- Copyright 2004 The Apache Software Foundation

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

         http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License. -->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
    <xsd:element name="price-quote">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element ref="stock-symbol" minOccurs="1" maxOccurs="1"/>
                <xsd:element ref="stock-price" minOccurs="1" maxOccurs="1"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    <!-- XXXSJM change following to use refined datatypes -->
    <xsd:element name="stock-symbol" type="xsd:string"/>
    <xsd:element name="stock-price" type="xsd:string"/>
</xsd:schema>

