<?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 Chaperon -->
<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="chaperon.grammar.*">
      <location src="{forrest:forrest.context}/resources/chaperon/grammars/{1}.grm" />
    </match>
    <match pattern="chaperon.xgrammar.*">
      <location src="{forrest:forrest.context}/resources/chaperon/grammars/{1}.xgrm" />
    </match>
    <match pattern="chaperon.lexicon.*">
      <location src="resources/chaperon/grammars/{1}.xlex"/>
      <location src="{forrest:forrest.context}/resources/chaperon/grammars/{1}.xlex" />
    </match>
    <match pattern="transform.chaperon.grammar.lexicon">
      <location src="{forrest:forrest.context}/resources/chaperon/stylesheets/grm2xlex.xsl" />
    </match>
    <match pattern="transform.chaperon.*">
      <location src="{forrest:forrest.context}/resources/chaperon/stylesheets/{1}.xsl" />
    </match>
  </locator>
</locationmap>
