<?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.

-->
<licenseinfo>
    <fileset>
        <file>src/org/netbeans/modules/web/struts/resources/struts-config_1_0.dtd</file>
        <file>src/org/netbeans/modules/web/struts/resources/struts-config_1_1.dtd</file>
        <file>src/org/netbeans/modules/web/struts/resources/struts-config_1_2.dtd</file>
        <file>src/org/netbeans/modules/web/struts/resources/struts-config_1_3.dtd</file>
        <file>src/org/netbeans/modules/web/struts/resources/struts-config_1_3-custom.dtd</file>
        <file>src/org/netbeans/modules/web/struts/resources/validator-rules.xml</file>
        <license ref="Apache-2.0-ASF" />
        <notice>
Apache Struts
Copyright 2000-2007 The Apache Software Foundation
        </notice>
    </fileset>
    <fileset>
        <file>src/org/netbeans/modules/web/struts/resources/tiles-config_1_1.dtd</file>
        <file>src/org/netbeans/modules/web/struts/resources/tiles-config_1_3.dtd</file>
        <file>src/org/netbeans/modules/web/struts/resources/struts-tiles.tld</file>
        <license ref="Apache-2.0-ASF" />
        <notice>
Apache Struts Tiles
Copyright 2000-2007 The Apache Software Foundation
        </notice>
    </fileset>
    <fileset>
        <file>src/org/netbeans/modules/web/struts/resources/validator_1_0.dtd</file>
        <file>src/org/netbeans/modules/web/struts/resources/validator_1_0_1.dtd</file>
        <file>src/org/netbeans/modules/web/struts/resources/validator_1_1.dtd</file>
        <file>src/org/netbeans/modules/web/struts/resources/validator_1_1_3.dtd</file>
        <file>src/org/netbeans/modules/web/struts/resources/validator_1_2_0.dtd</file>
        <file>src/org/netbeans/modules/web/struts/resources/validator_1_3_0.dtd</file>
        <license ref="Apache-2.0-ASF" />
        <notice>
Apache Jakarta Commons Validator
Copyright 2001-2006 The Apache Software Foundation
        </notice>
    </fileset>
    <fileset>
        <file>src/org/netbeans/modules/web/struts/resources/struts-bean.tld</file>
        <file>src/org/netbeans/modules/web/struts/resources/struts-html.tld</file>
        <file>src/org/netbeans/modules/web/struts/resources/struts-logic.tld</file>
        <file>src/org/netbeans/modules/web/struts/resources/struts-nested.tld</file>
        <license ref="Apache-2.0-ASF" />
        <notice>
Apache Struts Taglib
Copyright 2000-2007 The Apache Software Foundation
        </notice>
    </fileset>
</licenseinfo>
