<?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.
-->
<!-- $Id$ -->
<!DOCTYPE component-specification PUBLIC 
  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
	
<component-specification class="org.apache.tapestry.BaseComponent">

  <private-asset name="private" resource-path="/foo/Bar.gif">
  	<property name="hugh">grant</property>
  </private-asset>
  
  <external-asset name="external" URL="http://foo.com/images/Bar.gif">
  	<property name="joan">rivers</property>
  </external-asset>
  
  <context-asset name="context" path="/images/Bar.gif">
  	<property name="john" value="cusak"/>
  </context-asset>
	
</component-specification>	