<?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.
 *
 */ -->
<businessService xmlns="urn:uddi-org:api_v3" xmlns:xml="http://www.w3.org/XML/1998/namespace"
     businessKey="uddi:uddi.joepublisher.com:businessone" serviceKey="uddi:uddi.joepublisher.com:listeneronesmtp">
  <name xml:lang="en">Listener Two SMTP</name>
  <name xml:lang="es">Listener Dos SMTP </name>
  <description xml:lang="en">This is the description of listener two SMTP.</description>
  <description xml:lang="es">Ésta es la descripción del listener dos SMTP.</description>
  <bindingTemplates>
	<bindingTemplate xmlns="urn:uddi-org:api_v3" bindingKey="uddi:uddi.joepublisher.com:bindinglistenersmtp">
	  <description xml:lang="en">This is the endpoint for the SMTP subscription listener</description>
	  <accessPoint useType="endpoint">mailto:kurt@example.org</accessPoint>
      <tModelInstanceDetails>
	    <tModelInstanceInfo tModelKey="uddi:uddi.org:transport:smtp"/>
	  </tModelInstanceDetails>
	  <!--<categoryBag>
	    <keyedReference tModelKey="uddi:tmodelkey:categories:bindings" keyName="category" keyValue="secure" />
	  </categoryBag>-->
	</bindingTemplate>
  </bindingTemplates>
  <!--<categoryBag>
    <keyedReference tModelKey="uddi:tmodelkey:categories" keyName="category" keyValue="peaches" />
    <keyedReference tModelKey="uddi:tmodelkey:categories" keyName="category" keyValue="plums" />
    <keyedReferenceGroup tModelKey="uddi:tmodelkey:group">
      <keyedReference tModelKey="uddi:tmodelkey:blank" keyName="blank" keyValue="blank" />
    </keyedReferenceGroup>
  </categoryBag>-->
</businessService>
