<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You 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.
-->
<!DOCTYPE profiles PUBLIC "-//JPL//DTD EDA Profile 1.1//EN" "http://oodt.jpl.nasa.gov/grid-profile/dtd/prof.dtd">
<profiles>
  <profile>
    <profAttributes>
      <profId>PROFILE1</profId>
      <profType>profile</profType>
      <profStatusId>active</profStatusId>
      <profSecurityType>NULL</profSecurityType>
      <profRevisionNote>1.0</profRevisionNote>
    </profAttributes>
    <resAttributes>
      <Identifier>TEST_PROFILE_1</Identifier>
      <Title>Test profile number 1</Title>
      <Format>text/html</Format>
      <Creator>Alice</Creator>
      <resContext>TEST</resContext>
      <resAggregation>N/A</resAggregation>
      <resClass>system.profileServer</resClass>
      <resLocation>iiop://oodt.jpl.nasa.gov:10000/Test.Profile</resLocation>
    </resAttributes>
    <profElement>
      <elemId>3.14159</elemId>
      <elemName>TEST</elemName>
      <elemDesc>This is a test element</elemDesc>
      <elemType>Testing</elemType>
      <elemUnit>fortnights-per-furlong</elemUnit>
      <elemEnumFlag>F</elemEnumFlag>
      <elemMinValue>0</elemMinValue>
      <elemMaxValue>32</elemMaxValue>
      <elemComment>Testing only.</elemComment>
    </profElement>
    <profElement>
      <elemId>3.2</elemId>
      <elemName>TEST2</elemName>
      <elemDesc>This is another test element</elemDesc>
      <elemType>Testing</elemType>
      <elemUnit>fleas-per-tick</elemUnit>
      <elemEnumFlag>F</elemEnumFlag>
      <elemMinValue>32</elemMinValue>
      <elemMaxValue>64</elemMaxValue>
      <elemComment>More testing.</elemComment>
    </profElement>
    <profElement>
      <elemId>3.5</elemId>
      <elemName>TEST3</elemName>
      <elemDesc>Yet another test element</elemDesc>
      <elemType>Testing</elemType>
      <elemEnumFlag>T</elemEnumFlag>
      <elemValue>alpha</elemValue>
      <elemValue>beta</elemValue>
      <elemValue>gamma</elemValue>
      <elemValue>delta</elemValue>
      <elemComment>A bunch of greek letters, eh?</elemComment>
    </profElement>
  </profile>

  <profile>
    <profAttributes>
      <profId>PROFILE2</profId>
      <profType>profile</profType>
      <profStatusId>active</profStatusId>
      <profSecurityType>NULL</profSecurityType>
      <profRevisionNote>1.0</profRevisionNote>
    </profAttributes>
    <resAttributes>
      <Identifier>TEST_PROFILE_2</Identifier>
      <Title>Test profile number 2</Title>
      <Format>text/html</Format>
      <Creator>Bill</Creator>
      <resContext>TEST</resContext>
      <resAggregation>N/A</resAggregation>
      <resClass>system.profileServer</resClass>
      <resLocation>iiop://oodt.jpl.nasa.gov:10000/Test.Profile</resLocation>
    </resAttributes>
    <profElement>
      <elemId>3.5</elemId>
      <elemName>TEST3</elemName>
      <elemDesc>Yet another test element</elemDesc>
      <elemType>Testing</elemType>
      <elemEnumFlag>T</elemEnumFlag>
      <elemValue>alpha</elemValue>
      <elemValue>beta</elemValue>
      <elemValue>gamma</elemValue>
      <elemValue>delta</elemValue>
      <elemComment>A bunch of greek letters, eh?</elemComment>
    </profElement>
    <profElement>
      <elemId>3.6</elemId>
      <elemName>TEST4</elemName>
      <elemDesc>And still another test element</elemDesc>
      <elemType>Testing</elemType>
      <elemEnumFlag>F</elemEnumFlag>
      <elemMinValue>128</elemMinValue>
      <elemMaxValue>256</elemMaxValue>
    </profElement>
    <profElement>
      <elemId>3.7</elemId>
      <elemName>TEST5</elemName>
      <elemDesc>This is a nonenumerated field with no min/max values, meaning it should always match.</elemDesc>
      <elemType>char</elemType>
      <elemEnumFlag>F</elemEnumFlag>
    </profElement>
  </profile>
</profiles>
