<?xml version="1.0" encoding="UTF-8"?>
<!--
 * Copyright 2001-2009 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.
 *
 */ -->
<!-- 
  In this file, you only need to edit the tModelKey just below.  This will determine your root partition; the base that all system-generated
  keys will use.  The keywords "uddi" and "keygenerator" must enclose the partition, but you are free to edit the interior.  The general format
  is a domain name followed by a colon-delimited list of keywords (known as key-specific strings).
  
  Examples:
  
  uddi:www.mycompany.com:registry:keygenerator
  uddi:uddi.acme.com:keygenerator
  uddi:engineering.umich.edu:soa:ubr:keygenerator
 -->
<tModel tModelKey="uddi:yet.another.juddi.apache.org:keygenerator" xmlns="urn:uddi-org:api_v3">
  <name>uddi-org:keyGenerator</name>
  <description>Root domain key generator</description>
  <overviewDoc>
    <overviewURL useType="text">
      http://uddi.org/pubs/uddi_v3.htm#keyGen</overviewURL>
  </overviewDoc>
  <categoryBag>
    <keyedReference tModelKey="uddi:yet.uddi.org:categorization:types" keyName="uddi-org:types:keyGenerator"
      keyValue="keyGenerator" />
  </categoryBag>
</tModel>
