<!--
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.
-->
<config>
    <!-- <element> MUST be defined before <product-type> so their patterns can be resolved -->
    <!-- name MUST be an element defined in elements.xml (also only upper and lower case alpha chars) -->
    <!-- regexp MUST be valid input to java.util.regex.Pattern.compile() -->
    <element name="ISBN" regexp="[0-9]{10}"/>
    <element name="Page" regexp="[0-9]*"/>

    <!-- name MUST be a ProductType name defined in product-types.xml -->
    <!-- metadata elements inside brackets MUST be mapped to the ProductType, as defined in product-type-element-map.xml -->
    <product-type name="Book" template="book-[ISBN].txt"/>
    <product-type name="BookPage" template="page-[Page]-[ISBN].txt"/>
</config>
