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

<document>
    <properties>
        <title>3rd party plugins</title>
        <author email="imario@apache.org">Mario Ivankovits</author>
    </properties>

    <body>
        <section name="External plugins">

            <p>
                Commons VFS provides a way to extend it by simply placing plugin-jars
				into the classpath.
            </p>

            <p>Some external plugins:</p>
            <ul>
                <li>ISO 9660 - <a href="http://loopy.sourceforge.net">http://loopy.sourceforge.net</a><br/>
					Reads .iso files
                </li>
            </ul>

        </section>

	</body>
</document>

