<?xml version="1.0"?>
<!--
  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.
-->

<!-- This file creates an empty <datasources/> element in cocoon.xconf.
  This is necessary to enable subsequent xpatch files (like datasources.xconf)
  to patch datasource entries into this element. See bug 43581 for a
  discussion/explanation. 
  The name of this file has to alphabetically sort in before "datasources.xconf".
-->
  
<xconf xpath="/cocoon"
  unless="datasources"
  insert-before="/cocoon/hsqldb-server"
  if-prop="patch.webapp">
  <datasources>
  </datasources>
</xconf>
