<?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.
-->
<!-- Default Forrest locationmap for skinconf files -->
<locationmap xmlns="http://apache.org/forrest/locationmap/1.0">
  <components>
    <matchers default="lm">
      <matcher 
        name="lm" 
        src="org.apache.forrest.locationmap.WildcardLocationMapHintMatcher"/>
    </matchers>
    <selectors default="exists">
      <selector name="exists" logger="sitemap.selector.exists"  
                    src="org.apache.forrest.sourceexists.SourceExistsSelector" />
    </selectors>
  </components>
  <locator>
    <match pattern="project.skinconf">
      <location src="{properties:skinconf}" />
    </match>
    <match pattern="project-skinconf.xsl">
      <location src="{properties:skins-dir}{forrest:forrest.skin}/skinconf.xsl" />
    </match>
    <match pattern="forrest-skinconf.xsl">
      <location src="{forrest:forrest.context}/skins/{forrest:forrest.skin}/skinconf.xsl" />
    </match>
    <match pattern="common-skinconf.xsl">
      <location src="{forrest:forrest.context}/skins/common/skinconf.xsl" />
    </match>
  </locator>
</locationmap>
