add back standard-examples to be sure examples compile but do not deploy it

Signed-off-by: olivier lamy <olamy@apache.org>
diff --git a/pom.xml b/pom.xml
index 88e8cd1..9a0d614 100644
--- a/pom.xml
+++ b/pom.xml
@@ -78,6 +78,7 @@
     <module>impl</module>
     <module>compat</module>
     <module>jstlel</module>
+    <module>standard-examples</module>
 <!--
     <module>standard-test</module>
 -->
diff --git a/standard-examples/pom.xml b/standard-examples/pom.xml
new file mode 100644
index 0000000..908db86
--- /dev/null
+++ b/standard-examples/pom.xml
@@ -0,0 +1,122 @@
+<?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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.taglibs</groupId>
+        <artifactId>taglibs-standard</artifactId>
+        <version>1.2.6-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>taglibs-standard-examples</artifactId>
+    <packaging>war</packaging>
+
+    <name>Apache Standard Taglib Example WAR</name>
+
+    <inceptionYear>2001</inceptionYear>
+    <description>
+        An example WAR for the JSP Standard Tag Library (JSTL).
+    </description>
+
+    <scm>
+        <connection>scm:svn:http://svn.apache.org/repos/asf/tomcat/taglibs/standard/tags/taglibs-standard-1.2.0-RC1/examples</connection>
+        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/tomcat/taglibs/standard/tags/taglibs-standard-1.2.0-RC1/examples
+        </developerConnection>
+        <url>http://svn.apache.org/viewvc/tomcat/taglibs/standard/tags/taglibs-standard-1.2.0-RC1/examples</url>
+    </scm>
+
+    <developers>
+        <developer><name>Pierre Delisle</name></developer>
+        <developer><name>Shawn Bayern</name></developer>
+        <developer><name>Nathan Abramson</name></developer>
+        <developer><name>Hans Bergsten</name></developer>
+        <developer><name>Scott Hasse</name></developer>
+        <developer><name>Justyna Horwat</name></developer>
+        <developer><name>Mark Kolb</name></developer>
+        <developer><name>Jan Luehe</name></developer>
+        <developer><name>Glenn Nielsen</name></developer>
+        <developer><name>Dmitri Plotnikov</name></developer>
+        <developer><name>Felipe Leme</name></developer>
+        <developer><name>Henri Yandell</name></developer>
+        <developer><name>Bjorn Townsend</name></developer>
+    </developers>
+
+    <contributors>
+        <contributor><name>Robert Goff</name></contributor>
+    </contributors>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.taglibs</groupId>
+            <artifactId>taglibs-standard-spec</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.taglibs</groupId>
+            <artifactId>taglibs-standard-impl</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>servlet-api</artifactId>
+            <version>2.5</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet.jsp</groupId>
+            <artifactId>jsp-api</artifactId>
+            <version>2.1</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax.el</groupId>
+            <artifactId>el-api</artifactId>
+            <version>1.0</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>xalan</groupId>
+            <artifactId>xalan</artifactId>
+            <version>2.7.1</version>
+        </dependency>
+        <dependency>
+          <groupId>org.apache.derby</groupId>
+          <artifactId>derby</artifactId>
+          <version>10.4.2.0</version>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+        <pluginManagement>
+            <plugins>
+                <!-- we do not deploy examples -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-deploy-plugin</artifactId>
+                    <configuration>
+                        <skip>true</skip>
+                    </configuration>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+</project>
diff --git a/standard-examples/src/main/java/org/apache/taglibs/standard/examples/beans/Address.java b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/beans/Address.java
new file mode 100644
index 0000000..cb3b455
--- /dev/null
+++ b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/beans/Address.java
@@ -0,0 +1,198 @@
+/*
+ * 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.
+ */
+
+package org.apache.taglibs.standard.examples.beans;
+
+/**
+ * Object that represents a Customer.
+ *
+ * @author Pierre Delisle
+ */
+
+public class Address {
+
+    //*********************************************************************
+    // Instance variables
+
+    /**
+     * Holds value of property line1.
+     */
+    private String line1;
+
+    /**
+     * Holds value of property line2.
+     */
+    private String line2;
+
+    /**
+     * Holds value of property city.
+     */
+    private String city;
+
+    /**
+     * Holds value of property zip.
+     */
+    private String zip;
+
+    /**
+     * Holds value of property state.
+     */
+    private String state;
+
+    /**
+     * Holds value of property country.
+     */
+    private String country;
+
+    //*********************************************************************
+    // Constructor
+
+    public Address(String line1, String line2, String city,
+                   String state, String zip, String country) {
+        setLine1(line1);
+        setLine2(line2);
+        setCity(city);
+        setState(state);
+        setZip(zip);
+        setCountry(country);
+    }
+
+    //*********************************************************************
+    // Accessors
+
+    /**
+     * Getter for property line1.
+     *
+     * @return Value of property line1.
+     */
+    public String getLine1() {
+        return line1;
+    }
+
+    /**
+     * Setter for property line1.
+     *
+     * @param line1 New value of property line1.
+     */
+    public void setLine1(String line1) {
+        this.line1 = line1;
+    }
+
+    /**
+     * Getter for property line2.
+     *
+     * @return Value of property line2.
+     */
+    public String getLine2() {
+        return line2;
+    }
+
+    /**
+     * Setter for property line2.
+     *
+     * @param line2 New value of property line2.
+     */
+    public void setLine2(String line2) {
+        this.line2 = line2;
+    }
+
+    /**
+     * Getter for property city.
+     *
+     * @return Value of property city.
+     */
+    public String getCity() {
+        return city;
+    }
+
+    /**
+     * Setter for property city.
+     *
+     * @param city New value of property city.
+     */
+    public void setCity(String city) {
+        this.city = city;
+    }
+
+    /**
+     * Getter for property zip.
+     *
+     * @return Value of property zip.
+     */
+    public String getZip() {
+        return zip;
+    }
+
+    /**
+     * Setter for property zip.
+     *
+     * @param zip New value of property zip.
+     */
+    public void setZip(String zip) {
+        this.zip = zip;
+    }
+
+    /**
+     * Getter for property country.
+     *
+     * @return Value of property country.
+     */
+    public String getCountry() {
+        return country;
+    }
+
+    /**
+     * Setter for property country.
+     *
+     * @param country New value of property country.
+     */
+    public void setCountry(String country) {
+        this.country = country;
+    }
+
+    /**
+     * Getter for property state.
+     *
+     * @return Value of property state.
+     */
+    public String getState() {
+        return state;
+    }
+
+    /**
+     * Setter for property state.
+     *
+     * @param state New value of property state.
+     */
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    //*********************************************************************
+    // Utility Methods
+
+    /**
+     * Return a String representation of this object.
+     */
+    public String toString() {
+        StringBuffer sb = new StringBuffer();
+        sb.append(line1).append(" ");
+        sb.append(city).append(" ");
+        sb.append(country);
+        return (sb.toString());
+    }
+}
diff --git a/standard-examples/src/main/java/org/apache/taglibs/standard/examples/beans/Customer.java b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/beans/Customer.java
new file mode 100644
index 0000000..5f7fe6c
--- /dev/null
+++ b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/beans/Customer.java
@@ -0,0 +1,255 @@
+/*
+ * 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.
+ */
+
+package org.apache.taglibs.standard.examples.beans;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * Object that represents a Customer.
+ *
+ * @author Pierre Delisle
+ */
+
+public class Customer {
+
+    //*********************************************************************
+    // Instance variables
+
+    /**
+     * Holds value of property key.
+     */
+    int key;
+
+    /**
+     * Holds value of property lastName.
+     */
+    private String lastName;
+
+    /**
+     * Holds value of property firstName.
+     */
+    private String firstName;
+
+    /**
+     * Holds value of property birthDate.
+     */
+    private Date birthDate;
+
+    /**
+     * Holds value of property address.
+     */
+    private Address address;
+
+    /**
+     * Holds value of property phoneHome.
+     */
+    private String phoneHome;
+
+    /**
+     * Holds value of property phoneCell.
+     */
+    private String phoneCell;
+
+    static DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
+
+    //*********************************************************************
+    // Constructors
+
+    public Customer() {
+    }
+
+    public Customer(int key,
+                    String lastName,
+                    String firstName,
+                    Date birthDate,
+                    Address address,
+                    String phoneHome,
+                    String phoneCell) {
+        init(key, lastName, firstName, birthDate, address, phoneHome, phoneCell);
+    }
+
+    public void init(int key,
+                     String lastName,
+                     String firstName,
+                     Date birthDate,
+                     Address address,
+                     String phoneHome,
+                     String phoneCell) {
+        setKey(key);
+        setLastName(lastName);
+        setFirstName(firstName);
+        setBirthDate(birthDate);
+        setAddress(address);
+        setPhoneHome(phoneHome);
+        setPhoneCell(phoneCell);
+    }
+
+    //*********************************************************************
+    // Properties
+
+    /**
+     * Getter for property key.
+     *
+     * @return Value of property key.
+     */
+    public int getKey() {
+        return key;
+    }
+
+    /**
+     * Setter for property key.
+     *
+     * @param key New value of property key.
+     */
+    public void setKey(int key) {
+        this.key = key;
+    }
+
+    /**
+     * Getter for property lastName.
+     *
+     * @return Value of property lastName.
+     */
+    public String getLastName() {
+        return lastName;
+    }
+
+    /**
+     * Setter for property lastName.
+     *
+     * @param lastName New value of property lastName.
+     */
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    /**
+     * Getter for property firstName.
+     *
+     * @return Value of property firstName.
+     */
+    public String getFirstName() {
+        return firstName;
+    }
+
+    /**
+     * Setter for property firstName.
+     *
+     * @param firstName New value of property firstName.
+     */
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    /**
+     * Getter for property birthDate.
+     *
+     * @return Value of property birthDate.
+     */
+    public Date getBirthDate() {
+        return birthDate;
+    }
+
+    /**
+     * Setter for property birthDate.
+     *
+     * @param birthDate New value of property birthDate.
+     */
+    public void setBirthDate(Date birthDate) {
+        this.birthDate = birthDate;
+    }
+
+    /**
+     * Getter for property address.
+     *
+     * @return Value of property address.
+     */
+    public Address getAddress() {
+        return address;
+    }
+
+    /**
+     * Setter for property address.
+     *
+     * @param address New value of property address.
+     */
+    public void setAddress(Address address) {
+        this.address = address;
+    }
+
+    /**
+     * Getter for property phoneHome.
+     *
+     * @return Value of property phoneHome.
+     */
+    public String getPhoneHome() {
+        return phoneHome;
+    }
+
+    /**
+     * Setter for property phoneHome.
+     *
+     * @param phoneHome New value of property phoneHome.
+     */
+    public void setPhoneHome(String phoneHome) {
+        this.phoneHome = phoneHome;
+    }
+
+    /**
+     * Getter for property phoneCell.
+     *
+     * @return Value of property phoneCell.
+     */
+    public String getPhoneCell() {
+        return phoneCell;
+    }
+
+    /**
+     * Setter for property phoneCell.
+     *
+     * @param phoneCell New value of property phoneCell.
+     */
+    public void setPhoneCell(String phoneCell) {
+        this.phoneCell = phoneCell;
+    }
+
+    //*********************************************************************
+    // Utility Methods
+
+    /**
+     * Return a String representation of this object.
+     */
+    public String toString() {
+        StringBuffer sb = new StringBuffer();
+        sb.append("[").append(key).append("] ");
+        sb.append(getLastName()).append(", ");
+        sb.append(getFirstName()).append("  ");
+        sb.append(df.format(getBirthDate())).append("  ");
+        sb.append(getAddress()).append("  ");
+        if (getPhoneHome() != null) {
+            sb.append(getPhoneHome()).append("  ");
+        }
+        if (getPhoneCell() != null) {
+            sb.append(getPhoneCell());
+        }
+        return (sb.toString());
+    }
+}
+
diff --git a/standard-examples/src/main/java/org/apache/taglibs/standard/examples/beans/Customers.java b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/beans/Customers.java
new file mode 100644
index 0000000..5afd260
--- /dev/null
+++ b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/beans/Customers.java
@@ -0,0 +1,104 @@
+/*
+ * 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.
+ */
+
+package org.apache.taglibs.standard.examples.beans;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Collection;
+import java.util.Date;
+import java.util.Vector;
+
+/**
+ * Customers Datastore.
+ *
+ * @author Pierre Delisle
+ */
+
+public class Customers {
+
+    //*********************************************************************
+    // Instance variables
+
+    private static Vector customers = new Vector();
+    private static int nextSeqNo = 0;
+
+    //*********************************************************************
+    // Datastore operations
+
+    public static void create(
+            String lastName,
+            String firstName,
+            String birthDate,
+            String line1,
+            String line2,
+            String city,
+            String state,
+            String zip,
+            String country) {
+        create(lastName, firstName, birthDate, line1, line2, city, state, zip,
+                country, null, null);
+    }
+
+    /**
+     * Create new customer
+     */
+    public static void create(
+            String lastName,
+            String firstName,
+            String birthDate,
+            String line1,
+            String line2,
+            String city,
+            String state,
+            String zip,
+            String country,
+            String phoneHome,
+            String phoneCell) {
+        Customer customer =
+                new Customer(++nextSeqNo, lastName, firstName,
+                        genDate(birthDate), genAddress(line1, line2, city, state, zip, country),
+                        phoneHome, phoneCell);
+        customers.add(customer);
+    }
+
+    /**
+     * Find all customers
+     */
+    public static Collection findAll() {
+        return customers;
+    }
+
+    //*********************************************************************
+    // Utility methods
+
+    private static Date genDate(String dateString) {
+        DateFormat df = new SimpleDateFormat("M/d/y");
+        Date date;
+        try {
+            date = df.parse(dateString);
+        } catch (Exception ex) {
+            date = null;
+        }
+        return date;
+    }
+
+    private static Address genAddress(String line1, String line2, String city,
+                                      String state, String zip, String country) {
+        return new Address(line1, line2, city, state, zip, country);
+    }
+}
diff --git a/standard-examples/src/main/java/org/apache/taglibs/standard/examples/i18n/Resources.java b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/i18n/Resources.java
new file mode 100644
index 0000000..8ae4298
--- /dev/null
+++ b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/i18n/Resources.java
@@ -0,0 +1,40 @@
+/*
+ * 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.
+ */
+
+package org.apache.taglibs.standard.examples.i18n;
+
+import java.util.ListResourceBundle;
+
+public class Resources extends ListResourceBundle {
+    private static Object[][] contents;
+
+    static {
+        contents = new Object[][]{
+                {"greetingMorning", "Good Morning!"},
+                {"greetingEvening", "Good Evening!"},
+                {"serverInfo", "Name/Version of Servlet Container: {0}, "
+                        + "Java Version: {1}"},
+                {"currentTime", "Current time: {0}"},
+                {"com.acme.labels.cancel", "Cancel"},
+                {"java.lang.ArithmeticException", "division by 0"}
+        };
+    }
+
+    public Object[][] getContents() {
+        return contents;
+    }
+}
diff --git a/standard-examples/src/main/java/org/apache/taglibs/standard/examples/i18n/Resources_de.java b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/i18n/Resources_de.java
new file mode 100644
index 0000000..0a62ee1
--- /dev/null
+++ b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/i18n/Resources_de.java
@@ -0,0 +1,40 @@
+/*
+ * 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.
+ */
+
+package org.apache.taglibs.standard.examples.i18n;
+
+import java.util.ListResourceBundle;
+
+public class Resources_de extends ListResourceBundle {
+    private static Object[][] contents;
+
+    static {
+        contents = new Object[][]{
+                {"greetingMorning", "Guten Morgen!"},
+                {"greetingEvening", "Guten Abend!"},
+                {"serverInfo", "Name/Version des Servlet Containers: {0}, "
+                        + "Java Version: {1}"},
+                {"currentTime", "Heutiges Datum und Uhrzeit: {0}"},
+                {"com.acme.labels.cancel", "Abbrechen"},
+                {"java.lang.ArithmeticException", "/ durch 0"}
+        };
+    }
+
+    public Object[][] getContents() {
+        return contents;
+    }
+}
diff --git a/standard-examples/src/main/java/org/apache/taglibs/standard/examples/i18n/Resources_fr.java b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/i18n/Resources_fr.java
new file mode 100644
index 0000000..3825bbb
--- /dev/null
+++ b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/i18n/Resources_fr.java
@@ -0,0 +1,40 @@
+/*
+ * 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.
+ */
+
+package org.apache.taglibs.standard.examples.i18n;
+
+import java.util.ListResourceBundle;
+
+public class Resources_fr extends ListResourceBundle {
+    private static Object[][] contents;
+
+    static {
+        contents = new Object[][]{
+                {"greetingMorning", "Bonjour!!"},
+                {"greetingEvening", "Bonsoir!"},
+                {"serverInfo", "Nom/Version du Servlet Container: {0}, "
+                        + "Version Java: {1}"},
+                {"currentTime", "Nous sommes le: {0}"},
+                {"com.acme.labels.cancel", "Annuler"},
+                {"java.lang.ArithmeticException", "division par 0"}
+        };
+    }
+
+    public Object[][] getContents() {
+        return contents;
+    }
+}
diff --git a/standard-examples/src/main/java/org/apache/taglibs/standard/examples/i18n/Resources_it.java b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/i18n/Resources_it.java
new file mode 100644
index 0000000..be819b1
--- /dev/null
+++ b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/i18n/Resources_it.java
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+
+package org.apache.taglibs.standard.examples.i18n;
+
+import java.util.ListResourceBundle;
+
+public class Resources_it extends ListResourceBundle {
+    private static Object[][] contents;
+
+    static {
+        contents = new Object[][]{
+                {"greetingMorning", "Buon giorno!"}
+        };
+    }
+
+    public Object[][] getContents() {
+        return contents;
+    }
+}
diff --git a/standard-examples/src/main/java/org/apache/taglibs/standard/examples/startup/Init.java b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/startup/Init.java
new file mode 100644
index 0000000..6919fc8
--- /dev/null
+++ b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/startup/Init.java
@@ -0,0 +1,148 @@
+/*
+ * 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.
+ */
+
+package org.apache.taglibs.standard.examples.startup;
+
+import java.util.Enumeration;
+import java.util.Hashtable;
+
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
+
+import org.apache.taglibs.standard.examples.beans.Customers;
+
+/**
+ * Initialization class. Builds all the data structures
+ * used in the "examples" webapp.
+ *
+ * @author Pierre Delisle
+ */
+public class Init implements ServletContextListener {
+
+    //*********************************************************************
+    // ServletContextListener methods
+
+    // recovers the one context parameter we need
+
+    public void contextInitialized(ServletContextEvent sce) {
+        //p("contextInitialized");
+        init(sce);
+    }
+
+    public void contextDestroyed(ServletContextEvent sce) {
+        //p("contextInitialized");
+    }
+
+    //*********************************************************************
+    // Initializations
+
+    private void init(ServletContextEvent sce) {
+        /*
+         *  Customers
+         */
+        Customers.create("Richard", "Maurice", "5/15/35",
+                "123 Chemin Royal", "Appt. #301",
+                "Montreal", "QC", "H3J 9R9", "Canada");
+        Customers.create("Mikita", "Stan", "12/25/47",
+                "45 Fisher Blvd", "Suite 203",
+                "Chicago", "IL", "65982", "USA", "(320)876-9784", null);
+        Customers.create("Gilbert", "Rod", "3/11/51",
+                "123 Main Street", "",
+                "New-York City", "NY", "19432", "USA");
+        Customers.create("Howe", "Gordie", "7/25/46",
+                "7654 Wings Street", "",
+                "Detroit", "MG", "07685", "USA", "(465)675-0761", "(465)879-9802");
+        Customers.create("Sawchuk", "Terrie", "11/05/46",
+                "12 Maple Leafs Avenue", "",
+                "Toronto", "ON", "M5C 1Z1", "Canada");
+        sce.getServletContext().setAttribute("customers", Customers.findAll());
+
+        /**
+         * Array of primitives (int)
+         */
+        int[] intArray = new int[]{10, 20, 30, 40, 50};
+        sce.getServletContext().setAttribute("intArray", intArray);
+
+        /**
+         * Array of Objects (String)
+         */
+        String[] stringArray = new String[]{
+                "A first string",
+                "La deuxieme string",
+                "Ella troisiemo stringo",
+        };
+        sce.getServletContext().setAttribute("stringArray", stringArray);
+
+        /**
+         * String-keyed Map
+         */
+        Hashtable stringMap = new Hashtable();
+        sce.getServletContext().setAttribute("stringMap", stringMap);
+        stringMap.put("one", "uno");
+        stringMap.put("two", "dos");
+        stringMap.put("three", "tres");
+        stringMap.put("four", "cuatro");
+        stringMap.put("five", "cinco");
+        stringMap.put("six", "seis");
+        stringMap.put("seven", "siete");
+        stringMap.put("eight", "ocho");
+        stringMap.put("nine", "nueve");
+        stringMap.put("ten", "diez");
+
+        /**
+         * Integer-keyed Map
+         */
+        // we use a Hashtable so we can get an Enumeration easily, below
+        Hashtable numberMap = new Hashtable();
+        sce.getServletContext().setAttribute("numberMap", numberMap);
+        numberMap.put(new Integer(1), "uno");
+        numberMap.put(new Integer(2), "dos");
+        numberMap.put(new Integer(3), "tres");
+        numberMap.put(new Integer(4), "cuatro");
+        numberMap.put(new Integer(5), "cinco");
+        numberMap.put(new Integer(6), "seis");
+        numberMap.put(new Integer(7), "siete");
+        numberMap.put(new Integer(8), "ocho");
+        numberMap.put(new Integer(9), "nueve");
+        numberMap.put(new Integer(10), "diez");
+
+        /**
+         * Enumeration
+         */
+        Enumeration enum_ = numberMap.keys();
+        // don't use 'enum' for attribute name because it is a
+        // reserved word in EcmaScript.
+        sce.getServletContext().setAttribute("enumeration", enum_);
+
+        /**
+         * Message arguments for parametric replacement
+         */
+        Object[] serverInfoArgs =
+                new Object[]{
+                        sce.getServletContext().getServerInfo(),
+                        System.getProperty("java.version")
+                };
+        sce.getServletContext().setAttribute("serverInfoArgs", serverInfoArgs);
+    }
+
+    //*********************************************************************
+    // Initializations
+
+    private void p(String s) {
+        System.out.println("[Init] " + s);
+    }
+}
diff --git a/standard-examples/src/main/java/org/apache/taglibs/standard/examples/taglib/CustomerFmtTag.java b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/taglib/CustomerFmtTag.java
new file mode 100644
index 0000000..277a7eb
--- /dev/null
+++ b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/taglib/CustomerFmtTag.java
@@ -0,0 +1,127 @@
+/*
+ * 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.
+ */
+
+package org.apache.taglibs.standard.examples.taglib;
+
+import java.io.IOException;
+
+import javax.servlet.jsp.JspWriter;
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.tagext.TagSupport;
+
+import org.apache.taglibs.standard.examples.beans.Customer;
+
+/**
+ * <p>Tag handler for &lt;customerFmt&gt;
+ *
+ * @author Pierre Delisle
+ */
+public class CustomerFmtTag extends TagSupport {
+
+    //*********************************************************************
+    // Instance variables
+
+    /**
+     * Holds value of property customer.
+     */
+    private Customer customer;
+
+    /**
+     * Holds value of property fmt.
+     */
+    private String fmt;
+
+    //*********************************************************************
+    // Constructors
+
+    public CustomerFmtTag() {
+        super();
+        init();
+    }
+
+    private void init() {
+        customer = null;
+        fmt = null;
+    }
+
+    //*********************************************************************
+    // TagSupport methods
+
+    public int doStartTag() throws JspException {
+        JspWriter out = pageContext.getOut();
+        try {
+            if (fmt.equalsIgnoreCase("short")) {
+                out.println(customer.getFirstName() + " " +
+                        customer.getLastName());
+            } else if (fmt.equalsIgnoreCase("long")) {
+                out.println(customer.getFirstName() + " " +
+                        customer.getLastName() + " " + customer.getAddress());
+            } else {
+                out.println("invalid format");
+            }
+        } catch (IOException ex) {
+        }
+
+        return SKIP_BODY;
+    }
+
+    // Releases any resources we may have (or inherit)
+
+    public void release() {
+        super.release();
+        init();
+    }
+
+    //*********************************************************************
+    // Accessors
+
+    /**
+     * Getter for property customer.
+     *
+     * @return Value of property customer.
+     */
+    public Customer getCustomer() {
+        return customer;
+    }
+
+    /**
+     * Setter for property customer.
+     *
+     * @param customer New value of property customer.
+     */
+    public void setCustomer(Customer customer) {
+        this.customer = customer;
+    }
+
+    /**
+     * Getter for property fmt.
+     *
+     * @return Value of property fmt.
+     */
+    public String getFmt() {
+        return fmt;
+    }
+
+    /**
+     * Setter for property fmt.
+     *
+     * @param fmt New value of property fmt.
+     */
+    public void setFmt(String fmt) {
+        this.fmt = fmt;
+    }
+}
diff --git a/standard-examples/src/main/java/org/apache/taglibs/standard/examples/taglib/DefaultLocaleTag.java b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/taglib/DefaultLocaleTag.java
new file mode 100644
index 0000000..f3d430a
--- /dev/null
+++ b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/taglib/DefaultLocaleTag.java
@@ -0,0 +1,42 @@
+/*
+ * 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.
+ */
+
+package org.apache.taglibs.standard.examples.taglib;
+
+import java.util.Locale;
+
+import javax.servlet.jsp.JspTagException;
+import javax.servlet.jsp.jstl.core.ConditionalTagSupport;
+
+/**
+ * <p>Tag handler for &lt;locales&gt;
+ *
+ * @author Felipe Leme <jstl@felipeal.net>
+ */
+
+public class DefaultLocaleTag extends ConditionalTagSupport {
+
+    private static final Locale defaultLocale = Locale.getDefault();
+
+    public boolean condition() throws JspTagException {
+        LocalesTag localesTag = (LocalesTag) findAncestorWithClass(this, LocalesTag.class);
+        if (localesTag == null) {
+            throw new JspTagException("defaultLocale bust be inside locales");
+        }
+        return localesTag.getCurrent().equals(defaultLocale);
+    }
+}
diff --git a/standard-examples/src/main/java/org/apache/taglibs/standard/examples/taglib/EscapeHtmlTag.java b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/taglib/EscapeHtmlTag.java
new file mode 100644
index 0000000..a075e78
--- /dev/null
+++ b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/taglib/EscapeHtmlTag.java
@@ -0,0 +1,136 @@
+/*
+ * 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.
+ */
+
+package org.apache.taglibs.standard.examples.taglib;
+
+import java.io.IOException;
+import java.io.Reader;
+import java.io.Writer;
+
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.JspTagException;
+import javax.servlet.jsp.tagext.BodyTagSupport;
+
+import org.apache.taglibs.standard.examples.util.Util;
+
+/**
+ * <p>Tag handler for &lt;escapeHtml&gt;
+ *
+ * @author Pierre Delisle
+ */
+public class EscapeHtmlTag extends BodyTagSupport {
+
+    //*********************************************************************
+    // Instance variables
+
+    private Object reader;
+    private Object writer;
+
+    //*********************************************************************
+    // Constructors
+
+    public EscapeHtmlTag() {
+        super();
+        init();
+    }
+
+    private void init() {
+        reader = null;
+        writer = null;
+    }
+
+
+    //*********************************************************************
+    // Tag's properties
+
+    /**
+     * Tag's 'reader' attribute
+     */
+    public void setReader(Object reader) {
+        this.reader = reader;
+    }
+
+    /**
+     * Tag's 'writer' attribute
+     */
+    public void setWriter(Object writer) {
+        this.writer = writer;
+    }
+
+    //*********************************************************************
+    // TagSupport methods
+
+    public int doEndTag() throws JspException {
+        Reader in;
+        Writer out;
+
+        if (reader == null) {
+            String bcs = getBodyContent().getString().trim();
+            if (bcs == null || bcs.equals("")) {
+                throw new JspTagException("In &lt;escapeHtml&gt;, 'reader' " +
+                        "not specified and no non-whitespace content inside the tag.");
+            }
+            in = Util.castToReader(bcs);
+        } else {
+            in = Util.castToReader(reader);
+        }
+
+        if (writer == null) {
+            out = pageContext.getOut();
+        } else {
+            out = Util.castToWriter(writer);
+        }
+
+        transform(in, out);
+        return EVAL_PAGE;
+    }
+
+    /**
+     * Releases any resources we may have (or inherit)
+     */
+    public void release() {
+        super.release();
+        init();
+    }
+
+    //*********************************************************************
+    // Tag's scific behavior methods
+
+    /**
+     * Transform
+     */
+    public void transform(Reader reader, Writer writer)
+            throws JspException {
+        int c;
+        try {
+            writer.write("<pre>");
+            while ((c = reader.read()) != -1) {
+                if (c == '<') {
+                    writer.write("&lt;");
+                } else if (c == '>') {
+                    writer.write("&gt;");
+                } else {
+                    writer.write(c);
+                }
+            }
+            writer.write("</pre>");
+        } catch (IOException ex) {
+            throw new JspException("EscapeHtml: " +
+                    "error copying chars", ex);
+        }
+    }
+}
diff --git a/standard-examples/src/main/java/org/apache/taglibs/standard/examples/taglib/EvenTag.java b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/taglib/EvenTag.java
new file mode 100644
index 0000000..80c4bd3
--- /dev/null
+++ b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/taglib/EvenTag.java
@@ -0,0 +1,45 @@
+/*
+ * 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.
+ */
+
+package org.apache.taglibs.standard.examples.taglib;
+
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.JspTagException;
+import javax.servlet.jsp.jstl.core.LoopTag;
+import javax.servlet.jsp.tagext.TagSupport;
+
+/**
+ * <p>Tag handler for &lt;odd&gt;
+ *
+ * @author Pierre Delisle
+ */
+public class EvenTag extends TagSupport {
+
+    //*********************************************************************
+    // TagSupport methods
+
+    public int doStartTag() throws JspException {
+        LoopTag iteratorTag = (LoopTag) findAncestorWithClass(
+                this, LoopTag.class);
+        if (iteratorTag == null) {
+            throw new JspTagException("<even> must be nested within a LoopTag");
+        }
+
+        int count = iteratorTag.getLoopStatus().getCount();
+        return (count % 2 == 0) ? EVAL_BODY_INCLUDE : SKIP_BODY;
+    }
+}
diff --git a/standard-examples/src/main/java/org/apache/taglibs/standard/examples/taglib/FileTag.java b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/taglib/FileTag.java
new file mode 100644
index 0000000..78c8b7c
--- /dev/null
+++ b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/taglib/FileTag.java
@@ -0,0 +1,121 @@
+/*
+ * 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.
+ */
+
+package org.apache.taglibs.standard.examples.taglib;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.tagext.TagSupport;
+
+/**
+ * <p>Tag handler for &lt;file&gt;
+ *
+ * @author Pierre Delisle
+ */
+public class FileTag extends TagSupport {
+
+    //*********************************************************************
+    // Instance variables
+
+    private String id;
+    private String file;
+
+    private Reader reader;
+
+    //*********************************************************************
+    // Constructors
+
+    public FileTag() {
+        super();
+        init();
+    }
+
+    private void init() {
+        id = null;
+        file = null;
+    }
+
+    //*********************************************************************
+    // Tag's properties
+
+    /**
+     * Tag's 'id' attribute
+     */
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    /**
+     * Tag's 'file' attribute
+     */
+    public void setfile(String file) {
+        this.file = file;
+    }
+
+    //*********************************************************************
+    // TagSupport methods
+
+    public int doStartTag() throws JspException {
+        reader = getReaderFromFile(file);
+        exposeVariable(reader);
+        return EVAL_BODY_INCLUDE;
+    }
+
+    public int doEndTag() throws JspException {
+        try {
+            reader.close();
+        } catch (IOException ex) {
+        }
+        reader = null;
+        return EVAL_PAGE;
+    }
+
+    /**
+     * Releases any files we may have (or inherit)
+     */
+    public void release() {
+        super.release();
+        init();
+    }
+
+    //*********************************************************************
+    // Tag's specific behavior methods
+
+    public Reader getReaderFromFile(String name) throws JspException {
+        InputStream in = pageContext.getServletContext().
+                getResourceAsStream(name);
+        if (in == null) {
+            throw new JspException("Could not access " + name);
+        }
+
+        return new InputStreamReader(in);
+    }
+
+
+    //*********************************************************************
+    // Utility methods
+
+    private void exposeVariable(Reader reader) {
+        if (id != null) {
+            pageContext.setAttribute(id, reader);
+        }
+    }
+}
diff --git a/standard-examples/src/main/java/org/apache/taglibs/standard/examples/taglib/Functions.java b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/taglib/Functions.java
new file mode 100644
index 0000000..a2a6627
--- /dev/null
+++ b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/taglib/Functions.java
@@ -0,0 +1,78 @@
+/*
+ * 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.
+ */
+
+package org.apache.taglibs.standard.examples.taglib;
+
+import java.lang.reflect.Array;
+
+import javax.servlet.jsp.JspTagException;
+
+/**
+ * <p>Exmaples taglib Functions</p>
+ *
+ * @author Pierre Delisle
+ */
+
+public class Functions {
+
+    /**
+     * Display the collection types supported by c:forEach.
+     */
+    public static String display(Object obj) throws JspTagException {
+        if (obj == null) {
+            return "";
+        }
+        if (obj instanceof String) {
+            return obj.toString();
+        }
+        /*
+        if (obj instanceof Collection) {
+            return "FIXME";
+        }
+        if (obj instanceof Map) {
+            return "FIXME";
+        }        
+        if (obj instanceof Iterator) {
+            Iterator iter = (Iterator)obj;
+            while (iter.hasNext()) {
+                iter.next();
+            }
+            return "FIXME";
+        }            
+        if (obj instanceof Enumeration) {
+            Enumeration enum_ = (Enumeration)obj;
+            while (enum_.hasMoreElements()) {
+                enum_.nextElement();
+            }
+            return "FIXME";
+        }
+        */
+        try {
+            StringBuffer buf = new StringBuffer();
+            int count = Array.getLength(obj);
+            for (int i = 0; i < count; i++) {
+                buf.append(Array.get(obj, i).toString());
+                if (i < count - 1) {
+                    buf.append("<font color='red'> &#149; </font>");
+                }
+            }
+            return buf.toString();
+        } catch (IllegalArgumentException ex) {
+        }
+        throw new JspTagException("Bad Item");
+    }
+}
diff --git a/standard-examples/src/main/java/org/apache/taglibs/standard/examples/taglib/LocalesTag.java b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/taglib/LocalesTag.java
new file mode 100644
index 0000000..b4f3777
--- /dev/null
+++ b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/taglib/LocalesTag.java
@@ -0,0 +1,63 @@
+/*
+ * 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.
+ */
+
+package org.apache.taglibs.standard.examples.taglib;
+
+import java.util.Locale;
+
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.jstl.core.LoopTagSupport;
+
+/**
+ * <p>Tag handler for &lt;locales&gt;
+ *
+ * @author Felipe Leme <jstl@felipeal.net>
+ */
+public class LocalesTag extends LoopTagSupport {
+
+    private static final Locale[] locales = Locale.getAvailableLocales();
+    private int pointer;
+    private String varTotal;
+
+    public void setVarTotal(String value) {
+        varTotal = value;
+    }
+
+    public void prepare() {
+        pointer = 0;
+        if (varTotal != null && varTotal.length() > 0) {
+            pageContext.setAttribute(varTotal, new Integer(locales.length));
+        }
+
+    }
+
+    public boolean hasNext() {
+        return pointer < locales.length;
+    }
+
+    public Object next() {
+        return locales[pointer++];
+    }
+
+    public void setBegin(int value) {
+        super.begin = value;
+    }
+
+    public void setEnd(int value) {
+        super.end = value;
+    }
+}
diff --git a/standard-examples/src/main/java/org/apache/taglibs/standard/examples/taglib/NullAttributeException.java b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/taglib/NullAttributeException.java
new file mode 100644
index 0000000..747ee56
--- /dev/null
+++ b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/taglib/NullAttributeException.java
@@ -0,0 +1,43 @@
+/*
+ * 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.
+ */
+
+package org.apache.taglibs.standard.examples.taglib;
+
+import javax.servlet.jsp.JspTagException;
+
+/**
+ * <p>NullAttributeException is a JspTagException that will be thrown
+ * by the JSTL RI handlers when a tag attribute illegally evaluates
+ * to 'null'.</p>
+ *
+ * @author Shawn Bayern
+ */
+
+public class NullAttributeException extends JspTagException {
+
+    /**
+     * Constructs a ExpressionException with appropriate information.
+     *
+     * @param tag The name of the tag in which the error occurred.
+     * @param att The attribute value for which the error occurred.
+     */
+    public NullAttributeException(String tag, String att) {
+        super("The '" + att + "' attribute illegally evaluated to 'null' "
+                + "in &lt;" + tag + "&gt;.");
+    }
+}
+
diff --git a/standard-examples/src/main/java/org/apache/taglibs/standard/examples/taglib/OddTag.java b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/taglib/OddTag.java
new file mode 100644
index 0000000..c7140a9
--- /dev/null
+++ b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/taglib/OddTag.java
@@ -0,0 +1,49 @@
+/*
+ * 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.
+ */
+
+package org.apache.taglibs.standard.examples.taglib;
+
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.JspTagException;
+import javax.servlet.jsp.jstl.core.LoopTag;
+import javax.servlet.jsp.tagext.TagSupport;
+
+/**
+ * <p>Tag handler for &lt;odd&gt;
+ *
+ * @author Pierre Delisle
+ */
+public class OddTag extends TagSupport {
+
+    //*********************************************************************
+    // TagSupport methods
+
+    public int doStartTag() throws JspException {
+        LoopTag iteratorTag = (LoopTag) findAncestorWithClass(
+                this, LoopTag.class);
+        if (iteratorTag == null) {
+            throw new JspTagException("<odd> must be nested within a LoopTag");
+        }
+
+        int count = iteratorTag.getLoopStatus().getCount();
+//        System.out.println("count: " + count);
+//        System.out.println("count odd/even: " + (count % 2));
+        return (count % 2 == 1) ? EVAL_BODY_INCLUDE : SKIP_BODY;
+    }
+}
+
+
diff --git a/standard-examples/src/main/java/org/apache/taglibs/standard/examples/taglib/ResourceTag.java b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/taglib/ResourceTag.java
new file mode 100644
index 0000000..cf73694
--- /dev/null
+++ b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/taglib/ResourceTag.java
@@ -0,0 +1,140 @@
+/*
+ * 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.
+ */
+
+package org.apache.taglibs.standard.examples.taglib;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.Reader;
+import java.io.Writer;
+
+import javax.servlet.RequestDispatcher;
+import javax.servlet.ServletResponseWrapper;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.tagext.TagSupport;
+
+import org.apache.taglibs.standard.examples.util.IOBean;
+import org.apache.taglibs.standard.examples.util.ServletResponseWrapperForWriter;
+
+/**
+ * <p>Tag handler for &lt;resource&gt;
+ *
+ * @author Pierre Delisle
+ */
+public class ResourceTag extends TagSupport {
+
+    //*********************************************************************
+    // Instance variables
+
+    private String id;
+    private String resource;
+
+    private Reader reader;
+
+    //*********************************************************************
+    // Constructors
+
+    public ResourceTag() {
+        super();
+        init();
+    }
+
+    private void init() {
+        id = null;
+        resource = null;
+    }
+
+    //*********************************************************************
+    // Tag's properties
+
+    /**
+     * Tag's 'id' attribute
+     */
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    /**
+     * Tag's 'resource' attribute
+     */
+    public void setResource(String resource) {
+        this.resource = resource;
+    }
+
+    //*********************************************************************
+    // TagSupport methods
+
+    public int doStartTag() throws JspException {
+        reader = getReaderFromResource(resource);
+        exposeVariable(reader);
+        return EVAL_BODY_INCLUDE;
+    }
+
+    public int doEndTag() throws JspException {
+        try {
+            reader.close();
+        } catch (IOException ex) {
+        }
+        reader = null;
+        return EVAL_PAGE;
+    }
+
+    /**
+     * Releases any resources we may have (or inherit)
+     */
+    public void release() {
+        super.release();
+        init();
+    }
+
+    //*********************************************************************
+    // Tag's scific behavior methods
+
+    private Reader getReaderFromResource(String name) throws JspException {
+        HttpServletRequest request =
+                (HttpServletRequest) pageContext.getRequest();
+        HttpServletResponse response =
+                (HttpServletResponse) pageContext.getResponse();
+        RequestDispatcher rd = null;
+
+        // The response of the local URL becomes the reader that
+        // we export. Need temporary storage.
+        IOBean ioBean = new IOBean();
+        Writer writer = ioBean.getWriter();
+        ServletResponseWrapper responseWrapper =
+                new ServletResponseWrapperForWriter(
+                        response, new PrintWriter(writer));
+        rd = pageContext.getServletContext().getRequestDispatcher(name);
+        try {
+            rd.include(request, responseWrapper);
+            return ioBean.getReader();
+        } catch (Exception ex) {
+            throw new JspException(ex);
+        }
+    }
+
+    //*********************************************************************
+    // Utility methods
+
+    private void exposeVariable(Reader reader) {
+        if (id != null) {
+            pageContext.setAttribute(id, reader);
+        }
+    }
+}
diff --git a/standard-examples/src/main/java/org/apache/taglibs/standard/examples/taglib/UsCustomerTag.java b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/taglib/UsCustomerTag.java
new file mode 100644
index 0000000..f55da79
--- /dev/null
+++ b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/taglib/UsCustomerTag.java
@@ -0,0 +1,97 @@
+/*
+ * 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.
+ */
+
+package org.apache.taglibs.standard.examples.taglib;
+
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.JspTagException;
+import javax.servlet.jsp.jstl.core.ConditionalTagSupport;
+
+import org.apache.taglibs.standard.examples.beans.Customer;
+
+/**
+ * <p>Tag handler for &lt;usCustomer&gt;
+ *
+ * @author Pierre Delisle
+ */
+public class UsCustomerTag extends ConditionalTagSupport {
+
+    //*********************************************************************
+    // Instance Variables
+
+    /**
+     * Holds value of property customer.
+     */
+    private Customer customer;
+
+    //*********************************************************************
+    // Constructor and lusCustomerecycle management
+
+    public UsCustomerTag() {
+        super();
+        init();
+    }
+
+    private void init() {
+        customer = null;
+    }
+
+    //*********************************************************************
+    // TagSupport methods
+
+    public void release() {
+        super.release();
+        init();
+    }
+
+    //*********************************************************************
+    // ConditionalTagSupport methods
+
+    protected boolean condition() throws JspTagException {
+        try {
+            if (customer == null) {
+                throw new NullAttributeException("usCustomer", "test");
+            } else {
+                //System.out.println("country: " + customer.getAddress().getCountry());
+                return (customer.getAddress().getCountry().equalsIgnoreCase("USA"));
+            }
+        } catch (JspException ex) {
+            throw new JspTagException(ex.toString());
+        }
+    }
+
+    //*********************************************************************
+    // Accessors
+
+    /**
+     * Getter for property customer.
+     *
+     * @return Value of property customer.
+     */
+    public Customer getCustomer() {
+        return customer;
+    }
+
+    /**
+     * Setter for property customer.
+     *
+     * @param customer New value of property customer.
+     */
+    public void setCustomer(Customer customer) {
+        this.customer = customer;
+    }
+}
diff --git a/standard-examples/src/main/java/org/apache/taglibs/standard/examples/util/IOBean.java b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/util/IOBean.java
new file mode 100644
index 0000000..f4958d8
--- /dev/null
+++ b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/util/IOBean.java
@@ -0,0 +1,63 @@
+/*
+ * 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.
+ */
+
+package org.apache.taglibs.standard.examples.util;
+
+import java.io.Reader;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.io.Writer;
+
+import javax.servlet.jsp.JspException;
+
+/**
+ * <p>String repository for Reader/Writer.
+ *
+ * @author Pierre Delisle
+ */
+public class IOBean {
+    StringWriter stringWriter = null;
+    String content = null;
+
+    public Reader getReader() throws JspException {
+        //p("getReader()");
+        if (content == null) {
+            if (stringWriter == null) {
+                throw new JspException(
+                        "content must first be added to the bean via the writer");
+            }
+            content = stringWriter.toString();
+        }
+        return new StringReader(content);
+    }
+
+    public Writer getWriter() {
+        //p("getWriter()");
+        content = null;
+        stringWriter = new StringWriter();
+        return stringWriter;
+    }
+
+    public void release() {
+        stringWriter = null;
+        content = null;
+    }
+
+    private void p(String s) {
+        System.out.println("[IOBean] " + s);
+    }
+}
diff --git a/standard-examples/src/main/java/org/apache/taglibs/standard/examples/util/ServletResponseWrapperForWriter.java b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/util/ServletResponseWrapperForWriter.java
new file mode 100644
index 0000000..b37d3b1
--- /dev/null
+++ b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/util/ServletResponseWrapperForWriter.java
@@ -0,0 +1,57 @@
+/*
+ * 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.
+ */
+
+package org.apache.taglibs.standard.examples.util;
+
+import java.io.PrintWriter;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpServletResponseWrapper;
+
+/**
+ * ServletResponseWrapper used for the the generation of
+ * semi-dynamic pages.
+ * <p>This 'wrapped' response object is passed as the second argument
+ * to the internal RequestDispatcher.include(). It channels
+ * all output text into the PrintWriter specified in the
+ * constructor (which is associated with the file where the
+ * output of the JSP page has to be saved).
+ *
+ * @author Pierre Delisle
+ */
+public class ServletResponseWrapperForWriter
+        extends HttpServletResponseWrapper {
+    /**
+     * The writer that will get all the output of the response.
+     */
+    PrintWriter writer;
+
+    public ServletResponseWrapperForWriter(ServletResponse response,
+                                           PrintWriter writer) {
+        super((HttpServletResponse) response);
+        this.writer = writer;
+    }
+
+    /**
+     * Returns the Writer associated with the response.
+     */
+    public java.io.PrintWriter getWriter()
+            throws java.io.IOException {
+        return writer;
+    }
+}
+
diff --git a/standard-examples/src/main/java/org/apache/taglibs/standard/examples/util/Util.java b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/util/Util.java
new file mode 100644
index 0000000..08e69bd
--- /dev/null
+++ b/standard-examples/src/main/java/org/apache/taglibs/standard/examples/util/Util.java
@@ -0,0 +1,63 @@
+/*
+ * 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.
+ */
+
+package org.apache.taglibs.standard.examples.util;
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.Reader;
+import java.io.StringReader;
+import java.io.Writer;
+
+import javax.servlet.jsp.JspException;
+
+/**
+ * <p>Utility class for examples webapp.
+ *
+ * @author Pierre Delisle
+ */
+public class Util {
+
+    public static Writer castToWriter(Object obj) throws JspException {
+        if (obj instanceof OutputStream) {
+            return new OutputStreamWriter((OutputStream) obj);
+        } else if (obj instanceof Writer) {
+            return (Writer) obj;
+            /*@@@
+        } else if (obj instanceof String) {
+            return new StringWriter();
+             */
+        }
+        throw new JspException("Invalid type '" + obj.getClass().getName() +
+                "' for castToWriter()");
+    }
+
+    public static Reader castToReader(Object obj) throws JspException {
+        if (obj instanceof InputStream) {
+            return new InputStreamReader((InputStream) obj);
+        } else if (obj instanceof Reader) {
+            return (Reader) obj;
+        } else if (obj instanceof String) {
+            return new StringReader((String) obj);
+        }
+        throw new JspException("Invalid type '" + obj.getClass().getName() +
+                "' for castToReader()");
+    }
+}
+
diff --git a/standard-examples/src/main/webapp/ShowSource.jsp b/standard-examples/src/main/webapp/ShowSource.jsp
new file mode 100644
index 0000000..92fdfb7
--- /dev/null
+++ b/standard-examples/src/main/webapp/ShowSource.jsp
@@ -0,0 +1,36 @@
+<!--
+Displays the content of the file specified in request
+parameter "filename".
+<%-- Warning!  Can be used to retrieve the source code for
+any file in the 'standard-examples' application.
+It is not advisable to insert any sensitive code
+(even as an experiment) into this application --%>
+-->
+
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="ex" uri="/jstl-examples-taglib" %>
+
+<%-- 
+  Let's get back the URL as a String so we can use it to
+  demonstrate "c:import"
+--%>
+<% pageContext.setAttribute("filepath",
+        application.
+                getResource(request.getParameter("filename")).toExternalForm()); %>
+<% pageContext.setAttribute("filename", request.getParameter("filename")); %>
+
+<html>
+<head>
+    <title>JSTL: Source code for <c:out value="${filename}"/></title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>Source code for:&nbsp; ${filename}</h3>
+
+<hr>
+
+<c:import varReader="reader" url="${filepath}">
+    <ex:escapeHtml reader="${reader}"/>
+</c:import>
+<hr>
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/Templates/ExamplesTemplate.dwt b/standard-examples/src/main/webapp/Templates/ExamplesTemplate.dwt
new file mode 100644
index 0000000..200becc
--- /dev/null
+++ b/standard-examples/src/main/webapp/Templates/ExamplesTemplate.dwt
@@ -0,0 +1,38 @@
+<html>
+<head>
+<!-- #BeginEditable "doctitle" -->
+<title>Untitled Document</title>
+<!-- #EndEditable -->
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<link rel="stylesheet" href="../global.css" type="text/css">
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+<table width="100%" border="0" cellpadding="5">
+  <tr> 
+    <td height="0"><font color="#000099"><b>standard taglib &#149; implementation 
+      of the JSP Standard Tag Library &#149; </b></font><font color="#003399"><a href="mailto:taglibs-user@jakarta.apache.org"><b>support</b></a> 
+      &nbsp;&nbsp;<b><a href="mailto:taglibs-dev@jakarta.apache.org">development</a>&nbsp;&nbsp; 
+      <a href="mailto:jsr-52-comments@jcp.org">comments to JSR-52</a></b></font></td>
+  </tr>
+  <tr> 
+    <td bgcolor="#CCCCFF"><font size="-1">Examples &nbsp;&nbsp;&nbsp;&nbsp;<a href="../index.html">Introduction</a> 
+      &#149; <a href="../elsupport/index.html">General Purpose</a> &#149; <a href="../conditionals/index.html">Conditionals</a> 
+      &#149; <a href="../iterators/index.html">Iterators</a> &#149; <a href="../import/index.jsp">Import</a> 
+      &#149; <a href="../format/index.html">I18N & Formatting</a> &#149; <a href="../xml/index.html">XML</a> 
+      &#149; <a href="../sql/index.jsp">SQL</a> &#149; <a href="../functions/index.html">Functions</a> 
+      &#149; <a href="../tlv/index.html">TLV</a> &#149; <a href="../misc/index.html"></a><a href="../misc/index.html">Misc.</a></font></td>
+  </tr>
+</table>
+<!-- #BeginEditable "body" -->{body}<!-- #EndEditable -->
+<hr noshade color="#000099">
+<table width="100%" border="0" cellpadding="5">
+  <tr> 
+    <td height="24"><font color="#000099"><b>standard taglib &#149; implementation 
+      of the JSP Standard Tag Library &#149; </b></font><font color="#003399"><a href="mailto:taglibs-user@jakarta.apache.org"><b>support</b></a> 
+      &nbsp;&nbsp;<b><a href="mailto:taglibs-dev@jakarta.apache.org">development</a>&nbsp;&nbsp; 
+      <a href="mailto:jsr-52-comments@jcp.org">comments to JSR-52</a></b></font></td>
+  </tr>
+</table>
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/WEB-INF/tlds/jstl-examples.tld b/standard-examples/src/main/webapp/WEB-INF/tlds/jstl-examples.tld
new file mode 100644
index 0000000..91fdfa2
--- /dev/null
+++ b/standard-examples/src/main/webapp/WEB-INF/tlds/jstl-examples.tld
@@ -0,0 +1,165 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"
+        version="2.0">
+    <description>
+        Tag Library to support examples webapp
+    </description>
+    <tlib-version>1.1</tlib-version>
+    <short-name>ex</short-name>
+    <uri>/jstl-examples-taglib</uri>
+
+    <tag>
+        <name>defaultLocale</name>
+        <tag-class>org.apache.taglibs.standard.examples.taglib.DefaultLocaleTag</tag-class>
+        <body-content>JSP</body-content>
+    </tag>
+
+    <tag>
+        <name>locales</name>
+        <tag-class>org.apache.taglibs.standard.examples.taglib.LocalesTag</tag-class>
+        <body-content>JSP</body-content>
+        <attribute>
+            <name>var</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>varStatus</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>varTotal</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>begin</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>end</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+        </attribute>
+    </tag>
+
+    <tag>
+        <name>escapeHtml</name>
+        <tag-class>org.apache.taglibs.standard.examples.taglib.EscapeHtmlTag</tag-class>
+        <body-content>JSP</body-content>
+        <attribute>
+            <name>reader</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>writer</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+        </attribute>
+    </tag>
+
+    <tag>
+        <name>resource</name>
+        <tag-class>org.apache.taglibs.standard.examples.taglib.ResourceTag</tag-class>
+        <body-content>JSP</body-content>
+        <attribute>
+            <name>id</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>resource</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+    </tag>
+
+    <tag>
+        <name>file</name>
+        <tag-class>org.apache.taglibs.standard.examples.taglib.FileTag</tag-class>
+        <body-content>JSP</body-content>
+        <attribute>
+            <name>id</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>file</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+        </attribute>
+    </tag>
+
+    <tag>
+        <name>odd</name>
+        <tag-class>org.apache.taglibs.standard.examples.taglib.OddTag</tag-class>
+        <body-content>JSP</body-content>
+    </tag>
+
+    <tag>
+        <name>even</name>
+        <tag-class>org.apache.taglibs.standard.examples.taglib.EvenTag</tag-class>
+        <body-content>JSP</body-content>
+    </tag>
+
+    <tag>
+        <name>usCustomer</name>
+        <tag-class>org.apache.taglibs.standard.examples.taglib.UsCustomerTag</tag-class>
+        <body-content>JSP</body-content>
+        <attribute>
+            <name>customer</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>var</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+    </tag>
+
+    <tag>
+        <name>customerFmt</name>
+        <tag-class>org.apache.taglibs.standard.examples.taglib.CustomerFmtTag</tag-class>
+        <body-content>empty</body-content>
+        <attribute>
+            <name>customer</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>fmt</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+        </attribute>
+    </tag>
+
+    <tag>
+        <name>SPath</name>
+        <tag-class>org.apache.taglibs.standard.extra.spath.SPathTag</tag-class>
+        <body-content>empty</body-content>
+        <attribute>
+            <name>var</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>select</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+    </tag>
+
+    <function>
+        <name>display</name>
+        <function-class>org.apache.taglibs.standard.examples.taglib.Functions</function-class>
+        <function-signature>java.lang.String display(java.lang.Object)</function-signature>
+    </function>
+
+</taglib>
diff --git a/standard-examples/src/main/webapp/WEB-INF/web.xml b/standard-examples/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..fa6429a
--- /dev/null
+++ b/standard-examples/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd"
+         version="2.4">
+
+    <display-name>JSTL Examples</display-name>
+    <description>
+        Examples for the 'standard' taglib (JSTL)
+    </description>
+
+    <listener>
+        <listener-class>org.apache.taglibs.standard.examples.startup.Init</listener-class>
+    </listener>
+
+    <welcome-file-list>
+        <welcome-file>index.jsp</welcome-file>
+        <welcome-file>index.html</welcome-file>
+    </welcome-file-list>
+
+</web-app>
diff --git a/standard-examples/src/main/webapp/conditionals/Choose.jsp b/standard-examples/src/main/webapp/conditionals/Choose.jsp
new file mode 100644
index 0000000..2985343
--- /dev/null
+++ b/standard-examples/src/main/webapp/conditionals/Choose.jsp
@@ -0,0 +1,27 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+<html>
+<head>
+    <title>JSTL: Conditional Support -- Mutually Exclusive Conditional Execution Example</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>Mutually Exclusive Conditional Execution</h3>
+
+<h4>USA:blue Canada:red Others:green</h4>
+
+<c:forEach var="customer" items="${customers}">
+<c:choose>
+<c:when test="${customer.address.country == 'USA'}">
+<font color="blue">
+    </c:when>
+    <c:when test="${customer.address.country == 'Canada'}">
+    <font color="red">
+        </c:when>
+        <c:otherwise>
+        <font color="green">
+            </c:otherwise>
+            </c:choose>
+                ${customer}</font><br>
+        </c:forEach>
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/conditionals/CustomLogicTag.jsp b/standard-examples/src/main/webapp/conditionals/CustomLogicTag.jsp
new file mode 100644
index 0000000..96e9f51
--- /dev/null
+++ b/standard-examples/src/main/webapp/conditionals/CustomLogicTag.jsp
@@ -0,0 +1,36 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="ex" uri="/jstl-examples-taglib" %>
+
+<html>
+<head>
+    <title>JSTL: Conditional Support -- Custom Logic Tag Example</title>
+</head>
+<body bgcolor="#FFFFFF">
+
+<h3>Custom Logic Tag</h3>
+
+<h4>Customers living in the USA</h4>
+
+<h4>Simple Conditional Execution</h4>
+<c:forEach var="customer" items="${customers}">
+    <ex:usCustomer customer="${customer}">
+        <c:out value="${customer}"/><br>
+    </ex:usCustomer>
+</c:forEach>
+
+<h4>Mutually Exclusive Conditional Execution</h4>
+
+<c:forEach var="customer" items="${customers}">
+<ex:usCustomer customer="${customer}" var="isUsCustomer"/>
+<c:choose>
+<c:when test="${isUsCustomer}">
+<font color="blue">
+    </c:when>
+    <c:otherwise>
+    <font color="green">
+        </c:otherwise>
+        </c:choose>
+        <c:out value="${customer}"/></font><br>
+    </c:forEach>
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/conditionals/FailureLocal.jsp b/standard-examples/src/main/webapp/conditionals/FailureLocal.jsp
new file mode 100644
index 0000000..60bd733
--- /dev/null
+++ b/standard-examples/src/main/webapp/conditionals/FailureLocal.jsp
@@ -0,0 +1,27 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+<html>
+<head>
+    <title>JSTL: Conditional Support -- Mutually Exclusive Conditional Execution Example</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>Mutually Exclusive Conditional Execution</h3>
+
+<h4>USA:blue Canada:red Others:green</h4>
+
+<c:forEach var="customer" items="${customers}">
+<c:choose>
+<c:otherwise>
+<font color="green">
+    </c:otherwise>
+    <c:when test="${customer.address.country == 'USA'}">
+    <font color="blue">
+        </c:when>
+        <c:when test="${customer.address.country == 'Canada'}">
+        <font color="red">
+            </c:when>
+            </c:choose>
+            <c:out value="${customer}"/></font><br>
+        </c:forEach>
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/conditionals/If.jsp b/standard-examples/src/main/webapp/conditionals/If.jsp
new file mode 100644
index 0000000..f10b5d9
--- /dev/null
+++ b/standard-examples/src/main/webapp/conditionals/If.jsp
@@ -0,0 +1,19 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+<html>
+<head>
+    <title>JSTL: Conditional Support -- Simple Conditional Execution Example</title>
+</head>
+<body bgcolor="#FFFFFF">
+
+<h3>Simple Conditional Execution</h3>
+
+<h4>Customers living in the USA</h4>
+
+<c:forEach var="customer" items="${customers}">
+    <c:if test="${customer.address.country == 'USA'}">
+        ${customer}<br>
+    </c:if>
+</c:forEach>
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/conditionals/index.html b/standard-examples/src/main/webapp/conditionals/index.html
new file mode 100644
index 0000000..156c8d9
--- /dev/null
+++ b/standard-examples/src/main/webapp/conditionals/index.html
@@ -0,0 +1,66 @@
+<html><!-- #BeginTemplate "/Templates/ExamplesTemplate.dwt" -->
+<head>
+    <!-- #BeginEditable "doctitle" -->
+    <title>JSTL: Conditional Tags Examples</title>
+    <!-- #EndEditable -->
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+    <link rel="stylesheet" href="../global.css" type="text/css">
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+<table width="100%" border="0" cellpadding="5">
+    <tr>
+        <td height="0"><font color="#000099"><b>standard taglib &#149; implementation
+            of the JSP Standard Tag Library</b></font></td>
+    </tr>
+    <tr>
+        <td bgcolor="#CCCCFF"><font size="-1">Examples &nbsp;&nbsp;&nbsp;&nbsp;<a href="../index.html">Introduction</a>
+            &#149; <a href="../elsupport/index.html">General Purpose</a>
+            &#149; <a href="index.html">Conditionals</a>
+            &#149; <a href="../iterators/index.html">Iterators</a> &#149;
+            <a href="../import/index.jsp">Import</a> &#149; <a href="../format/index.html">I18N
+                & Formatting</a> &#149; <a href="../xml/index.html">XML</a>
+            &#149; <a href="../sql/index.jsp">SQL</a> &#149; <a href="../functions/index.html">Functions</a>
+            &#149; <a href="../tlv/index.html">TLV</a>
+        </font></td>
+    </tr>
+</table>
+<!-- #BeginEditable "body" -->
+<h2>Conditional Tags Examples</h2>
+
+<h3>&lt;if&gt; Simple Conditional Execution&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/conditionals/If.jsp"><img
+        src="../images/code.gif" width="24" height="24" border="0"></a>
+    <a href="If.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Only shows a customer from the customer list if they are living in the &quot;USA&quot;.<br>
+
+<h3> &lt;choose&gt;&nbsp;Mutually Exclusive Conditional Execution&nbsp;<a
+        href="../ShowSource.jsp?filename=/conditionals/Choose.jsp"><img src="../images/code.gif" width="24" height="24""
+    border="0"></a>
+    <a href="Choose.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+
+<p>Customers from the USA will be printed in blue, those from Canada in red, and
+    others in green.</p>
+
+<h3>Custom Logic Tag&nbsp;&nbsp;<a href="../ShowSource.jsp?filename=/conditionals/CustomLogicTag.jsp"><img
+        src="../images/code.gif" width="24" height="24" border="0"></a>&nbsp;<a href="CustomLogicTag.jsp"><img
+        src="../images/execute.gif" width="24" height="24" border="0"></a></h3>
+
+<p>JSTL exposes in its API the abstract class ConditionalTagSupport to facilitate
+    the implementation of custom conditional tags that leverage the standard conditional
+    behavior defined in JSTL. This example shows custom tag &lt;usCustomer&gt; that
+    returns true if its customer attribute value points to a US customer. It can
+    be used both in the context of a simple conditional execution, as well as in
+    the context of a mutually conditional execution by exposing the result of the
+    conditional execution in a JSP page attribute via the tag attribute 'var'. </p>
+<!-- #EndEditable -->
+<hr noshade color="#000099">
+<table width="100%" border="0" cellpadding="5">
+    <tr>
+        <td height="24"><font color="#000099"><b>standard taglib &#149; implementation
+            of the JSP Standard Tag Library</b></font></td>
+    </tr>
+</table>
+</body>
+<!-- #EndTemplate --></html>
diff --git a/standard-examples/src/main/webapp/elsupport/Out.jsp b/standard-examples/src/main/webapp/elsupport/Out.jsp
new file mode 100644
index 0000000..866e700
--- /dev/null
+++ b/standard-examples/src/main/webapp/elsupport/Out.jsp
@@ -0,0 +1,34 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<html>
+<head>
+    <title>JSTL: Expression Language Support -- Expr Example</title>
+</head>
+<body bgcolor="#FFFFFF">
+
+<h3>&lt;c:out&gt;</h3>
+
+<table border="1">
+    <c:forEach var="customer" items="${customers}">
+        <tr>
+            <td><c:out value="${customer.lastName}"/></td>
+            <td><c:out value="${customer.phoneHome}" default="no home phone specified"/></td>
+            <td>
+                <c:out value="${customer.phoneCell}" escapeXml="false">
+                    <font color="red">no cell phone specified</font>
+                </c:out>
+            </td>
+        </tr>
+    </c:forEach>
+</table>
+
+<h4>&lt;c:out&gt; with Reader object</h4>
+<%
+    java.io.Reader reader1 = new java.io.StringReader("<foo>Text for a Reader!</foo>");
+    pageContext.setAttribute("myReader1", reader1);
+    java.io.Reader reader2 = new java.io.StringReader("<foo>Text for a Reader!</foo>");
+    pageContext.setAttribute("myReader2", reader2);
+%>
+Reader1 (escapeXml=true) : <c:out value="${myReader1}"/><br>
+Reader2 (escapeXml=false): <c:out value="${myReader2}" escapeXml="false"/><br>
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/elsupport/Set.jsp b/standard-examples/src/main/webapp/elsupport/Set.jsp
new file mode 100644
index 0000000..cbfd706
--- /dev/null
+++ b/standard-examples/src/main/webapp/elsupport/Set.jsp
@@ -0,0 +1,34 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+<html>
+<head>
+    <title>JSTL: Expression Language Support -- Set Example</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>&lt;c:set&gt;</h3>
+
+<h4>Setting application scope attribute "customerTable"</h4>
+
+<c:set var="customerTable" scope="application">
+    <table border="1">
+        <c:forEach var="customer" items="${customers}">
+            <tr>
+                <td>${customer.lastName}</td>
+                <td><c:out value="${customer.address}" default="no address specified"/></td>
+                <td>
+                    <c:out value="${customer.address}">
+                        <font color="red">no address specified</font>
+                    </c:out>
+                </td>
+            </tr>
+        </c:forEach>
+    </table>
+</c:set>
+
+<p>
+    Using customerTable in another JSP page
+    <a href="../ShowSource.jsp?filename=/elsupport/Set2.jsp"><img src="../images/code.gif" width="24" height="24"
+                                                                  border="0"></a>
+    <a href="../elsupport/Set2.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/elsupport/Set2.jsp b/standard-examples/src/main/webapp/elsupport/Set2.jsp
new file mode 100644
index 0000000..552291c
--- /dev/null
+++ b/standard-examples/src/main/webapp/elsupport/Set2.jsp
@@ -0,0 +1,16 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<html>
+<head>
+    <title>JSTL: Expression Language Support -- Set 2 Example</title>
+</head>
+<body bgcolor="#FFFFFF">
+
+<h3>&lt;c:set&gt;</h3>
+
+<h4>Using "customerTable" application scope attribute defined in Set.jsp a first time</h4>
+<c:out value="${customerTable}" escapeXml="false"/>
+
+<h4>Using "customerTable" application scope attribute defined in Set.jsp a second time</h4>
+<c:out value="${customerTable}" escapeXml="false"/>
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/elsupport/index.html b/standard-examples/src/main/webapp/elsupport/index.html
new file mode 100644
index 0000000..a0cadb6
--- /dev/null
+++ b/standard-examples/src/main/webapp/elsupport/index.html
@@ -0,0 +1,64 @@
+<html><!-- #BeginTemplate "/Templates/ExamplesTemplate.dwt" -->
+<head>
+    <!-- #BeginEditable "doctitle" -->
+    <title>JSTL: General-Purpose Tags Examples</title>
+    <!-- #EndEditable -->
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+    <link rel="stylesheet" href="../global.css" type="text/css">
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+<table width="100%" border="0" cellpadding="5">
+    <tr>
+        <td height="0"><font color="#000099"><b>standard taglib &#149; implementation
+            of the JSP Standard Tag Library</b></font></td>
+    </tr>
+    <tr>
+        <td bgcolor="#CCCCFF"><font size="-1">Examples &nbsp;&nbsp;&nbsp;&nbsp;<a href="../index.html">Introduction</a>
+            &#149; <a href="index.html">General Purpose</a>
+            &#149; <a href="../conditionals/index.html">Conditionals</a>
+            &#149; <a href="../iterators/index.html">Iterators</a> &#149;
+            <a href="../import/index.jsp">Import</a> &#149; <a href="../format/index.html">I18N
+                & Formatting</a> &#149; <a href="../xml/index.html">XML</a>
+            &#149; <a href="../sql/index.jsp">SQL</a> &#149; <a href="../functions/index.html">Functions</a>
+            &#149; <a href="../tlv/index.html">TLV</a>
+        </font></td>
+    </tr>
+</table>
+<!-- #BeginEditable "body" -->
+<h2>General-Purpose Tags Examples</h2>
+
+<h3>&lt;out&gt;&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/elsupport/Out.jsp"><img src="../images/code.gif"
+                                                                                         width="24" height="24"
+                                                                                         border="0"></a>
+    <a href="../elsupport/Out.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+This example features &lt;out&gt; used with default values using the default attribute
+as well as the tag's body content. <br>
+
+<h3> &lt;set&gt;&nbsp;&nbsp;<a href="../ShowSource.jsp?filename=/elsupport/Set.jsp"><img src="../images/code.gif"
+                                                                                         width="24" height="24"
+                                                                                         border="0"></a>
+    <a href="../elsupport/Set.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a></h3>
+
+<p>We set the value of an application scope attribute from the &lt;set&gt; tag
+    body content. This application scope variable is then used in a second JSP page.</p>
+<!--
+<h3>&lt;declare&gt;&nbsp;&nbsp;<a href="../ShowSource.jsp?filename=/elsupport/Declare.jsp"><img src="../images/code.gif" width="24" height="24" border="0"></a> 
+  <a href="../elsupport/Declare.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a></h3>
+<p>In order for JSTL tags to collaborate with custom tags that only accept rtexprvalues, 
+  the &lt;declare&gt; tag must be used to create a scripting variable. In this 
+  example, the page attribute created by the &lt;forEach&gt; tag is used in the 
+  &lt;declare&gt; tag to export a scripting variable that is then used in custom 
+  tag &lt;customerFmt&gt;.</p>
+-->
+<!-- #EndEditable -->
+<hr noshade color="#000099">
+<table width="100%" border="0" cellpadding="5">
+    <tr>
+        <td height="24"><font color="#000099"><b>standard taglib &#149; implementation
+            of the JSP Standard Tag Library</b></font></td>
+    </tr>
+</table>
+</body>
+<!-- #EndTemplate --></html>
diff --git a/standard-examples/src/main/webapp/format/Demo.jsp b/standard-examples/src/main/webapp/format/Demo.jsp
new file mode 100644
index 0000000..a8763a7
--- /dev/null
+++ b/standard-examples/src/main/webapp/format/Demo.jsp
@@ -0,0 +1,124 @@
+<%@ page import="java.util.Enumeration, java.util.Locale" %>
+<%@ page import="javax.servlet.jsp.jstl.core.Config" %>
+
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
+
+<html>
+<head>
+    <title>JSTL: Formatting/I18N Support -- Demo Example</title>
+</head>
+<body bgcolor="#FFFFFF">
+
+<h3>Demo</h3>
+
+<p>
+    The following bundles exist in the web application: 'Resources', 'Resources_de', 'Resources_fr', 'Resources_it'.
+    'Resources' is the 'base' bundle and contains all messages in English. The italian bundle only holds one message
+    (key=greetingMorning).
+</p>
+<c:if test="${!empty param.locale}">
+    <fmt:setLocale value="${param.locale}" scope="page"/>
+</c:if>
+
+<c:if test="${!empty param.fallback}">
+    <% Config.set(request, Config.FMT_FALLBACK_LOCALE, request.getParameter("fallback")); %>
+</c:if>
+
+<table>
+    <tr>
+        <td><b>Set application-based locale:</b></td>
+        <td>
+            <a href='?locale=fr&fallback=<c:out value="${param.fallback}"/>'>French</a> &#149;
+            <a href='?locale=de&fallback=<c:out value="${param.fallback}"/>'>German</a> &#149;
+            <a href='?locale=it&fallback=<c:out value="${param.fallback}"/>'>Italian</a> &#149;
+            <a href='?locale=es&fallback=<c:out value="${param.fallback}"/>'>Spanish (no bundle)</a> &#149;
+            <a href='?locale=&fallback=<c:out value="${param.fallback}"/>'>None</a>
+        </td>
+    </tr>
+    <tr>
+        <td align="right"><b>Set fallback locale:</b></td>
+        <td>
+            <a href='?locale=<c:out value="${param.locale}"/>&fallback=fr'>French</a> &#149;
+            <a href='?locale=<c:out value="${param.locale}"/>&fallback=de'>German</a> &#149;
+            <a href='?locale=<c:out value="${param.locale}"/>&fallback=it'>Italian</a> &#149;
+            <a href='?locale=<c:out value="${param.locale}"/>&fallback=es'>Spanish (no bundle)</a> &#149;
+            <a href='?locale=<c:out value="${param.locale}"/>&fallback='>None</a>
+        </td>
+</table>
+<p>
+
+    Request parameter "locale": <c:out value="${param.locale}"/><br>
+    <i>(This value is used to set the application based locale for this example)</i>
+
+<p>
+
+    Application based locale: <%=Config.find(pageContext, Config.FMT_LOCALE)%><br>
+    <i>(javax.servlet.jsp.jstl.fmt.locale configuration setting)</i>
+
+<p>
+
+    Browser-Based locales:
+        <%
+  Enumeration enum_ = request.getLocales();
+  while (enum_.hasMoreElements()) {
+    Locale locale = (Locale)enum_.nextElement();
+    out.print(locale);
+    out.print(" ");
+  }
+%>
+    <br>
+    <i>(ServletRequest.getLocales() on the incoming request)</i>
+
+<p>
+
+    Fallback locale: <%=Config.find(pageContext, Config.FMT_FALLBACK_LOCALE)%><br>
+    <i>(javax.servlet.jsp.jstl.fmt.fallbackLocale configuration setting)</i>
+
+<p>
+
+    <jsp:useBean id="now" class="java.util.Date"/>
+<h4>
+    <fmt:formatDate value="${now}" dateStyle="full"/> &#149;
+    <fmt:formatDate value="${now}" type="time"/>
+</h4>
+
+<p>
+
+    <fmt:bundle basename="org.apache.taglibs.standard.examples.i18n.Resources">
+<table cellpadding="5" border="1">
+    <tr>
+        <th align="left">KEY</th>
+        <th align="left">VALUE</th>
+    </tr>
+    <tr>
+        <td>greetingMorning</td>
+        <td><fmt:message key="greetingMorning"/></td>
+    </tr>
+    <tr>
+        <td>greetingEvening</td>
+        <td><fmt:message key="greetingEvening"/></td>
+    </tr>
+    <tr>
+        <td>currentTime</td>
+        <td>
+            <fmt:message key="currentTime">
+                <fmt:param value="${now}"/>
+            </fmt:message>
+        </td>
+    </tr>
+    <tr>
+        <td>serverInfo</td>
+        <td><fmt:message key="serverInfo"/></td>
+    </tr>
+    <tr>
+        <td>undefinedKey</td>
+        <td><fmt:message key="undefinedKey"/></td>
+    </tr>
+</table>
+</fmt:bundle>
+
+<p>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/format/FormatDateTime.jsp b/standard-examples/src/main/webapp/format/FormatDateTime.jsp
new file mode 100644
index 0000000..f1ea9ac
--- /dev/null
+++ b/standard-examples/src/main/webapp/format/FormatDateTime.jsp
@@ -0,0 +1,75 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
+
+<html>
+<head>
+    <title>JSTL: Formatting/I18N Support -- Date and Time Example</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>Formatting dates and times using <tt>en-US</tt> locale</h3>
+
+<jsp:useBean id="now" class="java.util.Date"/>
+<fmt:setLocale value="en-US"/>
+
+<ul>
+    <li> Formatting current date as &quot;GMT&quot;:<br>
+        <fmt:timeZone value="GMT">
+            <fmt:formatDate value="${now}" type="both" dateStyle="full"
+                            timeStyle="full"/>
+        </fmt:timeZone>
+
+    <li> Formatting current date as &quot;GMT+1:00&quot;, and parsing
+        its date and time components:<br>
+        <fmt:timeZone value="GMT+1:00">
+            <fmt:formatDate value="${now}" type="both" dateStyle="full"
+                            timeStyle="full" var="formatted"/>
+            <fmt:parseDate value="${formatted}" type="both" dateStyle="full"
+                           timeStyle="full" timeZone="PST" var="parsedDateTime"/>
+        Parsed date: <fmt:formatDate value="${parsedDateTime}" type="date"
+                                     dateStyle="full"/><br>
+        Parsed time:
+            <fmt:formatDate value="${parsedDateTime}" type="time"
+                            timeStyle="full"/>
+        </fmt:timeZone>
+
+    <li> Parsing SHORT version of current time in different time zones:<br>
+        <fmt:formatDate value="${now}" type="both" timeStyle="short"
+                        var="formatted"/>
+        <fmt:parseDate value="${formatted}" type="both" timeStyle="short"
+                       timeZone="GMT" var="parsed"/>
+        <c:out value="${parsed}"/> (parsed in &quot;GMT&quot;)<br>
+
+        <fmt:parseDate value="${formatted}" type="both" timeStyle="short"
+                       timeZone="GMT+1:00" var="parsed"/>
+        <c:out value="${parsed}"/> (parsed in &quot;GMT+1:00&quot;)<br>
+
+        <fmt:parseDate value="${formatted}" type="both" timeStyle="short"
+                       timeZone="GMT+3:00" var="parsed"/>
+        <c:out value="${parsed}"/> (parsed in &quot;GMT+3:00&quot;)<br>
+
+        <fmt:parseDate value="${formatted}" type="both" timeStyle="short"
+                       timeZone="PST" var="parsed"/>
+        <c:out value="${parsed}"/> (parsed in &quot;PST&quot;)
+
+    <li> Parsing FULL version of current time in different time zones<br>
+        (parse result is independent of specified time zone):<br>
+        <fmt:formatDate value="${now}" type="both" timeStyle="full" var="formatted"/>
+        <fmt:parseDate value="${formatted}" type="both" timeStyle="full"
+                       timeZone="GMT" var="parsed"/>
+        <c:out value="${parsed}"/> (parsed in &quot;GMT&quot;)<br>
+
+        <fmt:parseDate value="${formatted}" type="both" timeStyle="full"
+                       timeZone="GMT+1:00" var="parsed"/>
+        <c:out value="${parsed}"/> (parsed in &quot;GMT+1:00&quot;)<br>
+
+        <fmt:parseDate value="${formatted}" type="both" timeStyle="full"
+                       timeZone="GMT+3:00" var="parsed"/>
+        <c:out value="${parsed}"/> (parsed in &quot;GMT+3:00&quot;)<br>
+
+        <fmt:parseDate value="${formatted}" type="both" timeStyle="full"
+                       timeZone="PST" var="parsed"/>
+        <c:out value="${parsed}"/> (parsed in &quot;PST&quot;)
+</ul>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/format/FormatDateTimeBrowserLocale.jsp b/standard-examples/src/main/webapp/format/FormatDateTimeBrowserLocale.jsp
new file mode 100644
index 0000000..33817e1
--- /dev/null
+++ b/standard-examples/src/main/webapp/format/FormatDateTimeBrowserLocale.jsp
@@ -0,0 +1,74 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
+
+<html>
+<head>
+    <title>JSTL: Formatting/I18N Support -- Date and Time Example</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>Formatting dates and times using browser-based locale</h3>
+
+<jsp:useBean id="now" class="java.util.Date"/>
+
+<ul>
+    <li> Formatting current date as &quot;GMT&quot;:<br>
+        <fmt:timeZone value="GMT">
+            <fmt:formatDate value="${now}" type="both" dateStyle="full"
+                            timeStyle="full"/>
+        </fmt:timeZone>
+
+    <li> Formatting current date as &quot;GMT+1:00&quot;, and parsing
+        its date and time components:<br>
+        <fmt:timeZone value="GMT+1:00">
+            <fmt:formatDate value="${now}" type="both" dateStyle="full"
+                            timeStyle="full" var="formatted"/>
+            <fmt:parseDate value="${formatted}" type="both" dateStyle="full"
+                           timeStyle="full" timeZone="PST" var="parsedDateTime"/>
+        Parsed date: <fmt:formatDate value="${parsedDateTime}" type="date"
+                                     dateStyle="full"/><br>
+        Parsed time:
+            <fmt:formatDate value="${parsedDateTime}" type="time"
+                            timeStyle="full"/>
+        </fmt:timeZone>
+
+    <li> Parsing SHORT version of current time in different time zones:<br>
+        <fmt:formatDate value="${now}" type="both" timeStyle="short"
+                        var="formatted"/>
+        <fmt:parseDate value="${formatted}" type="both" timeStyle="short"
+                       timeZone="GMT" var="parsed"/>
+        <c:out value="${parsed}"/> (parsed in &quot;GMT&quot;)<br>
+
+        <fmt:parseDate value="${formatted}" type="both" timeStyle="short"
+                       timeZone="GMT+1:00" var="parsed"/>
+        <c:out value="${parsed}"/> (parsed in &quot;GMT+1:00&quot;)<br>
+
+        <fmt:parseDate value="${formatted}" type="both" timeStyle="short"
+                       timeZone="GMT+3:00" var="parsed"/>
+        <c:out value="${parsed}"/> (parsed in &quot;GMT+3:00&quot;)<br>
+
+        <fmt:parseDate value="${formatted}" type="both" timeStyle="short"
+                       timeZone="PST" var="parsed"/>
+        <c:out value="${parsed}"/> (parsed in &quot;PST&quot;)
+
+    <li> Parsing FULL version of current time in different time zones<br>
+        (parse result is independent of specified time zone):<br>
+        <fmt:formatDate value="${now}" type="both" timeStyle="full" var="formatted"/>
+        <fmt:parseDate value="${formatted}" type="both" timeStyle="full"
+                       timeZone="GMT" var="parsed"/>
+        <c:out value="${parsed}"/> (parsed in &quot;GMT&quot;)<br>
+
+        <fmt:parseDate value="${formatted}" type="both" timeStyle="full"
+                       timeZone="GMT+1:00" var="parsed"/>
+        <c:out value="${parsed}"/> (parsed in &quot;GMT+1:00&quot;)<br>
+
+        <fmt:parseDate value="${formatted}" type="both" timeStyle="full"
+                       timeZone="GMT+3:00" var="parsed"/>
+        <c:out value="${parsed}"/> (parsed in &quot;GMT+3:00&quot;)<br>
+
+        <fmt:parseDate value="${formatted}" type="both" timeStyle="full"
+                       timeZone="PST" var="parsed"/>
+        <c:out value="${parsed}"/> (parsed in &quot;PST&quot;)
+</ul>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/format/FormatNumber.jsp b/standard-examples/src/main/webapp/format/FormatNumber.jsp
new file mode 100644
index 0000000..fae2a5b
--- /dev/null
+++ b/standard-examples/src/main/webapp/format/FormatNumber.jsp
@@ -0,0 +1,41 @@
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
+
+<html>
+<head>
+    <title>JSTL: Formatting/I18N Support -- Number, Currency, and Percent
+        Example
+    </title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>Formatting numbers, currencies, and percentages using <tt>en-US</tt>
+    locale
+</h3>
+
+<fmt:setLocale value="en-US"/>
+
+<ul>
+    <li> Format &quot;123456789&quot; as number:<br>
+        <fmt:formatNumber value="123456789"/>
+
+    <li> Format &quot;123456789&quot; as percent:<br>
+        <fmt:formatNumber type="percent">123456789</fmt:formatNumber>
+
+    <li> Format &quot;12345.67&quot; as currency:<br>
+        <fmt:formatNumber value="12345.67" type="currency"/>
+
+    <li> Format &quot;12345.67&quot; as currency, with
+        grouping turned off, the maximum number of digits in the integer portion
+        limited to 4, and no fraction portion:<br>
+        <fmt:formatNumber value="12345.67" type="currency"
+                          groupingUsed="false" maxIntegerDigits="4"
+                          maxFractionDigits="0"/>
+
+    <li> Format &quot;12345.67&quot; as currency:<br>
+        <fmt:formatNumber value="12345.67" type="currency"/><br>
+        then parse its integer portion only and output the result:<br>
+        <fmt:formatNumber value="12345.67" type="currency" var="cur"/>
+        <fmt:parseNumber value="${cur}" type="currency" integerOnly="true"/>
+</ul>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/format/FormatNumberBrowserLocale.jsp b/standard-examples/src/main/webapp/format/FormatNumberBrowserLocale.jsp
new file mode 100644
index 0000000..3325ea8
--- /dev/null
+++ b/standard-examples/src/main/webapp/format/FormatNumberBrowserLocale.jsp
@@ -0,0 +1,52 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
+
+<html>
+<head>
+    <title>JSTL: Formatting/I18N Support -- Number, Currency, and Percent
+        Example
+    </title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>Formatting numbers, currencies, and percentages using browser-based
+    locale
+</h3>
+
+<c:catch var="ex">
+    <ul>
+        <li> Format &quot;123456789&quot; as number:<br>
+                <fmt:formatNumber value="123456789"/>
+
+        <li> Format &quot;123456789&quot; as percent:<br>
+            <fmt:formatNumber type="percent">123456789</fmt:formatNumber>
+
+        <li> Format &quot;12345.67&quot; as currency:<br>
+                <fmt:formatNumber value="12345.67" type="currency"/>
+
+        <li> Format &quot;12345.67&quot; as currency, with
+            grouping turned off, the maximum number of digits in the integer portion
+            limited to 4, and no fraction portion:<br>
+                <fmt:formatNumber value="12345.67" type="currency"
+                                  groupingUsed="false" maxIntegerDigits="4"
+                                  maxFractionDigits="0"/>
+
+        <li> Format &quot;12345.67&quot; as currency:<br>
+                <fmt:formatNumber value="12345.67" type="currency"/><br>
+            then parse its integer portion only and output the result:<br>
+                <fmt:formatNumber value="12345.67" type="currency" var="cur"/>
+                <fmt:parseNumber value="${cur}" type="currency" integerOnly="true"/>
+    </ul>
+</c:catch>
+
+<c:if test="${not empty ex}">
+    <font color="#FF0000">
+        <br> The following error has occurred:<br><br>
+        <c:out value="${ex}" escapeXml='false'/> <br>
+        <c:if test="${ex.rootCause.class.name == 'java.text.ParseException' && pageContext.response.locale == 'de_DE'}">
+            <br> This is due to a known bug in java.text.NumberFormat (Bugtraq bugid: 4709840).
+        </c:if>
+    </font>
+</c:if>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/format/GermanLocale.jsp b/standard-examples/src/main/webapp/format/GermanLocale.jsp
new file mode 100644
index 0000000..47ff5f4
--- /dev/null
+++ b/standard-examples/src/main/webapp/format/GermanLocale.jsp
@@ -0,0 +1,18 @@
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
+
+<html>
+<head>
+    <title>JSTL: Formatting/I18N Support -- German Locale Example</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>German Locale</h3>
+
+<fmt:setLocale value="de"/>
+<fmt:bundle basename="org.apache.taglibs.standard.examples.i18n.Resources">
+    <fmt:message>
+        greetingMorning
+    </fmt:message>
+</fmt:bundle>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/format/GermanUmlautCorrect.jsp b/standard-examples/src/main/webapp/format/GermanUmlautCorrect.jsp
new file mode 100644
index 0000000..58c9985
--- /dev/null
+++ b/standard-examples/src/main/webapp/format/GermanUmlautCorrect.jsp
@@ -0,0 +1,23 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
+
+<html>
+<head>
+    <title>JSTL: Formatting/I18N Support -- Request Encoding Example</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>German Umlaut characters decoded correctly:</h3>
+
+<fmt:requestEncoding value="UTF-8"/>
+
+<ul>
+    <li>a umlaut:
+        <c:out value="${param.a_umlaut}"/>
+    <li>o umlaut:
+        <c:out value="${param.o_umlaut}"/>
+    <li>u umlaut:
+        <c:out value="${param.u_umlaut}"/>
+</ul>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/format/GermanUmlautIncorrect.jsp b/standard-examples/src/main/webapp/format/GermanUmlautIncorrect.jsp
new file mode 100644
index 0000000..686f665
--- /dev/null
+++ b/standard-examples/src/main/webapp/format/GermanUmlautIncorrect.jsp
@@ -0,0 +1,21 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
+
+<html>
+<head>
+    <title>JSTL: Formatting/I18N Support -- Request Encoding Example</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>German Umlaut characters decoded incorrectly:</h3>
+
+<ul>
+    <li>a umlaut:
+        <c:out value="${param.a_umlaut}"/>
+    <li>o umlaut:
+        <c:out value="${param.o_umlaut}"/>
+    <li>u umlaut:
+        <c:out value="${param.u_umlaut}"/>
+</ul>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/format/ItalianLocale.jsp b/standard-examples/src/main/webapp/format/ItalianLocale.jsp
new file mode 100644
index 0000000..c59c02f
--- /dev/null
+++ b/standard-examples/src/main/webapp/format/ItalianLocale.jsp
@@ -0,0 +1,15 @@
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
+
+<html>
+<head>
+    <title>JSTL: Formatting/I18N Support -- Italian Locale Example</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>Italian Locale</h3>
+
+<fmt:setLocale value="it_IT"/>
+<fmt:setBundle basename="org.apache.taglibs.standard.examples.i18n.Resources" var="itBundle" scope="page"/>
+<fmt:message key="greetingMorning" bundle="${itBundle}"/>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/format/MissingResourceBundle.jsp b/standard-examples/src/main/webapp/format/MissingResourceBundle.jsp
new file mode 100644
index 0000000..b7e9f64
--- /dev/null
+++ b/standard-examples/src/main/webapp/format/MissingResourceBundle.jsp
@@ -0,0 +1,22 @@
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
+
+<html>
+<head>
+    <title>JSTL: Formatting/I18N Support -- Missing Resource Bundle Example</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>Missing Resource Bundle</h3>
+
+<ul>
+    <li> Implicit collaboration with &lt;bundle&gt; (via ancestry chain):<br>
+        <fmt:bundle basename="org.apache.taglibs.standard.examples.i18n.MissingResources">
+            <fmt:message key="greetingMorning"/>
+        </fmt:bundle>
+
+    <li> Explicit collaboration with &lt;bundle&gt; (via <tt>var</tt> attribute):<br>
+        <fmt:setBundle basename="org.apache.taglibs.standard.examples.i18n.MissingResources" var="enBundle"/>
+        <fmt:message key="greetingEvening" bundle="${enBundle}"/>
+</ul>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/format/ParametricReplacement.jsp b/standard-examples/src/main/webapp/format/ParametricReplacement.jsp
new file mode 100644
index 0000000..20feef9
--- /dev/null
+++ b/standard-examples/src/main/webapp/format/ParametricReplacement.jsp
@@ -0,0 +1,66 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
+
+<html>
+<head>
+    <title>JSTL: Formatting/I18N Support -- Parametric Replacement Example</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>Parametric Replacement</h3>
+
+<jsp:useBean id="now" class="java.util.Date"/>
+
+<fmt:setLocale value="de"/>
+<fmt:setBundle basename="org.apache.taglibs.standard.examples.i18n.Resources" var="deBundle"/>
+
+<fmt:formatDate value="${now}" type="both" var="currentDateString"/>
+<fmt:parseDate value="${currentDateString}" type="both" var="currentDate"/>
+
+<ul>
+    <li> Using single &lt;param&gt; with 'value' evaluating to String:<br>
+        <fmt:message key="currentTime" bundle="${deBundle}">
+            <fmt:param value="${currentDateString}"/>
+        </fmt:message>
+
+    <li> Using single &lt;param&gt; with 'value' evaluating to <tt>java.util.Date</tt>:<br>
+        <fmt:message key="currentTime" bundle="${deBundle}">
+            <fmt:param value="${currentDate}"/>
+        </fmt:message>
+
+    <li> Using single &lt;param&gt; with body:<br>
+        <fmt:message key="currentTime" bundle="${deBundle}">
+        <fmt:param>
+            <fmt:formatDate value="${now}" type="both"/>
+        </fmt:param>
+        </fmt:message>
+
+    <li> Using multiple parameters:<br>
+        <fmt:message key="serverInfo" bundle="${deBundle}">
+        <c:forEach var="arg" items="${serverInfoArgs}">
+            <fmt:param value="${arg}"/>
+        </c:forEach>
+        </fmt:message>
+</ul>
+
+<ul>
+    <fmt:setLocale value="es"/>
+    <fmt:setBundle basename="org.apache.taglibs.standard.examples.i18n.Resources" var="esBundle"/>
+    <li>Locale set to Spanish yields a locale-less localization context. Formatting still done
+        using the preferred locale:<br>
+        <fmt:message key="currentTime" bundle="${esBundle}">
+            <fmt:param value="${currentDate}"/>
+        </fmt:message>
+    </li>
+
+    <fmt:setLocale value="en"/>
+    <fmt:setBundle basename="org.apache.taglibs.standard.examples.i18n.Resources" var="enBundle"/>
+    <li>Locale set to English yields a locale-less localization context. Formatting still done
+        using the preferred locale:<br>
+        <fmt:message key="currentTime" bundle="${esBundle}">
+            <fmt:param value="${currentDate}"/>
+        </fmt:message>
+    </li>
+</ul>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/format/PrefixAttribute.jsp b/standard-examples/src/main/webapp/format/PrefixAttribute.jsp
new file mode 100644
index 0000000..0d12fdb
--- /dev/null
+++ b/standard-examples/src/main/webapp/format/PrefixAttribute.jsp
@@ -0,0 +1,16 @@
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
+
+<html>
+<head>
+    <title>JSTL: Formatting/I18N Support -- Prefix Attribute Example</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>Prefix Attribute</h3>
+
+<fmt:setLocale value="de"/>
+<fmt:bundle basename="org.apache.taglibs.standard.examples.i18n.Resources" prefix="com.acme.labels.">
+    <fmt:message key="cancel"/>
+</fmt:bundle>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/format/RequestEncoding.jsp b/standard-examples/src/main/webapp/format/RequestEncoding.jsp
new file mode 100644
index 0000000..fa1a463
--- /dev/null
+++ b/standard-examples/src/main/webapp/format/RequestEncoding.jsp
@@ -0,0 +1,20 @@
+<html>
+<head>
+    <title>JSTL: Formatting/I18N Support -- Request Encoding Example</title>
+</head>
+<body bgcolor="#FFFFFF">
+This page contains two links, and sends German Umlaut characters as request
+parameter values to each of the linked pages.<br>
+Only one of the linked pages decodes and displays the request parameter values
+correctly:
+
+<ul>
+    <li><a href="GermanUmlautIncorrect.jsp?a_umlaut=%C3%A4&o_umlaut=%C3%B6&u_umlaut=%C3%BC">German Umlaut characters
+        decoded incorrectly</a>
+    <li><a href="GermanUmlautCorrect.jsp?a_umlaut=%C3%A4&o_umlaut=%C3%B6&u_umlaut=%C3%BC">German Umlaut characters
+        decoded correctly</a>
+</ul>
+
+</body>
+</html>
+
diff --git a/standard-examples/src/main/webapp/format/UndefinedKey.jsp b/standard-examples/src/main/webapp/format/UndefinedKey.jsp
new file mode 100644
index 0000000..8b182d7
--- /dev/null
+++ b/standard-examples/src/main/webapp/format/UndefinedKey.jsp
@@ -0,0 +1,15 @@
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
+
+<html>
+<head>
+    <title>JSTL: Formatting/I18N Support -- Undefined Key Example</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>Undefined Key</h3>
+
+<fmt:setLocale value="it"/>
+<fmt:setBundle basename="org.apache.taglibs.standard.examples.i18n.Resources" var="itBundle"/>
+<fmt:message key="invalidKey" bundle="${itBundle}"/>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/format/index.html b/standard-examples/src/main/webapp/format/index.html
new file mode 100644
index 0000000..bc7723f
--- /dev/null
+++ b/standard-examples/src/main/webapp/format/index.html
@@ -0,0 +1,115 @@
+<html><!-- #BeginTemplate "/Templates/ExamplesTemplate.dwt" -->
+<head>
+    <!-- #BeginEditable "doctitle" -->
+    <title>JSTL: I18N-Capable Formatting Tags Examples</title>
+    <!-- #EndEditable -->
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+    <link rel="stylesheet" href="../global.css" type="text/css">
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+<table width="100%" border="0" cellpadding="5">
+    <tr>
+        <td height="0"><font color="#000099"><b>standard taglib &#149; implementation
+            of the JSP Standard Tag Library</b></font></td>
+    </tr>
+    <tr>
+        <td bgcolor="#CCCCFF"><font size="-1">Examples &nbsp;&nbsp;&nbsp;&nbsp;<a href="../index.html">Introduction</a>
+            &#149; <a href="../elsupport/index.html">General Purpose</a>
+            &#149; <a href="../conditionals/index.html">Conditionals</a>
+            &#149; <a href="../iterators/index.html">Iterators</a> &#149;
+            <a href="../import/index.jsp">Import</a> &#149; <a href="index.html">I18N
+                & Formatting</a> &#149; <a href="../xml/index.html">XML</a>
+            &#149; <a href="../sql/index.jsp">SQL</a> &#149; <a href="../functions/index.html">Functions</a>
+            &#149; <a href="../tlv/index.html">TLV</a>
+        </font></td>
+    </tr>
+</table>
+<!-- #BeginEditable "body" -->
+<h2>I18N-Capable Formatting Tags Examples</h2>
+
+<h3>Demo <a href="../ShowSource.jsp?filename=/format/Demo.jsp"><img src="../images/code.gif" width="24" height="24"
+                                                                    border="0"></a>
+    <a href="Demo.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a></h3>
+Overview demo where the locale to be applied to the page may be changed dynamically.<br>
+
+<h3>German&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/format/GermanLocale.jsp"><img src="../images/code.gif"
+                                                                                          width="24" height="24"
+                                                                                          border="0"></a>
+    <a href="GermanLocale.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Using resource bundle for German locale. <br>
+
+<h3>Italian&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/format/ItalianLocale.jsp"><img src="../images/code.gif"
+                                                                                            width="24" height="24"
+                                                                                            border="0"></a>
+    <a href="ItalianLocale.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Using resource bundle for Italian locale. <br>
+
+<h3>Missing Resource Bundle&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/format/MissingResourceBundle.jsp"><img
+        src="../images/code.gif" width="24" height="24" border="0"></a>
+    <a href="MissingResourceBundle.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Trying to access a resource bundle that does not exist. <br>
+
+<h3>Undefined Key&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/format/UndefinedKey.jsp"><img
+        src="../images/code.gif" width="24" height="24" border="0"></a>
+    <a href="UndefinedKey.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Looking up an undefined key in a resource bundle. <br>
+
+<h3>Parametric Replacement&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/format/ParametricReplacement.jsp"><img
+        src="../images/code.gif" width="24" height="24" border="0"></a>
+    <a href="ParametricReplacement.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Parametric replacement examples. <br>
+
+<h3>Prefix&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/format/PrefixAttribute.jsp"><img src="../images/code.gif"
+                                                                                             width="24" height="24"
+                                                                                             border="0"></a>
+    <a href="PrefixAttribute.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Prepending prefix to message key. <br>
+
+<h3>Date&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/format/FormatDateTime.jsp"><img src="../images/code.gif"
+                                                                                          width="24" height="24"
+                                                                                          border="0"></a>
+    <a href="FormatDateTime.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Formatting dates and times using <tt>en-US</tt> locale. <br>
+
+<h3>Date&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/format/FormatDateTimeBrowserLocale.jsp"><img
+        src="../images/code.gif" width="24" height="24" border="0"></a>
+    <a href="FormatDateTimeBrowserLocale.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Formatting dates and times using browser-based locale. <br>
+
+<h3>Number&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/format/FormatNumber.jsp"><img src="../images/code.gif"
+                                                                                          width="24" height="24"
+                                                                                          border="0"></a>
+    <a href="FormatNumber.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Formatting numbers using <tt>en-US</tt> locale. <br>
+
+<h3>Number&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/format/FormatNumberBrowserLocale.jsp"><img
+        src="../images/code.gif" width="24" height="24" border="0"></a>
+    <a href="FormatNumberBrowserLocale.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Formatting numbers using browser-based locale. <br>
+
+<h3>Request Parameter Decoding&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/format/RequestEncoding.jsp"><img
+        src="../images/code.gif" width="24" height="24" border="0"></a>
+    <a href="RequestEncoding.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Decoding and displaying request parameters using the appropriate charset. <br>
+<!-- #EndEditable -->
+<hr noshade color="#000099">
+<table width="100%" border="0" cellpadding="5">
+    <tr>
+        <td height="24"><font color="#000099"><b>standard taglib &#149; implementation
+            of the JSP Standard Tag Library</b></font></td>
+    </tr>
+</table>
+</body>
+<!-- #EndTemplate --></html>
diff --git a/standard-examples/src/main/webapp/functions/EscapeXml.jsp b/standard-examples/src/main/webapp/functions/EscapeXml.jsp
new file mode 100644
index 0000000..8c85fb9
--- /dev/null
+++ b/standard-examples/src/main/webapp/functions/EscapeXml.jsp
@@ -0,0 +1,41 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
+
+<html>
+<head>
+    <title>JSTL Functions &#149; Escape Xml</title>
+</head>
+<body bgcolor="#FFFFFF">
+
+<h2>Escape XML</h2>
+
+<c:set var="s1" value="There is a castle on a cloud"/>
+
+<h4>fn:escapeXml</h4>
+<table cellpadding="5" border="1">
+    <tr>
+        <th align="left">Input String</th>
+        <th>Result</th>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>${fn:escapeXml(s1)}</td>
+    </tr>
+    <tr>
+        <td>
+            <foo>body of foo</foo>
+        </td>
+        <td>${fn:escapeXml("<foo>body of foo</foo>")}</td>
+    </tr>
+    <tr>
+        <td>null</td>
+        <td>&nbsp;${fn:escapeXml(undefined)}</td>
+    </tr>
+    <tr>
+        <td>empty string</td>
+        <td>&nbsp;${fn:escapeXml("")}</td>
+    </tr>
+</table>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/functions/Length.jsp b/standard-examples/src/main/webapp/functions/Length.jsp
new file mode 100644
index 0000000..1c21788
--- /dev/null
+++ b/standard-examples/src/main/webapp/functions/Length.jsp
@@ -0,0 +1,37 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
+
+<html>
+<head>
+    <title>JSTL Functions &#149; Length</title>
+</head>
+<body bgcolor="#FFFFFF">
+
+<c:set var="s1" value="There is a castle on a cloud"/>
+
+<h4>fn:length</h4>
+<table cellpadding="5" border="1">
+    <tr>
+        <th align="left">Input String</th>
+        <th>Result</th>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>${fn:length(s1)}</td>
+    </tr>
+    <tr>
+        <td>${customers}</td>
+        <td>${fn:length(customers)}</td>
+    </tr>
+    <tr>
+        <td>null</td>
+        <td>${fn:length(undefined)}</td>
+    </tr>
+    <tr>
+        <td>empty string</td>
+        <td>${fn:length("")}</td>
+    </tr>
+</table>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/functions/Replace.jsp b/standard-examples/src/main/webapp/functions/Replace.jsp
new file mode 100644
index 0000000..ea6e160
--- /dev/null
+++ b/standard-examples/src/main/webapp/functions/Replace.jsp
@@ -0,0 +1,55 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
+
+<html>
+<head>
+    <title>JSTL Functions &#149; Replace</title>
+</head>
+<body bgcolor="#FFFFFF">
+
+<h2>Replace</h2>
+
+<c:set var="s1" value="There is a castle on a cloud"/>
+<c:set var="s2" value="one - two - three - one - two - three - one - two - three"/>
+<h4>fn:replace</h4>
+<table cellpadding="5" border="1">
+    <tr>
+        <th align="left">Input String</th>
+        <th>Substring Before</th>
+        <th>Substring After</th>
+        <th>Result</th>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>e</td>
+        <td>*</td>
+        <td>${fn:replace(s1, "e", "*")}</td>
+    </tr>
+    <tr>
+        <td>${s2}</td>
+        <td>-</td>
+        <td>&#149;</td>
+        <td>${fn:replace(s2, "-", "&#149;")}</td>
+    </tr>
+    <tr>
+        <td>${s2}</td>
+        <td>two</td>
+        <td>empty</td>
+        <td>${fn:replace(s2, "two", "")}</td>
+    </tr>
+    <tr>
+        <td>${s2}</td>
+        <td>empty string</td>
+        <td>one</td>
+        <td>${fn:replace(s2, "", "one")}</td>
+    </tr>
+    <tr>
+        <td>null</td>
+        <td>one</td>
+        <td>two</td>
+        <td>&nbsp;${fn:replace(undefined, "one", "two")}</td>
+    </tr>
+</table>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/functions/SplitJoin.jsp b/standard-examples/src/main/webapp/functions/SplitJoin.jsp
new file mode 100644
index 0000000..0e1810c
--- /dev/null
+++ b/standard-examples/src/main/webapp/functions/SplitJoin.jsp
@@ -0,0 +1,87 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
+<%@ taglib prefix="ex" uri="/jstl-examples-taglib" %>
+
+<html>
+<head>
+    <title>JSTL Functions &#149; Split/Join</title>
+</head>
+<body bgcolor="#FFFFFF">
+
+<h2>Split/Join</h2>
+
+<c:set var="s1" value="There is a castle on a cloud"/>
+<c:set var="s3" value="one|two|three|four"/>
+<c:set var="s5" value="one|two+three*four"/>
+
+<h4>fn:split</h4>
+<table cellpadding="5" border="1">
+    <tr>
+        <th align="left">Input String</th>
+        <th>Delimiters</th>
+        <th>Result</th>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>empty string</td>
+        <td>${ex:display(fn:split(s1, ""))}</td>
+    </tr>
+    <tr>
+        <td>${s3}</td>
+        <td>|</td>
+        <td>${ex:display(fn:split(s3, "|"))}</td>
+    </tr>
+    <tr>
+        <td>${s3}</td>
+        <td>+</td>
+        <td>${ex:display(fn:split(s3, "+"))}</td>
+    </tr>
+    <tr>
+        <td>${s5}</td>
+        <td>|+</td>
+        <td>${ex:display(fn:split(s5, "|+"))}</td>
+    </tr>
+    <tr>
+        <td>empty string</td>
+        <td>empty string</td>
+        <td>&nbsp;${ex:display(fn:split("", ""))}</td>
+    </tr>
+</table>
+
+<c:set var="a1" value='${fn:split(s1, " ")}'/>
+<h4>fn:join</h4>
+<table cellpadding="5" border="1">
+    <tr>
+        <th align="left">Input Array</th>
+        <th>Separator</th>
+        <th>Result</th>
+    </tr>
+    <tr>
+        <td>${ex:display(a1)}</td>
+        <td> +</td>
+        <td>${fn:join(a1, " + ")}</td>
+    </tr>
+    <tr>
+        <td>${ex:display(a1)}</td>
+        <td>&lt;sep></td>
+        <td>${fn:join(a1, " &lt;sep> ")}</td>
+    </tr>
+    <tr>
+        <td>${ex:display(a1)}</td>
+        <td>empty string</td>
+        <td>${fn:join(a1, "")}</td>
+    </tr>
+    <tr>
+        <td>${ex:display(a1)}</td>
+        <td>null</td>
+        <td>${fn:join(a1, null)}</td>
+    </tr>
+    <tr>
+        <td>null</td>
+        <td>empty string</td>
+        <td>&nbsp;${fn:join(null, "")}</td>
+    </tr>
+</table>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/functions/StringCapitalization.jsp b/standard-examples/src/main/webapp/functions/StringCapitalization.jsp
new file mode 100644
index 0000000..77a7f97
--- /dev/null
+++ b/standard-examples/src/main/webapp/functions/StringCapitalization.jsp
@@ -0,0 +1,55 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
+
+<html>
+<head>
+    <title>JSTL Functions &#149; String Capitalization</title>
+</head>
+<body bgcolor="#FFFFFF">
+
+<h2>String Capitalization</h2>
+
+<c:set var="s1" value="There is a CASTLE on a CLOUD"/>
+
+<h4>fn:toLowerCase</h4>
+<table cellpadding="5" border="1">
+    <tr>
+        <th align="left">Input String</th>
+        <th>Result</th>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>${fn:toLowerCase(s1)}</td>
+    </tr>
+    <tr>
+        <td>null</td>
+        <td>&nbsp;${fn:toLowerCase(undefined)}</td>
+    </tr>
+    <tr>
+        <td>empty</td>
+        <td>&nbsp;${fn:toLowerCase("")}</td>
+    </tr>
+</table>
+
+<h4>fn:toUpperCase</h4>
+<table cellpadding="5" border="1">
+    <tr>
+        <th align="left">Input String</th>
+        <th>Result</th>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>${fn:toUpperCase(s1)}</td>
+    </tr>
+    <tr>
+        <td>null</td>
+        <td>&nbsp;${fn:toUpperCase(undefined)}</td>
+    </tr>
+    <tr>
+        <td>empty</td>
+        <td>&nbsp;${fn:toUpperCase("")}</td>
+    </tr>
+</table>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/functions/StringSubset.jsp b/standard-examples/src/main/webapp/functions/StringSubset.jsp
new file mode 100644
index 0000000..1cf5909
--- /dev/null
+++ b/standard-examples/src/main/webapp/functions/StringSubset.jsp
@@ -0,0 +1,183 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
+
+<html>
+<head>
+    <title>JSTL Functions &#149; String Subset</title>
+</head>
+<body bgcolor="#FFFFFF">
+
+<h2>String Subset</h2>
+
+<c:set var="zip" value="75843-5643"/>
+<c:set var="s1" value="There is a castle on a cloud"/>
+
+<h4>fn:substring</h4>
+<table cellpadding="5" border="1">
+    <tr>
+        <th align="left">Input String</th>
+        <th>beginIndex</th>
+        <th>endIndex</th>
+        <th>Result</th>
+    </tr>
+    <tr>
+        <td>${zip}</td>
+        <td>6</td>
+        <td>-1</td>
+        <td>P.O. Box: ${fn:substring(zip, 6, -1)}</td>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>11</td>
+        <td>17</td>
+        <td>${fn:substring(s1, 11, 17)}</td>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>12</td>
+        <td>5</td>
+        <td>&nbsp;${fn:substring(s1, 12, 5)}</td>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>23</td>
+        <td>-1</td>
+        <td>${fn:substring(s1, 23, -1)}</td>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>23</td>
+        <td>999</td>
+        <td>${fn:substring(s1, 23, 999)}</td>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>-1</td>
+        <td>-1</td>
+        <td>${fn:substring(s1, -1, -1)}</td>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>99</td>
+        <td>12</td>
+        <td>&nbsp;${fn:substring(s1, 99, 12)}</td>
+    </tr>
+    <tr>
+        <td>empty string</td>
+        <td>2</td>
+        <td>6</td>
+        <td>&nbsp;${fn:substring("", 2, 6)}</td>
+    </tr>
+    <tr>
+        <td>null</td>
+        <td>2</td>
+        <td>6</td>
+        <td>&nbsp;${fn:substring(undefined, 2, 6)}</td>
+    </tr>
+</table>
+
+<h4>fn:substringAfter</h4>
+<table cellpadding="5" border="1">
+    <tr>
+        <th align="left">Input String</th>
+        <th>substring</th>
+        <th>Result</th>
+    </tr>
+    <tr>
+        <td>${zip}</td>
+        <td>-</td>
+        <td>P.O. Box: ${fn:substringAfter(zip, "-")}</td>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>There</td>
+        <td>${fn:substringAfter(s1, "There")}</td>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>on a</td>
+        <td>${fn:substringAfter(s1, "on a")}</td>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>not found</td>
+        <td>&nbsp;${fn:substringAfter(s1, "not found")}</td>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>null</td>
+        <td>${fn:substringAfter(s1, undefined)}</td>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>empty string</td>
+        <td>${fn:substringAfter(s1, "")}</td>
+    </tr>
+    <tr>
+        <td>empty string</td>
+        <td>castle</td>
+        <td>&nbsp;${fn:substringAfter("", "castle")}</td>
+    </tr>
+    <tr>
+        <td>null</td>
+        <td>castle</td>
+        <td>&nbsp;${fn:substringAfter(undefined, "castle")}</td>
+    </tr>
+    <tr>
+        <td>null</td>
+        <td>empty string</td>
+        <td>&nbsp;${fn:substringAfter(undefined, "")}</td>
+    </tr>
+</table>
+
+<h4>fn:substringBefore</h4>
+<table cellpadding="5" border="1">
+    <tr>
+        <th align="left">Input String</th>
+        <th>substring</th>
+        <th>Result</th>
+    </tr>
+    <tr>
+        <td>${zip}</td>
+        <td>-</td>
+        <td>Zip without P.O. Box: ${fn:substringBefore(zip, "-")}</td>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>on a</td>
+        <td>${fn:substringBefore(s1, "on a")}</td>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>castle</td>
+        <td>${fn:substringBefore(s1, "castle")}</td>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>null</td>
+        <td>&nbsp;${fn:substringBefore(s1, undefined)}</td>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>empty string</td>
+        <td>&nbsp;${fn:substringBefore(s1, "")}</td>
+    </tr>
+    <tr>
+        <td>empty string</td>
+        <td>castle</td>
+        <td>&nbsp;${fn:substringBefore("", "castle")}</td>
+    </tr>
+    <tr>
+        <td>null</td>
+        <td>castle</td>
+        <td>&nbsp;${fn:substringBefore(undefined, "castle")}</td>
+    </tr>
+    <tr>
+        <td>null</td>
+        <td>empty string</td>
+        <td>&nbsp;${fn:substringBefore(undefined, "")}</td>
+    </tr>
+</table>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/functions/SubstringContained.jsp b/standard-examples/src/main/webapp/functions/SubstringContained.jsp
new file mode 100644
index 0000000..b8a7c80
--- /dev/null
+++ b/standard-examples/src/main/webapp/functions/SubstringContained.jsp
@@ -0,0 +1,227 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
+
+<html>
+<head>
+    <title>JSTL Functions &#149; Substring Contained in String</title>
+</head>
+<body bgcolor="#FFFFFF">
+
+<h2>Substring Contained in String</h2>
+
+<c:set var="s1" value="There is a castle on a cloud"/>
+
+<h4>fn:contains</h4>
+<table cellpadding="5" border="1">
+    <tr>
+        <th align="left">Input String</th>
+        <th>Substring</th>
+        <th>Result</th>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>castle</td>
+        <td>${fn:contains(s1, "castle")}</td>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>CASTLE</td>
+        <td>${fn:contains(s1, "CASTLE")}</td>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>null</td>
+        <td>${fn:contains(s1, undefined)}</td>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>empty string</td>
+        <td>${fn:contains(s1, "")}</td>
+    </tr>
+    <tr>
+        <td>null</td>
+        <td>castle</td>
+        <td>${fn:contains(undefined, "castle")}</td>
+    </tr>
+    <tr>
+        <td>null</td>
+        <td>empty string</td>
+        <td>${fn:contains(undefined, "")}</td>
+    </tr>
+</table>
+
+<h4>fn:containsIgnoreCase</h4>
+<table cellpadding="5" border="1">
+    <tr>
+        <th align="left">Input String</th>
+        <th>Substring</th>
+        <th>Result</th>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>castle</td>
+        <td>${fn:containsIgnoreCase(s1, "castle")}</td>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>CASTLE</td>
+        <td>${fn:containsIgnoreCase(s1, "CASTLE")}</td>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>CaStLe</td>
+        <td>${fn:containsIgnoreCase(s1, "CaStLe")}</td>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>null</td>
+        <td>${fn:containsIgnoreCase(s1, undefined)}</td>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>empty string</td>
+        <td>${fn:containsIgnoreCase(s1, "")}</td>
+    </tr>
+    <tr>
+        <td>null</td>
+        <td>castle</td>
+        <td>${fn:containsIgnoreCase(undefined, "castle")}</td>
+    </tr>
+    <tr>
+        <td>null</td>
+        <td>empty string</td>
+        <td>${fn:containsIgnoreCase(undefined, "")}</td>
+    </tr>
+</table>
+
+<h4>fn:startsWith</h4>
+<table cellpadding="5" border="1">
+    <tr>
+        <th align="left">Input String</th>
+        <th>Substring</th>
+        <th>Result</th>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>castle</td>
+        <td>${fn:startsWith(s1, "castle")}</td>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>There is</td>
+        <td>${fn:startsWith(s1, "There is")}</td>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>null</td>
+        <td>${fn:startsWith(s1, undefined)}</td>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>empty string</td>
+        <td>${fn:startsWith(s1, "")}</td>
+    </tr>
+    <tr>
+        <td>null</td>
+        <td>castle</td>
+        <td>${fn:startsWith(undefined, "castle")}</td>
+    </tr>
+    <tr>
+        <td>null</td>
+        <td>empty string</td>
+        <td>${fn:startsWith(undefined, "")}</td>
+    </tr>
+</table>
+
+<h4>fn:endsWith</h4>
+<table cellpadding="5" border="1">
+    <tr>
+        <th align="left">Input String</th>
+        <th>Substring</th>
+        <th>Result</th>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>castle</td>
+        <td>${fn:endsWith(s1, "castle")}</td>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>cloud</td>
+        <td>${fn:endsWith(s1, "cloud")}</td>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>null</td>
+        <td>${fn:endsWith(s1, undefined)}</td>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>empty string</td>
+        <td>${fn:endsWith(s1, "")}</td>
+    </tr>
+    <tr>
+        <td>null</td>
+        <td>castle</td>
+        <td>${fn:endsWith(undefined, "castle")}</td>
+    </tr>
+    <tr>
+        <td>null</td>
+        <td>empty string</td>
+        <td>${fn:endsWith(undefined, "")}</td>
+    </tr>
+</table>
+
+<h4>fn:indexOf</h4>
+<table cellpadding="5" border="1">
+    <tr>
+        <th align="left">Input String</th>
+        <th>Substring</th>
+        <th>Result</th>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>castle</td>
+        <td>${fn:indexOf(s1, "castle")}</td>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>cloud</td>
+        <td>${fn:indexOf(s1, "cloud")}</td>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>null</td>
+        <td>${fn:indexOf(s1, undefined)}</td>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>empty string</td>
+        <td>${fn:indexOf(s1, "")}</td>
+    </tr>
+    <tr>
+        <td>null</td>
+        <td>castle</td>
+        <td>${fn:indexOf(undefined, "castle")}</td>
+    </tr>
+    <tr>
+        <td>null</td>
+        <td>empty string</td>
+        <td>${fn:indexOf(undefined, "")}</td>
+    </tr>
+    <c:set var="text" value="Products List (2003/05/01)"/>
+    <tr>
+        <td colspan="3">Display text in between brackets</td>
+    </tr>
+    <tr>
+        <td>${text}</td>
+        <td>'(' and ')'</td>
+        <td>${fn:substring(text, fn:indexOf(text, '(')+1, fn:indexOf(text, ')'))}</td>
+    </tr>
+</table>
+
+<p>
+
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/functions/Trim.jsp b/standard-examples/src/main/webapp/functions/Trim.jsp
new file mode 100644
index 0000000..e06dbf3
--- /dev/null
+++ b/standard-examples/src/main/webapp/functions/Trim.jsp
@@ -0,0 +1,56 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
+
+<html>
+<head>
+    <title>JSTL Functions &#149; Trim</title>
+</head>
+<body bgcolor="#FFFFFF">
+
+<h2>Trim</h2>
+
+<c:set var="s1" value="There is a castle on a cloud"/>
+<c:set var="custId" value=" 123 "/>
+
+<h4>fn:trim</h4>
+<table cellpadding="5" border="1">
+    <tr>
+        <th align="left">Input String</th>
+        <th>Result</th>
+    </tr>
+    <tr>
+        <td>
+            <pre>${custId} (without trim)</pre>
+        </td>
+        <td><c:url value="http://acme.com/cust"><c:param name="custId" value="${custId}"/></c:url></td>
+    </tr>
+    <tr>
+        <td>
+            <pre>${custId} (with trim)</pre>
+        </td>
+        <td><c:url value="http://acme.com/cust"><c:param name="custId" value="${fn:trim(custId)}"/></c:url></td>
+    </tr>
+    <tr>
+        <td>${s1}</td>
+        <td>${fn:trim(s1)}</td>
+    </tr>
+    <tr>
+        <td>
+            <pre>    3 spaces before and after   </pre>
+        </td>
+        <td>
+            <pre>${fn:trim("    3 spaces before and after   ")}</pre>
+        </td>
+    </tr>
+    <tr>
+        <td>null</td>
+        <td>&nbsp;${fn:trim(undefined)}</td>
+    </tr>
+    <tr>
+        <td>empty string</td>
+        <td>&nbsp;${fn:trim("")}</td>
+    </tr>
+</table>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/functions/index.html b/standard-examples/src/main/webapp/functions/index.html
new file mode 100644
index 0000000..da3d8f2
--- /dev/null
+++ b/standard-examples/src/main/webapp/functions/index.html
@@ -0,0 +1,95 @@
+<html><!-- #BeginTemplate "/Templates/ExamplesTemplate.dwt" -->
+<head>
+    <!-- #BeginEditable "doctitle" -->
+    <title>JSTL: Functions Tags Examples</title>
+    <!-- #EndEditable -->
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+    <link rel="stylesheet" href="../global.css" type="text/css">
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+<table width="100%" border="0" cellpadding="5">
+    <tr>
+        <td height="0"><font color="#000099"><b>standard taglib &#149; implementation
+            of the JSP Standard Tag Library</b></font></td>
+    </tr>
+    <tr>
+        <td bgcolor="#CCCCFF"><font size="-1">Examples &nbsp;&nbsp;&nbsp;&nbsp;<a href="../index.html">Introduction</a>
+            &#149; <a href="../elsupport/index.html">General Purpose</a>
+            &#149; <a href="../conditionals/index.html">Conditionals</a>
+            &#149; <a href="../iterators/index.html">Iterators</a> &#149;
+            <a href="../import/index.jsp">Import</a> &#149; <a href="../format/index.html">I18N
+                & Formatting</a> &#149; <a href="../xml/index.html">XML</a>
+            &#149; <a href="../sql/index.jsp">SQL</a> &#149; <a href="index.html">Functions</a>
+            &#149; <a href="../tlv/index.html">TLV</a>
+        </td>
+    </tr>
+</table>
+<!-- #BeginEditable "body" -->
+<h2>Functions Examples</h2>
+
+<h3>Length of a Collection or a String&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/functions/Length.jsp"><img
+        src="../images/code.gif" width="24" height="24" border="0"></a>
+    <a href="Length.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+<code>length</code><br>
+
+<h3>String Capitalization &nbsp;&nbsp; <a
+        href="../ShowSource.jsp?filename=/functions/StringCapitalization.jsp"><img src="../images/code.gif" width="24"
+                                                                                   height="24" border="0"></a>
+    <a href="StringCapitalization.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+<code>toUpperCase toLowerCase</code><br>
+
+<h3>String Subset &nbsp;&nbsp; <a
+        href="../ShowSource.jsp?filename=/functions/StringSubset.jsp"><img src="../images/code.gif" width="24"
+                                                                           height="24" border="0"></a>
+    <a href="StringSubset.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+<code>substring substringAfter substringBefore</code><br>
+
+<h3>Trim &nbsp;&nbsp; <a
+        href="../ShowSource.jsp?filename=/functions/Trim.jsp"><img src="../images/code.gif" width="24" height="24"
+                                                                   border="0"></a>
+    <a href="Trim.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+<code>trim</code><br>
+
+<h3>Replace &nbsp;&nbsp; <a
+        href="../ShowSource.jsp?filename=/functions/Replace.jsp"><img src="../images/code.gif" width="24" height="24"
+                                                                      border="0"></a>
+    <a href="Replace.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+<code>replace</code><br>
+
+<h3>Substring Contained in String &nbsp;&nbsp; <a
+        href="../ShowSource.jsp?filename=/functions/SubstringContained.jsp"><img src="../images/code.gif" width="24"
+                                                                                 height="24" border="0"></a>
+    <a href="SubstringContained.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+<code>contains containsIgnoreCase startsWith endsWith indexOf</code><br>
+
+<h3>Split/Join &nbsp;&nbsp; <a
+        href="../ShowSource.jsp?filename=/functions/SplitJoin.jsp"><img src="../images/code.gif" width="24" height="24"
+                                                                        border="0"></a>
+    <a href="SplitJoin.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+<code>split join</code><br>
+
+<h3>EscapeXml &nbsp;&nbsp; <a
+        href="../ShowSource.jsp?filename=/functions/EscapeXml.jsp"><img src="../images/code.gif" width="24" height="24"
+                                                                        border="0"></a>
+    <a href="EscapeXml.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+<code>escapeXml</code><br>
+
+<!-- #EndEditable -->
+<hr noshade color="#000099">
+<table width="100%" border="0" cellpadding="5">
+    <tr>
+        <td height="24"><font color="#000099"><b>standard taglib &#149; implementation
+            of the JSP Standard Tag Library</b></font></td>
+    </tr>
+</table>
+</body>
+<!-- #EndTemplate --></html>
diff --git a/standard-examples/src/main/webapp/global.css b/standard-examples/src/main/webapp/global.css
new file mode 100644
index 0000000..3c907cf
--- /dev/null
+++ b/standard-examples/src/main/webapp/global.css
@@ -0,0 +1,15 @@
+body {
+    font-family: Arial, Helvetica, sans-serif
+}
+
+h1 {
+    color: #000099
+}
+
+h2 {
+    color: #000099
+}
+
+h3 {
+    color: #000099
+}
diff --git a/standard-examples/src/main/webapp/images/code.gif b/standard-examples/src/main/webapp/images/code.gif
new file mode 100644
index 0000000..93af2cd
--- /dev/null
+++ b/standard-examples/src/main/webapp/images/code.gif
Binary files differ
diff --git a/standard-examples/src/main/webapp/images/execute.gif b/standard-examples/src/main/webapp/images/execute.gif
new file mode 100644
index 0000000..f64d70f
--- /dev/null
+++ b/standard-examples/src/main/webapp/images/execute.gif
Binary files differ
diff --git a/standard-examples/src/main/webapp/images/return.gif b/standard-examples/src/main/webapp/images/return.gif
new file mode 100644
index 0000000..af4f68f
--- /dev/null
+++ b/standard-examples/src/main/webapp/images/return.gif
Binary files differ
diff --git a/standard-examples/src/main/webapp/import/Absolute.jsp b/standard-examples/src/main/webapp/import/Absolute.jsp
new file mode 100644
index 0000000..a846c59
--- /dev/null
+++ b/standard-examples/src/main/webapp/import/Absolute.jsp
@@ -0,0 +1,19 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="ex" uri="/jstl-examples-taglib" %>
+
+<html>
+<head>
+    <title>JSTL: I/O Support -- Absolute URL Example</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>Absolute URL</h3>
+
+<h4>CNN's RSS XML feed:</h4>
+<blockquote>
+    <ex:escapeHtml>
+        <c:import url="http://www.cnn.com/cnn.rss"/>
+    </ex:escapeHtml>
+</blockquote>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/import/AbsoluteFtp.jsp b/standard-examples/src/main/webapp/import/AbsoluteFtp.jsp
new file mode 100644
index 0000000..a366295
--- /dev/null
+++ b/standard-examples/src/main/webapp/import/AbsoluteFtp.jsp
@@ -0,0 +1,18 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+<html>
+<head>
+    <title>JSTL: I/O Support -- Absolute URL Example (non-HTTP)</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>Absolute URL (non-HTTP)</h3>
+
+<h4>Free Software Foundation's FTP site:</h4>
+<blockquote>
+ <pre>
+  <c:import url="ftp://ftp.gnu.org/README"/>
+ </pre>
+</blockquote>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/import/ContextRelative.jsp b/standard-examples/src/main/webapp/import/ContextRelative.jsp
new file mode 100644
index 0000000..db342a9
--- /dev/null
+++ b/standard-examples/src/main/webapp/import/ContextRelative.jsp
@@ -0,0 +1,20 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+<html>
+<head>
+    <title>JSTL: I/O Support -- Context-relative URL example</title>
+</head>
+<body bgcolor="#FFFFFF">
+Assuming you have the "examples" webapp installed, here's a file from it...
+
+URL:<c:out value="${_contextUrl}"/><br>
+Name:<c:out value="${_contextName}"/>
+
+<blockquote>
+ <pre>
+  <c:import url="${_contextUrl}" context="${_contextName}"/>
+ </pre>
+</blockquote>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/import/Encode.jsp b/standard-examples/src/main/webapp/import/Encode.jsp
new file mode 100644
index 0000000..3e84393
--- /dev/null
+++ b/standard-examples/src/main/webapp/import/Encode.jsp
@@ -0,0 +1,47 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+<html>
+<head>
+    <title>JSTL: I/O Support -- URL Encoding Example</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>URL Encoding</h3>
+
+<h4>&lt;c:url&gt;</h4>
+
+Disable cookies in your browser to see URL rewriting.
+
+<table border="1" bgcolor="#dddddd">
+    <tr>
+        <td>"base", param=ABC</td>
+        <td><c:url value="base"><c:param name="param" value="ABC"/></c:url></td>
+    </tr>
+    <tr>
+        <td>"base", param=123</td>
+        <td><c:url value="base"><c:param name="param" value="123"/></c:url></td>
+    </tr>
+    <tr>
+        <td>"base", param=&</td>
+        <td><c:url value="base"><c:param name="param" value="&"/></c:url></td>
+    </tr>
+    <tr>
+        <td>"base", param="JSTL is fun"</td>
+        <td><c:url value="base"><c:param name="param" value="JSTL is fun"/></c:url></td>
+    </tr>
+    <tr>
+        <td>"base", param="ü@foo-bar"</td>
+        <td><c:url value="base"><c:param name="param" value="ü@foo-bar"/></c:url></td>
+    </tr>
+    <tr>
+        <td>"base", météo="légère pluie @ Saint-Denis-de-la-Réunion"</td>
+        <td><c:url value="base"><c:param name="météo" value="légère pluie @ Saint-Denis-de-la-Réunion"/></c:url></td>
+    </tr>
+</table>
+
+<p>
+    Compose the url, then use it in an HTML anchor tag:
+    <c:url var="url" value="Encode.jsp">
+        <c:param name="arg1" value="value of arg1"/>
+        <c:param name="arg2" value="value of arg2"/>
+    </c:url>
+    <a href='<c:out value="${url}"/>'>Link back to this page (<c:out value="${url}"/>)</a>
\ No newline at end of file
diff --git a/standard-examples/src/main/webapp/import/EncodeContextRelative.jsp b/standard-examples/src/main/webapp/import/EncodeContextRelative.jsp
new file mode 100644
index 0000000..4737915
--- /dev/null
+++ b/standard-examples/src/main/webapp/import/EncodeContextRelative.jsp
@@ -0,0 +1,20 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+<html>
+<head>
+    <title>JSTL: I/O Support -- URL Encoding Example</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>URL Encoding</h3>
+
+<h4>&lt;urlEncode&gt;</h4>
+
+<c:url var="param1" value="${_paramValue1}"/>
+<c:url var="param2" value="${_paramValue2}"/>
+<c:url var="param3" value="${_paramValue3}"/>
+<c:out value="${_contextUrl}"/>
+<c:import url="${_contextUrl}" context="${_contextName}">
+    <c:param name="${_paramName1}" value="${param1}"/>
+    <c:param name="${_paramName2}" value="${param2}"/>
+    <c:param name="${_paramName3}" value="${param3}"/>
+</c:import> 
diff --git a/standard-examples/src/main/webapp/import/ExposeString.jsp b/standard-examples/src/main/webapp/import/ExposeString.jsp
new file mode 100644
index 0000000..6996870
--- /dev/null
+++ b/standard-examples/src/main/webapp/import/ExposeString.jsp
@@ -0,0 +1,20 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+<html>
+<head>
+    <title>JSTL: I/O Support -- String exposure</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>String exposure</h3>
+
+<c:import var="cnn" url="http://www.cnn.com/cnn.rss"/>
+
+<h4>CNN's RSS XML feed:</h4>
+<blockquote>
+ <pre>
+  <c:out value="${cnn}"/>
+ </pre>
+</blockquote>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/import/ExposeStringRelative.jsp b/standard-examples/src/main/webapp/import/ExposeStringRelative.jsp
new file mode 100644
index 0000000..aada929
--- /dev/null
+++ b/standard-examples/src/main/webapp/import/ExposeStringRelative.jsp
@@ -0,0 +1,17 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+<html>
+<head>
+    <title>JSTL: I/O Support -- String exposure for relative URL</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>String exposure for relative URL</h3>
+
+<h4>Escaped (raw HTML)</h4>
+
+<c:import var="cnn" url="LocalSample.jsp"/>
+
+<c:out value="${cnn}"/>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/import/LocalSample.jsp b/standard-examples/src/main/webapp/import/LocalSample.jsp
new file mode 100644
index 0000000..9eb6de5
--- /dev/null
+++ b/standard-examples/src/main/webapp/import/LocalSample.jsp
@@ -0,0 +1,14 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+<html>
+<head>
+    <title>JSTL: I/O Support -- Simple static example to be included
+        in other pages</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>Local example target page</h3>
+
+<h4>&#149; This output comes from LocalSample.jsp &#149; </h4>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/import/Param.jsp b/standard-examples/src/main/webapp/import/Param.jsp
new file mode 100644
index 0000000..9ab6cb5
--- /dev/null
+++ b/standard-examples/src/main/webapp/import/Param.jsp
@@ -0,0 +1,13 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+<%--
+  --   These URLs likely don't exist, but the error that gets reported 
+  --   back should help you see how <param> modifies the URL.
+  --
+  --%>
+
+<c:import url="http://localhost/foo" charEncoding="foo">
+    <c:param name="a" value="b"/>
+    <c:param name="c" value="d"/>
+    <c:param name="equals" value="="/>                      <%-- encoded --%>
+</c:import>
diff --git a/standard-examples/src/main/webapp/import/Relative.jsp b/standard-examples/src/main/webapp/import/Relative.jsp
new file mode 100644
index 0000000..a46e579
--- /dev/null
+++ b/standard-examples/src/main/webapp/import/Relative.jsp
@@ -0,0 +1,18 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+<html>
+<head>
+    <title>JSTL: I/O Support -- Relative URL Example</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>Relative URL</h3>
+
+<h4>Import from current directory:</h4>
+<blockquote>
+ <pre>
+  <c:import url="LocalSample.jsp"/>
+ </pre>
+</blockquote>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/import/StartSlash.jsp b/standard-examples/src/main/webapp/import/StartSlash.jsp
new file mode 100644
index 0000000..f7932c1
--- /dev/null
+++ b/standard-examples/src/main/webapp/import/StartSlash.jsp
@@ -0,0 +1,16 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+<html>
+<head>
+    <title>JSTL: I/O Support -- Malformed URL example</title>
+</head>
+<body bgcolor="#FFFFFF">
+
+<blockquote>
+ <pre>
+  <c:import url="jsp/simpletag/foo.jsp" context="/examples"/>
+ </pre>
+</blockquote>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/import/index.html b/standard-examples/src/main/webapp/import/index.html
new file mode 100644
index 0000000..ca2dec1
--- /dev/null
+++ b/standard-examples/src/main/webapp/import/index.html
@@ -0,0 +1,124 @@
+<html><!-- #BeginTemplate "/Templates/ExamplesTemplate.dwt" -->
+<head>
+    <!-- #BeginEditable "doctitle" -->
+    <title>JSTL: Import Tags Examples</title>
+    <!-- #EndEditable -->
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+    <link rel="stylesheet" href="../global.css" type="text/css">
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+<table width="100%" border="0" cellpadding="5">
+    <tr>
+        <td height="0"><font color="#000099"><b>standard taglib &#149; implementation
+            of the JSP Standard Tag Library</b></font></td>
+    </tr>
+    <tr>
+        <td bgcolor="#CCCCFF"><font size="-1">Examples &nbsp;&nbsp;&nbsp;&nbsp;<a href="../index.html">Introduction</a>
+            &#149; <a href="../elsupport/index.html">General Purpose</a>
+            &#149; <a href="../conditionals/index.html">Conditionals</a>
+            &#149; <a href="../iterators/index.html">Iterators</a> &#149;
+            <a href="index.jsp">Import</a> &#149; <a href="../format/index.html">I18N
+                & Formatting</a> &#149; <a href="../xml/index.html">XML</a>
+            &#149; <a href="../sql/index.jsp">SQL</a> &#149; <a href="../functions/index.html">Functions</a>
+            &#149; <a href="../tlv/index.html">TLV</a>
+        </font></td>
+    </tr>
+</table>
+<!-- #BeginEditable "body" -->
+<h2>Import Tags Examples</h2>
+
+<p>If you are using a Proxy server, you will need to set the following System
+    Properties when starting the VM:</p>
+<pre>
+    http.proxyHost
+    http.proxyPort
+    ftp.proxyHost
+    ftp.proxyPort
+</pre>
+<br>
+
+<h3>Absolute&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/import/Absolute.jsp"><img src="../images/code.gif"
+                                                                                        width="24" height="24"
+                                                                                        border="0"></a>
+    <a href="Absolute.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Using an Absolute URL to import a resource. <br>
+
+<h3>Relative&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/import/Relative.jsp"><img src="../images/code.gif"
+                                                                                        width="24" height="24"
+                                                                                        border="0"></a>
+    <a href="Relative.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Using a Relative URL to import a resource. <br>
+
+<h3>Context Relative&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/import/ContextRelative.jsp"><img
+        src="../images/code.gif" width="24" height="24" border="0"></a>
+    <a href="ContextRelative.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Importing a resource relative to a foreign context. <br>
+
+<h3>Absolute (FTP)&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/import/AbsoluteFtp.jsp"><img
+        src="../images/code.gif" width="24" height="24" border="0"></a>
+    <a href="AbsoluteFtp.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Using an Absolute URL to import a resource using a different protocol other than
+HTTP. <br>
+
+<h3>Encode&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/import/Encode.jsp"><img src="../images/code.gif" width="24"
+                                                                                    height="24" border="0"></a>
+    <a href="Encode.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+URL encoding examples. <br>
+
+<h3>Encode Context Relative&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/import/EncodeContextRelative.jsp"><img
+        src="../images/code.gif" width="24" height="24" border="0"></a>
+    <a href="EncodeContextRelative.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+URL encoding examples using a relative context and nested param tags. <br>
+
+<h3>Encode Query String&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/import/EncodeQueryString.jsp"><img
+        src="../images/code.gif" width="24" height="24" border="0"></a>
+    <a href="EncodeQueryString.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+URL encoding examples using a relative context and query string. <br>
+
+<h3>String Exposure Absolute&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/import/ExposeString.jsp"><img
+        src="../images/code.gif" width="24" height="24" border="0"></a>
+    <a href="ExposeString.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Exposing the content of the resource as a String Object. <br>
+
+<h3>String Exposure Relative&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/import/ExposeStringRelative.jsp"><img
+        src="../images/code.gif" width="24" height="24" border="0"></a>
+    <a href="ExposeStringRelative.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Exposing the content of a relative URL's resource as a String Object. <br>
+
+<h3>Param&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/import/Param.jsp"><img src="../images/code.gif" width="24"
+                                                                                  height="24" border="0"></a>
+    <a href="Param.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Using
+<param>
+element to specify request parameters. Also demonstrating how request
+parameters can be URL encoded (default). (NOTE: Returns error page by default.)
+<br>
+
+<h3>Malformed URL&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/import/StartSlash.jsp"><img src="../images/code.gif"
+                                                                                               width="24" height="24"
+                                                                                               border="0"></a>
+    <a href="StartSlash.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+A relative URL must start with a "/" in a foreign context. (NOTE: This example
+will result in a ServletException describing the error condition). <br>
+<!-- #EndEditable -->
+<hr noshade color="#000099">
+<table width="100%" border="0" cellpadding="5">
+    <tr>
+        <td height="24"><font color="#000099"><b>standard taglib &#149; implementation
+            of the JSP Standard Tag Library</b></font></td>
+    </tr>
+</table>
+</body>
+<!-- #EndTemplate --></html>
diff --git a/standard-examples/src/main/webapp/import/index.jsp b/standard-examples/src/main/webapp/import/index.jsp
new file mode 100644
index 0000000..77085ed
--- /dev/null
+++ b/standard-examples/src/main/webapp/import/index.jsp
@@ -0,0 +1,99 @@
+<html><!-- #BeginTemplate "/Templates/ExamplesTemplate.dwt" -->
+<head>
+    <!-- #BeginEditable "doctitle" -->
+    <title>JSTL: Import Tags Examples</title>
+    <!-- #EndEditable -->
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+    <link rel="stylesheet" href="../global.css" type="text/css">
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+<table width="100%" border="0" cellpadding="5">
+    <tr>
+        <td height="0"><font color="#000099"><b>standard taglib &#149; implementation
+            of the JSP Standard Tag Library &#149; </b></font><font color="#003399"><a
+                href="mailto:taglibs-user@jakarta.apache.org"><b>support</b></a>
+            &nbsp;&nbsp;<b><a href="mailto:taglibs-dev@jakarta.apache.org">development</a>&nbsp;&nbsp;
+                <a href="mailto:jsr-52-comments@jcp.org">comments to JSR-52</a></b></font></td>
+    </tr>
+    <tr>
+        <td bgcolor="#CCCCFF"><font size="-1">Examples &nbsp;&nbsp;&nbsp;&nbsp;<a href="../index.html">Introduction</a>
+            &#149; <a href="../elsupport/index.html">General Purpose</a>
+            &#149; <a href="../conditionals/index.html">Conditionals</a>
+            &#149; <a href="../iterators/index.html">Iterators</a> &#149;
+            <a href="index.jsp">Import</a> &#149; <a href="../format/index.html">I18N
+                & Formatting</a> &#149; <a href="../xml/index.html">XML</a>
+            &#149; <a href="../sql/index.jsp">SQL</a> &#149; <a href="../functions/index.html">Functions</a>
+            &#149; <a href="../tlv/index.html">TLV</a> &#149; <a href="../functions/index.html"></a><a
+                    href="../misc/index.html">Misc.</a></font></td>
+    </tr>
+</table>
+<!-- #BeginEditable "body" -->
+<%@ include file="links.html" %>
+<h2>Context Relative Examples</h2>
+
+<p>For the context relative examples you will need to supply an available relative
+    context name and url before executing the tags.</p>
+
+<form name="myform" action="session.jsp" method="get">
+    <table width="90%" border="0" cellspacing="0" cellpadding="0">
+        <tr>
+            <td>Context</td>
+            <td>
+                <input type="text" size="40" name="contextName" value="/examples">
+            </td>
+        </tr>
+        <tr>
+            <td>Url</td>
+            <td>
+                <input type="text" size="40" name="contextUrl" value="/jsp/simpletag/foo.jsp">
+            </td>
+        </tr>
+        <tr>
+            <td>Param name:</td>
+            <td>
+                <input type="text" size="40" name="paramName1">
+            </td>
+            <td>Param value:</td>
+            <td>
+                <input type="text" size="40" name="paramValue1">
+            </td>
+        </tr>
+        <tr>
+            <td>Param name:</td>
+            <td>
+                <input type="text" size="40" name="paramName2">
+            </td>
+            <td>Param value:</td>
+            <td>
+                <input type="text" size="40" name="paramValue2">
+            </td>
+        </tr>
+        <tr>
+            <td>Param name:</td>
+            <td>
+                <input type="text" size="40" name="paramName3">
+            </td>
+            <td>Param value:</td>
+            <td>
+                <input type="text" size="40" name="paramValue3">
+            </td>
+        </tr>
+    </table>
+    <p>
+        <input type="submit" name="Submit" value="Submit">
+    </p>
+</form>
+<!-- #EndEditable -->
+<hr noshade color="#000099">
+<table width="100%" border="0" cellpadding="5">
+    <tr>
+        <td height="24"><font color="#000099"><b>standard taglib &#149; implementation
+            of the JSP Standard Tag Library &#149; </b></font><font color="#003399"><a
+                href="mailto:taglibs-user@jakarta.apache.org"><b>support</b></a>
+            &nbsp;&nbsp;<b><a href="mailto:taglibs-dev@jakarta.apache.org">development</a>&nbsp;&nbsp;
+                <a href="mailto:jsr-52-comments@jcp.org">comments to JSR-52</a></b></font></td>
+    </tr>
+</table>
+</body>
+<!-- #EndTemplate --></html>
diff --git a/standard-examples/src/main/webapp/import/links.html b/standard-examples/src/main/webapp/import/links.html
new file mode 100644
index 0000000..6c30a1e
--- /dev/null
+++ b/standard-examples/src/main/webapp/import/links.html
@@ -0,0 +1,57 @@
+<h2>Import Tags Examples</h2>
+<p>If you are using a Proxy server, you will need to set the following System
+    Properties when starting the VM:</p>
+<pre>
+    http.proxyHost
+    http.proxyPort
+    ftp.proxyHost
+    ftp.proxyPort
+</pre>
+<br>
+<h3>Absolute&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/import/Absolute.jsp"><img src="../images/code.gif"
+                                                                                        width="24" height="24"
+                                                                                        border="0"></a>
+    <a href="Absolute.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Using an Absolute URL to import a resource. <br>
+<h3>Relative&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/import/Relative.jsp"><img src="../images/code.gif"
+                                                                                        width="24" height="24"
+                                                                                        border="0"></a>
+    <a href="Relative.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Using a Relative URL to import a resource. <br>
+<h3>Absolute (FTP)&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/import/AbsoluteFtp.jsp"><img
+        src="../images/code.gif" width="24" height="24" border="0"></a>
+    <a href="AbsoluteFtp.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Using an Absolute URL to import a resource using a different protocol other than
+HTTP. <br>
+<h3>Encode&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/import/Encode.jsp"><img src="../images/code.gif" width="24"
+                                                                                    height="24" border="0"></a>
+    <a href="Encode.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+URL encoding examples. <br>
+<h3>String Exposure Absolute&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/import/ExposeString.jsp"><img
+        src="../images/code.gif" width="24" height="24" border="0"></a>
+    <a href="ExposeString.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Exposing the content of the resource as a String Object. <br>
+<h3>String Exposure Relative&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/import/ExposeStringRelative.jsp"><img
+        src="../images/code.gif" width="24" height="24" border="0"></a>
+    <a href="ExposeStringRelative.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Exposing the content of a relative URL's resource as a String Object. <br>
+<h3>Param&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/import/Param.jsp"><img src="../images/code.gif" width="24"
+                                                                                  height="24" border="0"></a>
+    <a href="Param.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Using &lt;param&gt; element to specify request parameters. Also demonstrating how request
+parameters can be URL encoded (default). (NOTE: Returns error page that shows
+how request parameters are encoded) <br>
+<h3>Malformed URL&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/import/StartSlash.jsp"><img src="../images/code.gif"
+                                                                                               width="24" height="24"
+                                                                                               border="0"></a>
+    <a href="StartSlash.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+A relative URL must start with a "/" in a foreign context. (NOTE: This example
+will result in a ServletException describing the error condition). <br>
diff --git a/standard-examples/src/main/webapp/import/relativeLinks.html b/standard-examples/src/main/webapp/import/relativeLinks.html
new file mode 100644
index 0000000..b8a1a58
--- /dev/null
+++ b/standard-examples/src/main/webapp/import/relativeLinks.html
@@ -0,0 +1,12 @@
+<h2>Import Tags Context Relative Examples</h2>
+
+<h3>Context Relative&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/import/ContextRelative.jsp"><img
+        src="../images/code.gif" width="24" height="24" border="0"></a>
+    <a href="ContextRelative.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Importing a resource relative to a foreign context. <br>
+<h3>Encode Context Relative&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/import/EncodeContextRelative.jsp"><img
+        src="../images/code.gif" width="24" height="24" border="0"></a>
+    <a href="EncodeContextRelative.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+URL encoding examples using a relative context and nested param tags. <br>
diff --git a/standard-examples/src/main/webapp/import/session.jsp b/standard-examples/src/main/webapp/import/session.jsp
new file mode 100644
index 0000000..3e85132
--- /dev/null
+++ b/standard-examples/src/main/webapp/import/session.jsp
@@ -0,0 +1,33 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
+
+<html>
+<head>
+    <title>Jakarta DBTAGS Taglib Example</title>
+</head>
+<body bgcolor="white">
+
+<%
+    String _param = request.getParameter("contextName");
+    session.setAttribute("_contextName", _param);
+    _param = request.getParameter("contextUrl");
+    session.setAttribute("_contextUrl", _param);
+
+    _param = request.getParameter("paramValue1");
+    session.setAttribute("_paramValue1", _param);
+    _param = request.getParameter("paramValue2");
+    session.setAttribute("_paramValue2", _param);
+    _param = request.getParameter("paramValue3");
+    session.setAttribute("_paramValue3", _param);
+
+    _param = request.getParameter("paramName1");
+    session.setAttribute("_paramName1", _param);
+    _param = request.getParameter("paramName2");
+    session.setAttribute("_paramName2", _param);
+    _param = request.getParameter("paramName3");
+    session.setAttribute("_paramName3", _param);
+%>
+
+<%@ include file="relativeLinks.html" %>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/index.html b/standard-examples/src/main/webapp/index.html
new file mode 100644
index 0000000..7bc9f74
--- /dev/null
+++ b/standard-examples/src/main/webapp/index.html
@@ -0,0 +1,124 @@
+<html><!-- #BeginTemplate "/Templates/ExamplesTemplate.dwt" -->
+<head>
+    <!-- #BeginEditable "doctitle" -->
+    <title>JSTL: Examples Web Application</title>
+    <!-- #EndEditable -->
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+    <link rel="stylesheet" href="global.css" type="text/css">
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+<table width="100%" border="0" cellpadding="5">
+    <tr>
+        <td height="0"><font color="#000099"><b>standard taglib &#149; implementation
+            of the JSP Standard Tag Library</b></font></td>
+    </tr>
+    <tr>
+        <td bgcolor="#CCCCFF"><font size="-1">Examples &nbsp;&nbsp;&nbsp;&nbsp;<a href="index.html">Introduction</a>
+            &#149; <a href="elsupport/index.html">General Purpose</a>
+            &#149; <a href="conditionals/index.html">Conditionals</a>
+            &#149; <a href="iterators/index.html">Iterators</a> &#149;
+            <a href="import/index.jsp">Import</a> &#149; <a href="format/index.html">I18N
+                & Formatting</a> &#149; <a href="xml/index.html">XML</a>
+            &#149; <a href="sql/index.jsp">SQL</a> &#149; <a href="functions/index.html">Functions</a>
+            &#149; <a href="tlv/index.html">TLV</a> 
+        </font></td>
+    </tr>
+</table>
+<!-- #BeginEditable "body" -->
+<h2>Welcome to the standard-examples web application!</h2>
+
+<p>This web application includes a variety of sample JSP pages that showcase the
+    Tomcat Standard tags.
+
+<h3>Examples</h3>
+
+<p>The JSTL examples have been divided in the following categories:</p>
+<ul>
+    <li><a href="elsupport/index.html">General Purpose Tags</a></li>
+    <li><a href="conditionals/index.html">Conditional Tags</a></li>
+    <li><a href="iterators/index.html">Iterator Tags</a></li>
+    <li><a href="import/index.jsp">Import Tags</a></li>
+    <li><a href="format/index.html">I18N &amp; Formatting Tags</a></li>
+    <li><a href="xml/index.html">XML Tags</a></li>
+    <li><a href="sql/index.jsp">SQL Tags</a></li>
+    <li><a href="functions/index.html">Functions</a></li>
+    <li><a href="tlv/index.html">Tag Library Validators</a></li>
+</ul>
+<p>The navigation bar at the top of each index page provides quick navigation
+    to each set of example pages.</p>
+
+<p>When navigating the examples, the following icons will allow you to look at
+    the source code as well as execute the example JSP page.</p>
+<table border="1" align="center" cellpadding="10">
+    <tr>
+        <td width="30"><img src="images/code.gif"></td>
+        <td>Look at the source code of the example JSP page</td>
+    </tr>
+    <tr>
+        <td width="30"><img src="images/execute.gif"></td>
+        <td>Execute the example JSP page</td>
+    </tr>
+</table>
+<h3>Infrastructure</h3>
+
+<p>The source code for the JSTL examples includes class <code>startup.Init</code>
+    to initilialize the objects used in the examples. This allows us to mimic the
+    environment that would normally be used within an MVC architecture: the Controller
+    invokes the business logic, saves the objects required by the web application
+    into JSP scoped attributes (usually request), and then invokes the proper JSP
+    page. For the sake of this &quot;examples&quot; webapp, all objects are saved
+    in the application scope.</p>
+
+<p>The application attributes are:</p>
+<ul>
+    <li><code>customers</code><br>
+        A collection of Customer objects
+    </li>
+    <li><code>intArray</code><br>
+        An array of int's
+    </li>
+    <li><code>stringArray</code><br>
+        An array of Strings
+    </li>
+    <li><code>numberMap</code><br>
+        A Map instance associating Integer objects with their Spanish names
+    </li>
+    <li><code>enumeration</code><br>
+        An enumeration on numberMap from above.<br>
+    </li>
+</ul>
+<p>The classes of interest that hold the information manipulated by the JSP pages
+    are:</p>
+<ul>
+    <li>Customer
+        <ul>
+            <li>int key</li>
+            <li>String lastName</li>
+            <li>String firstName</li>
+            <li>Date birthDate</li>
+            <li>Address address<br>
+                <br>
+            </li>
+        </ul>
+    </li>
+    <li>Address
+        <ul>
+            <li>String line1</li>
+            <li>String line2</li>
+            <li>String city</li>
+            <li>String state</li>
+            <li>String country</li>
+        </ul>
+    </li>
+</ul>
+<!-- #EndEditable -->
+<hr noshade color="#000099">
+<table width="100%" border="0" cellpadding="5">
+    <tr>
+        <td height="24"><font color="#000099"><b>standard taglib &#149; implementation
+            of the JSP Standard Tag Library</b></font></td>
+    </tr>
+</table>
+</body>
+<!-- #EndTemplate --></html>
diff --git a/standard-examples/src/main/webapp/iterators/BoundaryCases.jsp b/standard-examples/src/main/webapp/iterators/BoundaryCases.jsp
new file mode 100644
index 0000000..807f203
--- /dev/null
+++ b/standard-examples/src/main/webapp/iterators/BoundaryCases.jsp
@@ -0,0 +1,60 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+<html>
+<head>
+    <title>JSTL: Miscellaneous -- Various Iterator Tests Example</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>Various tests for Iterator tags</h3>
+
+<h4>Iteration with only end specified (no items): end="10"</h4>
+(illegal)
+<%--
+<c:forEach var="i" end="10">
+  <c:out value="${i}"/> &#149; 
+</c:forEach>
+--%>
+
+<h4>Iteration with only begin specified (no items): begin="10"</h4>
+(illegal)
+<%--
+<c:forEach var="i" begin="10">
+  ${i} &#149; 
+</c:forEach>
+--%>
+
+<h4>Iteration with only begin specified (with items): begin="2"</h4>
+
+<c:forEach var="i" items="${customers}" begin="2" varStatus="status">
+    index: ${status.index} &#149;
+    count: ${status.count} &#149;
+    item: ${i}<br>
+</c:forEach>
+
+<h4>Iteration with only end specified (with items): end="1"</h4>
+
+<c:forEach var="i" items="${customers}" end="1" varStatus="status">
+    index: ${status.index} &#149;
+    count: ${status.count} &#149;
+    item:  ${i}><br>
+</c:forEach>
+
+<h4>Iteration with begin > end</h4>
+<c:catch var="ex">
+    <c:forEach var="i" items="${customers}" begin="3" end="1" varStatus="status">
+        index: ${status.index} &#149;
+        count: ${status.count} &#149;
+        item:  ${i}<br>
+    </c:forEach>
+    <c:forTokens var="i" items="one,two,three,four,five" delims="," begin="3" end="1" varStatus="status">
+        index: ${status.index} &#149;
+        count: ${status.count} &#149;
+        item:  ${i}<br>
+    </c:forTokens>
+</c:catch>
+<c:if test="${ex != null}">
+    Exception: ${ex}
+</c:if>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/iterators/Collaboration.jsp b/standard-examples/src/main/webapp/iterators/Collaboration.jsp
new file mode 100644
index 0000000..1f4eac5
--- /dev/null
+++ b/standard-examples/src/main/webapp/iterators/Collaboration.jsp
@@ -0,0 +1,44 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="ex" uri="/jstl-examples-taglib" %>
+
+<html>
+<head>
+    <title>JSTL: Iterator Support 2-- Collaboration Example</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>Collaboration</h3>
+
+<h4>Without custom tags</h4>
+
+<table>
+    <c:forEach var="customer" items="${customers}" varStatus="status">
+        <tr>
+            <jsp:useBean type="javax.servlet.jsp.jstl.core.LoopTagStatus" id="status"/>
+            <c:choose>
+            <c:when test="<%= status.getCount() % 2 == 1 %>">
+            <td bgcolor="#FFFF66">
+                </c:when>
+                <c:otherwise>
+            <td bgcolor="#99FFCC">
+                </c:otherwise>
+                </c:choose>
+                <c:out value="${customer}"/></td>
+        </tr>
+    </c:forEach>
+</table>
+
+<h4>Using custom tags &lt;even&gt; and &lt;odd&gt;</h4>
+
+<table>
+    <c:forEach var="customer" items="${customers}">
+        <tr>
+            <ex:odd>
+            <td bgcolor="#FFFF66"></ex:odd>
+            <ex:even>
+            <td bgcolor="#99FFCC"></ex:even>
+                <c:out value="${customer}"/></td>
+        </tr>
+    </c:forEach>
+</table>
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/iterators/DataTypes.jsp b/standard-examples/src/main/webapp/iterators/DataTypes.jsp
new file mode 100644
index 0000000..2d47707
--- /dev/null
+++ b/standard-examples/src/main/webapp/iterators/DataTypes.jsp
@@ -0,0 +1,40 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+<html>
+<head>
+    <title>JSTL: Iterator Support -- Data Types Example</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>Data Types</h3>
+
+<h4>Array of primitives (int)</h4>
+
+<c:forEach var="i" items="${intArray}">
+    <c:out value="${i}"/> &#149;
+</c:forEach>
+
+<h4>Array of objects (String)</h4>
+
+<c:forEach var="string" items="${stringArray}">
+    <c:out value="${string}"/><br>
+</c:forEach>
+
+<h4>Enumeration (warning: this only works until enumeration is exhausted!)</h4>
+
+<c:forEach var="item" items="${enumeration}" begin="2" end="10" step="2">
+    <c:out value="${item}"/><br>
+</c:forEach>
+
+<h4>Properties (Map)</h4>
+
+<c:forEach var="prop" items="${numberMap}" begin="1" end="5">
+    <c:out value="${prop.key}"/> = <c:out value="${prop.value}"/><br>
+</c:forEach>
+
+<h4>String (Comma Separated Values)</h4>
+
+<c:forEach var="token" items="bleu,blanc,rouge">
+    <c:out value="${token}"/><br>
+</c:forEach>
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/iterators/Extensability.jsp b/standard-examples/src/main/webapp/iterators/Extensability.jsp
new file mode 100644
index 0000000..2646e9b
--- /dev/null
+++ b/standard-examples/src/main/webapp/iterators/Extensability.jsp
@@ -0,0 +1,51 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="ex" uri="/jstl-examples-taglib" %>
+
+
+<c:set var="first"><c:out value="${param['first']}" default="1"/></c:set>
+<c:set var="pageSize"><c:out value="${param['pageSize']}" default="30"/></c:set>
+<c:set var="last" value="${first+pageSize-1}"/>
+
+<c:if test="${first != 1}">
+    <c:url var="prevURL" value="Extensability.jsp">
+        <c:param name="first" value="${first - pageSize}"/>
+    </c:url>
+</c:if>
+
+<c:url var="nextURL" value="Extensability.jsp">
+    <c:param name="first" value="${last+1}"/>
+</c:url>
+
+<table>
+    <tr>
+        <th>#</th>
+        </th>
+        <th>Code</th>
+        <th colspan="2" align="left">Name</th>
+    </tr>
+    <ex:locales var="locale" varStatus="status" varTotal="total" begin="${first}" end="${last}">
+        <tr>
+            <td><c:out value="${status.index}"/></td>
+            <td><c:out value="${locale}"/></td>
+            <td><c:out value="${locale.displayName}"/></td>
+            <td><ex:defaultLocale><b>(default locale)</b></ex:defaultLocale></td>
+        </tr>
+    </ex:locales>
+</table>
+
+<c:if test="${last > total}">
+    <c:set var="last" value="${total}"/>
+    <c:remove var="nextURL"/>
+</c:if>
+
+<br>
+Showing locales <c:out value="${first}"/> to <c:out value="${last}"/> of <c:out value="${total}"/><br>
+<br>
+<c:if test="${not empty prevURL}">
+    <a href="<c:out value="${prevURL}"/>">previous</a>&nbsp;&nbsp;&nbsp;
+</c:if>
+<c:if test="${not empty nextURL}">
+    <a href="<c:out value="${nextURL}"/>">next</a>&nbsp;&nbsp;&nbsp;
+</c:if>
+<br>
+
diff --git a/standard-examples/src/main/webapp/iterators/ForTokens.jsp b/standard-examples/src/main/webapp/iterators/ForTokens.jsp
new file mode 100644
index 0000000..483a5ca
--- /dev/null
+++ b/standard-examples/src/main/webapp/iterators/ForTokens.jsp
@@ -0,0 +1,25 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+<html>
+<head>
+    <title>JSTL: Iterator Support -- forTokens Example</title>
+</head>
+<body bgcolor="#FFFFFF">
+
+<h3>&lt;forTokens&gt;</h3>
+
+<h4>String with '|' delimiter</h4>
+
+<c:forTokens var="token" items="bleu,blanc,rouge|vert,jaune|blanc,rouge"
+             delims="|">
+    <c:out value="${token}"/> &#149;
+</c:forTokens>
+
+<h4>String with '|' and ',' delimiters</h4>
+
+<c:forTokens var="token" items="bleu,blanc,rouge|vert,jaune|blanc,rouge"
+             delims="|,">
+    <c:out value="${token}"/> &#149;
+</c:forTokens>
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/iterators/Simple.jsp b/standard-examples/src/main/webapp/iterators/Simple.jsp
new file mode 100644
index 0000000..e0f7c76
--- /dev/null
+++ b/standard-examples/src/main/webapp/iterators/Simple.jsp
@@ -0,0 +1,18 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+<html>
+<head>
+    <title>JSTL: Iterator Support -- Simple Iteration Example</title>
+</head>
+
+<body bgcolor="#FFFFFF">
+<h3>Simple Iteration</h3>
+
+<h4>Customer list</h4>
+
+<c:forEach var="customer" items="${customers}">
+    ${customer}<br>
+</c:forEach>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/iterators/SimpleRange.jsp b/standard-examples/src/main/webapp/iterators/SimpleRange.jsp
new file mode 100644
index 0000000..066c78b
--- /dev/null
+++ b/standard-examples/src/main/webapp/iterators/SimpleRange.jsp
@@ -0,0 +1,16 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+<html>
+<head>
+    <title>JSTL: Iterator Support -- Simple Range Iteration Example</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>Simple Range Iteration</h3>
+
+<h4>1 to 10</h4>
+
+<c:forEach var="i" begin="1" end="10">
+    ${i} &#149;
+</c:forEach>
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/iterators/Status.jsp b/standard-examples/src/main/webapp/iterators/Status.jsp
new file mode 100644
index 0000000..5678554
--- /dev/null
+++ b/standard-examples/src/main/webapp/iterators/Status.jsp
@@ -0,0 +1,54 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+<html>
+<head>
+    <title>JSTL: Iterator Support -- Iteration Status Example</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>Iteration Status</h3>
+
+<h4>Using status information: current, index, count, first, last</h4>
+<table border="1">
+    <tr>
+        <th>index</th>
+        <th>count</th>
+        <th>last name</th>
+        <th>first name</th>
+        <th>first?</th>
+        <th>last?</th>
+    </tr>
+    <c:forEach var="customer" items="${customers}" varStatus="status">
+        <tr>
+            <td><c:out value="${status.index}"/></td>
+            <td><c:out value="${status.count}"/></td>
+            <td><c:out value="${status.current.lastName}"/></td>
+            <td><c:out value="${status.current.firstName}"/></td>
+            <td><c:out value="${status.first}"/></td>
+            <td><c:out value="${status.last}"/></td>
+        </tr>
+        <c:if test="${status.last}">
+            <c:set var="count" value="${status.count}"/>
+        </c:if>
+    </c:forEach>
+</table>
+<p>There are
+    <c:out value="${count}"/> customers in the list.
+
+<p>
+
+<h4>Iteration using range attributes</h4>
+<c:forEach var="i" begin="100" end="200" step="5" varStatus="status">
+    <c:if test="${status.first}">
+        begin:<c:out value="${status.begin}">begin</c:out> &nbsp; &nbsp;
+        end:<c:out value="${status.end}">end</c:out> &nbsp; &nbsp;
+        step:<c:out value="${status.step}">step</c:out><br>
+        sequence:
+    </c:if>
+    <c:out value="${i}"/>
+    <c:if test="${status.last}">
+        <br>There are <c:out value="${status.count}"/> numbers in the list.
+    </c:if>
+</c:forEach>
+<p>
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/iterators/index.html b/standard-examples/src/main/webapp/iterators/index.html
new file mode 100644
index 0000000..3b1e5cc
--- /dev/null
+++ b/standard-examples/src/main/webapp/iterators/index.html
@@ -0,0 +1,111 @@
+<html><!-- #BeginTemplate "/Templates/ExamplesTemplate.dwt" -->
+<head>
+    <!-- #BeginEditable "doctitle" -->
+    <title>JSTL: Iterator Tags Examples</title>
+    <!-- #EndEditable -->
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+    <link rel="stylesheet" href="../global.css" type="text/css">
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+<table width="100%" border="0" cellpadding="5">
+    <tr>
+        <td height="0"><font color="#000099"><b>standard taglib &#149; implementation
+            of the JSP Standard Tag Library</b></font></td>
+    </tr>
+    <tr>
+        <td bgcolor="#CCCCFF"><font size="-1">Examples &nbsp;&nbsp;&nbsp;&nbsp;<a href="../index.html">Introduction</a>
+            &#149; <a href="../elsupport/index.html">General Purpose</a>
+            &#149; <a href="../conditionals/index.html">Conditionals</a>
+            &#149; <a href="index.html">Iterators</a> &#149;
+            <a href="../import/index.jsp">Import</a> &#149; <a href="../format/index.html">I18N
+                & Formatting</a> &#149; <a href="../xml/index.html">XML</a>
+            &#149; <a href="../sql/index.jsp">SQL</a> &#149; <a href="../functions/index.html">Functions</a>
+            &#149; <a href="../tlv/index.html">TLV</a>
+        </font></td>
+    </tr>
+</table>
+<!-- #BeginEditable "body" -->
+<h2>Iterator Tags Examples</h2>
+
+<h3>Simple&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/iterators/Simple.jsp"><img src="../images/code.gif"
+                                                                                       width="24" height="24"
+                                                                                       border="0"></a>
+    <a href="Simple.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Simply displays the default <code>toString()</code> value of the items in the
+<code>Customers</code> collection.<br>
+
+<h3> Range &nbsp;&nbsp;<a href="../ShowSource.jsp?filename=/iterators/SimpleRange.jsp"><img src="../images/code.gif"
+                                                                                            width="24" height="24"
+                                                                                            border="0"></a>
+    <a href="SimpleRange.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+
+<p>Another simple example. Similar to the previous one, except that in this case
+    there is no collection to iterate over. The <code>items</code> attribute is
+    optional in the <code>&lt;forEach&gt;</code> tag. When it is not specified,
+    the range attributes must be used to iterate a specific number of times over
+    the tag's body. In this example, we simply iterate over the integer values specified
+    by the range attributes.</p>
+
+<h3>Data Types&nbsp;&nbsp;<a href="../ShowSource.jsp?filename=/iterators/DataTypes.jsp"><img src="../images/code.gif"
+                                                                                             width="24" height="24"
+                                                                                             border="0"></a>&nbsp;<a
+        href="DataTypes.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a></h3>
+
+<p>The <code>&lt;forEach&gt;</code> tag supports a large number of data types
+    for the collection of objects to iterate over. In this example, we feature the
+    following data types: array of primitives, array of objects, Enumeration, Properties
+    (Map), String (Comma Separated Values).</p>
+
+<h3>Iteration Status&nbsp;&nbsp;<a href="../ShowSource.jsp?filename=/iterators/Status.jsp"><img src="../images/code.gif"
+                                                                                                width="24" height="24"
+                                                                                                border="0"></a>&nbsp;<a
+        href="Status.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a></h3>
+
+<p>The iterator tag exposes a wealth of information relative to the iteration
+    taking place. This example features some of that status information.</p>
+
+<h3>Collaboration&nbsp;&nbsp;<a href="../ShowSource.jsp?filename=/iterators/Collaboration.jsp"><img
+        src="../images/code.gif" width="24" height="24" border="0"></a>&nbsp;<a href="Collaboration.jsp"><img
+        src="../images/execute.gif" width="24" height="24" border="0"></a></h3>
+
+<p>The iterator tags expose interface IteratorTag to allow custom tags to establish
+    implicit collaboration. This example shows two custom tags, &lt;even&gt; and
+    &lt;odd&gt; who take advantage of this implicit collaboration.</p>
+
+<h3>&lt;forTokens&gt;&nbsp;&nbsp;<a href="../ShowSource.jsp?filename=/iterators/ForTokens.jsp"><img
+        src="../images/code.gif" width="24" height="24" border="0"></a>&nbsp;<a href="ForTokens.jsp"><img
+        src="../images/execute.gif" width="24" height="24" border="0"></a></h3>
+
+<p>The &lt;forEach&gt; tag provides the basic iteration capabilities. &lt;forTokens&gt;
+    is a specialization for the handling of Strings of tokens. Essentially the same
+    as &lt;forEach&gt;, except that it only applies to Strings of tokens and that
+    it has an extra attribute &quot;delims&quot; to specify the token delimiter.</p>
+
+<h3>Extensibility&nbsp;&nbsp;<a href="../ShowSource.jsp?filename=/iterators/Extensability.jsp"><img
+        src="../images/code.gif" width="24" height="24" border="0"></a>&nbsp;<a href="Extensability.jsp"><img
+        src="../images/execute.gif" width="24" height="24" border="0"></a></h3>
+
+<p>JSTL exposes in its API the abstract class LoopTagSupport to facilitate
+    the implementation of custom iterator tags that leverage the standard iteration
+    behavior defined in JSTL. This example shows a custom iterator tag that shows all Locale objects available in the
+    server and a custom conditional sub-tag that
+    display the default locale.</p>
+
+<h3>Boundary Case Tests&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/iterators/BoundaryCases.jsp"><img
+        src="../images/code.gif" width="24" height="24" border="0"></a>
+    <a href="../iterators/BoundaryCases.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Failure and minimal value examples.<br>
+<!-- #EndEditable -->
+<hr noshade color="#000099">
+<table width="100%" border="0" cellpadding="5">
+    <tr>
+        <td height="24"><font color="#000099"><b>standard taglib &#149; implementation
+            of the JSP Standard Tag Library</b></font></td>
+    </tr>
+</table>
+</body>
+<!-- #EndTemplate --></html>
diff --git a/standard-examples/src/main/webapp/sql/DriverSetup.jsp b/standard-examples/src/main/webapp/sql/DriverSetup.jsp
new file mode 100644
index 0000000..3cb4dc6
--- /dev/null
+++ b/standard-examples/src/main/webapp/sql/DriverSetup.jsp
@@ -0,0 +1,22 @@
+<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
+
+<html>
+<head>
+    <title>JSTL: SQL action examples</title>
+</head>
+<body bgcolor="#FFFFFF">
+
+<h1>SQL Driver Setup Example</h1>
+
+<code>
+<pre>
+&lt;sql:setDataSource
+  var="example"
+  driver="RmiJdbc.RJDriver"
+  url="jdbc:rmi://localhost:1099/jdbc:cloudscape:CloudscapeDB;create=true"
+/&gt;
+</pre>
+</code>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/sql/QueryDirect.jsp b/standard-examples/src/main/webapp/sql/QueryDirect.jsp
new file mode 100644
index 0000000..e5e44dc
--- /dev/null
+++ b/standard-examples/src/main/webapp/sql/QueryDirect.jsp
@@ -0,0 +1,89 @@
+<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+<html>
+<head>
+    <title>JSTL: SQL action examples</title>
+</head>
+<body bgcolor="#FFFFFF">
+
+<h1>SQL Direct Query Execution</h1>
+
+<p>This example demonstrates how the row and columns can be directly accessed using various direct mechanisms.
+
+<p>
+
+
+    <!-- NOTE: the sql:setDataSource tag is for prototyping and simple applications. You should really use a DataSource object instead --!>
+
+<sql:setDataSource
+  var="example"
+  driver="${sessionScope.myDbDriver}"
+  url="${sessionScope.myDbUrl}"
+  user="${sessionScope.myDbUserName}"
+  password="${sessionScope.myDbPassword}"
+/>
+
+<sql:transaction dataSource="${example}">
+
+  <sql:update var="newTable">
+    create table mytable (
+      nameid int primary key,
+      name varchar(80)
+    )
+  </sql:update>
+
+  <sql:update var="updateCount">
+    INSERT INTO mytable VALUES (1,'Paul Oakenfold')
+  </sql:update>
+  <sql:update var="updateCount">
+    INSERT INTO mytable VALUES (2,'Timo Maas')
+  </sql:update>
+  <sql:update var="updateCount">
+    INSERT INTO mytable VALUES (3,'Paul van Dyk')
+  </sql:update>
+
+  <sql:query var="deejays">
+    SELECT * FROM mytable
+  </sql:query>
+
+</sql:transaction>
+
+<hr>
+
+<h2>Using the Row index and Column name</h2>
+Row[0].NAMEID: <c:out value="${deejays.rows[0].NAMEID}" />
+<br>
+Row[0].NAME: <c:out value="${deejays.rows[0].NAME}" />
+<br>
+Row[1].NAMEID: <c:out value="${deejays.rows[1].NAMEID}" />
+<br>
+Row[1].NAME: <c:out value="${deejays.rows[1].NAME}" />
+<br>
+Row[2].NAMEID: <c:out value="${deejays.rows[2].NAMEID}" />
+<br>
+Row[2].NAME: <c:out value="${deejays.rows[2].NAME}" />
+<br>
+
+<hr>
+
+<h2>Using the Row and Column index</h2>
+Row[0][0]: <c:out value="${deejays.rowsByIndex[0][0]}" />
+<br>
+Row[0][1]: <c:out value="${deejays.rowsByIndex[0][1]}" />
+<br>
+Row[1][0]: <c:out value="${deejays.rowsByIndex[1][0]}" />
+<br>
+Row[1][1]: <c:out value="${deejays.rowsByIndex[1][1]}" />
+<br>
+Row[2][0]: <c:out value="${deejays.rowsByIndex[2][0]}" />
+<br>
+Row[2][1]: <c:out value="${deejays.rowsByIndex[2][1]}" />
+<br>
+
+<sql:update var="newTable" dataSource="${example}">
+  drop table mytable
+</sql:update>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/sql/QueryIterate.jsp b/standard-examples/src/main/webapp/sql/QueryIterate.jsp
new file mode 100644
index 0000000..7a48e49
--- /dev/null
+++ b/standard-examples/src/main/webapp/sql/QueryIterate.jsp
@@ -0,0 +1,104 @@
+<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+<html>
+<head>
+    <title>JSTL: SQL action examples</title>
+</head>
+<body bgcolor="#FFFFFF">
+
+<h1>SQL Query Execution using an iterator</h1>
+
+
+<!-- NOTE: the sql:setDataSource tag is for prototyping and simple applications. You should really use a DataSource object instead --!>
+
+<sql:setDataSource
+  var="example"
+  driver="${sessionScope.myDbDriver}"
+  url="${sessionScope.myDbUrl}"
+  user="${sessionScope.myDbUserName}"
+  password="${sessionScope.myDbPassword}"
+/>
+
+<sql:transaction dataSource="${example}">
+
+  <sql:update var="newTable">
+    create table mytable (
+      nameid int primary key,
+      name varchar(80)
+    )
+  </sql:update>
+
+  <sql:update var="updateCount">
+    INSERT INTO mytable VALUES (1,'Paul Oakenfold')
+  </sql:update>
+  <sql:update var="updateCount">
+    INSERT INTO mytable VALUES (2,'Timo Maas')
+  </sql:update>
+  <sql:update var="updateCount">
+    INSERT INTO mytable VALUES (3,'Paul van Dyk')
+  </sql:update>
+
+
+  <sql:query var="deejays">
+    SELECT * FROM mytable
+  </sql:query>
+
+</sql:transaction>
+
+<hr>
+
+<h2>Iterating over each Row of the result</h2>
+
+<table border="1">
+  <c:forEach var="row" items="${deejays.rowsByIndex}">
+    <tr>
+      <c:forEach var="column" items="${row}">
+        <td><c:out value="${column}"/></td>
+      </c:forEach>
+    </tr>
+  </c:forEach>
+</table>
+
+<hr>
+
+<h2>Iterating over Columns without knowing the index</h2>
+
+<table border="1">
+  <c:forEach var="row" items="${deejays.rows}">
+  <tr>
+    <td>Name: <c:out value="${row.NAMEID}"/></td>
+    <td>Value: <c:out value="${row.NAME}"/></td>
+  </tr>
+  </c:forEach>
+</table>
+
+<hr>
+
+<h2>Putting it all together</h2>
+
+<%-- Easiest example showing how to populate a table --%>
+<table border="1">
+  <tr>
+  <%-- Get the column names for the header of the table --%>
+  <c:forEach var="columnName" items="${deejays.columnNames}">
+    <th><c:out value="${columnName}"/></th>
+  </c:forEach>
+
+  <%-- Get the value of each column while iterating over rows --%>
+  <c:forEach var="row" items="${deejays.rowsByIndex}">
+    <tr>
+      <c:forEach var="column" items="${row}">
+        <td><c:out value="${column}"/></td>
+      </c:forEach>
+  </c:forEach>
+</table>
+
+
+<sql:update var="newTable" dataSource="${example}">
+  drop table mytable
+</sql:update>
+
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/sql/QueryParam.jsp b/standard-examples/src/main/webapp/sql/QueryParam.jsp
new file mode 100644
index 0000000..d868e5b
--- /dev/null
+++ b/standard-examples/src/main/webapp/sql/QueryParam.jsp
@@ -0,0 +1,72 @@
+<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+<html>
+<head>
+    <title>JSTL: SQL action examples</title>
+</head>
+<body bgcolor="#FFFFFF">
+
+    <% request.setAttribute("newName", new String("Paul van Dyk")); %>
+
+<h1>SQL Query Execution using parameters</h1>
+
+<p>Using parameter marker's to insert values in the SQL statements</p>
+
+
+<!-- NOTE: the sql:setDataSource tag is for prototyping and simple applications. You should really use a DataSource object instead --!>
+
+<sql:setDataSource
+  var="example"
+  driver="${sessionScope.myDbDriver}"
+  url="${sessionScope.myDbUrl}"
+  user="${sessionScope.myDbUserName}"
+  password="${sessionScope.myDbPassword}"
+/>
+
+<sql:transaction dataSource="${example}">
+
+  <sql:update var="newTable">
+    create table mytable (
+      nameid int primary key,
+      name varchar(80)
+    )
+  </sql:update>
+
+  <sql:update var="updateCount">
+    INSERT INTO mytable VALUES (1,'Paul Oakenfold')
+  </sql:update>
+
+  <sql:update var="updateCount">
+    INSERT INTO mytable VALUES (?,'Timo Maas')
+      <sql:param value="2"/>
+  </sql:update>
+
+  <sql:update var="updateCount">
+    INSERT INTO mytable VALUES (?,?)
+      <sql:param value="3"/>
+      <sql:param value="${newName}"/>
+  </sql:update>
+
+  <sql:query var="deejay">
+    SELECT * FROM mytable
+  </sql:query>
+
+</sql:transaction>
+
+<table border="1">
+  <c:forEach var="row" items="${deejay.rows}">
+    <tr>
+      <td><c:out value="${row.NAMEID}"/></td>
+      <td><c:out value="${row.NAME}"/></td>
+    </tr>
+    </c:forEach>
+</table>
+
+<sql:update var="newTable" dataSource="${example}">
+  drop table mytable
+</sql:update>
+
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/sql/Transaction.jsp b/standard-examples/src/main/webapp/sql/Transaction.jsp
new file mode 100644
index 0000000..95e20c9
--- /dev/null
+++ b/standard-examples/src/main/webapp/sql/Transaction.jsp
@@ -0,0 +1,60 @@
+<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
+
+<html>
+<head>
+    <title>JSTL: SQL action examples</title>
+</head>
+<body bgcolor="#FFFFFF">
+
+<h1>SQL Transactions</h1>
+
+
+<!-- NOTE: the sql:setDataSource tag is for prototyping and simple applications. You should really use a DataSource object instead --!>
+
+<sql:setDataSource
+  var="example"
+  driver="${sessionScope.myDbDriver}"
+  url="${sessionScope.myDbUrl}"
+  user="${sessionScope.myDbUserName}"
+  password="${sessionScope.myDbPassword}"
+/>
+
+<p>You can group transactions together using the &lt;sql:transaction&gt; tag.</p>
+
+<h2>Creating table using a transaction</h2>
+
+<sql:transaction dataSource="${example}">
+  <sql:update var="newTable">
+    create table mytable (
+      nameid int primary key,
+      name varchar(80)
+    )
+  </sql:update>
+</sql:transaction>
+
+<p>DONE: Creating table using a transaction</p>
+
+<hr>
+
+<h2>Populating table in one transaction</h2>
+
+<sql:transaction dataSource="${example}">
+  <sql:update var="updateCount">
+    INSERT INTO mytable VALUES (1,'Paul Oakenfold')
+  </sql:update>
+  <sql:update var="updateCount">
+    INSERT INTO mytable VALUES (2,'Timo Maas')
+  </sql:update>
+  <sql:update var="updateCount">
+    INSERT INTO mytable VALUES (3,'Paul van Dyk')
+  </sql:update>
+</sql:transaction>
+
+<p>DONE: Populating table in one transaction</p>
+
+<sql:update var="newTable" dataSource="${example}">
+  drop table mytable
+</sql:update>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/sql/Update.jsp b/standard-examples/src/main/webapp/sql/Update.jsp
new file mode 100644
index 0000000..22eb548
--- /dev/null
+++ b/standard-examples/src/main/webapp/sql/Update.jsp
@@ -0,0 +1,115 @@
+<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+<html>
+<head>
+    <title>JSTL: SQL action examples</title>
+</head>
+<body bgcolor="#FFFFFF">
+
+<h1>SQL Update Execution</h1>
+
+
+<!-- NOTE: the sql:setDataSource tag is for prototyping and simple applications. You should really use a DataSource object instead --!>
+
+<sql:setDataSource
+  var="example"
+  driver="${sessionScope.myDbDriver}"
+  url="${sessionScope.myDbUrl}"
+  user="${sessionScope.myDbUserName}"
+  password="${sessionScope.myDbPassword}"
+/>
+
+<hr>
+
+<sql:transaction dataSource="${example}">
+
+  <sql:update var="newTable">
+    create table mytable (
+      nameid int primary key,
+      name varchar(80)
+    )
+  </sql:update>
+
+<h2>Inserting three rows into table</h2>
+  <sql:update var="updateCount">
+    INSERT INTO mytable VALUES (1,'Paul Oakenfold')
+  </sql:update>
+  <sql:update var="updateCount">
+    INSERT INTO mytable VALUES (2,'Timo Maas')
+  </sql:update>
+  <sql:update var="updateCount">
+    INSERT INTO mytable VALUES (3,'Paul van Dyk')
+  </sql:update>
+
+<p>DONE: Inserting three rows into table</p>
+
+
+  <sql:query var="deejays">
+    SELECT * FROM mytable
+  </sql:query>
+
+</sql:transaction>
+
+<%-- An example showing how to populate a table --%>
+<table border="1">
+  <%-- Get the column names for the header of the table --%>
+  <c:forEach var="columnName" items="${deejays.columnNames}">
+    <th><c:out value="${columnName}"/></th>
+  </c:forEach>
+
+  <%-- Get the value of each column while iterating over rows --%>
+  <c:forEach var="row" items="${deejays.rows}">
+    <tr>
+    <c:forEach var="column" items="${row}">
+      <td><c:out value="${column.value}"/></td>
+    </c:forEach>
+  </tr>
+  </c:forEach>
+</table>
+
+
+<h2>Deleting second row from table</h2>
+
+  <sql:update var="updateCount" dataSource="${example}">
+    DELETE FROM mytable WHERE nameid=2
+  </sql:update>
+
+<p>DONE: Deleting second row from table</p>
+
+<sql:query var="deejays" dataSource="${example}">
+  SELECT * FROM mytable
+</sql:query>
+
+
+<%-- Yet another example showing how to populate a table --%>
+<table border="1">
+  <c:forEach var="row" items="${deejays.rows}" varStatus="status">
+    <%-- Get the column names for the header of the table --%>
+    <c:choose>
+      <c:when test="${status.count == 1}">
+        <%-- Each row is a Map object key'd by the column name --%>
+        <tr>
+        <c:forEach var="metaData" items="${row}">
+          <th><c:out value="${metaData.key}"/></th>
+        </c:forEach>
+        </tr>
+      </c:when>
+    </c:choose>
+    <tr>
+    <c:forEach var="column" items="${row}">
+      <%-- Get the value of each column while iterating over rows --%>
+      <td><c:out value="${column.value}"/></td>
+    </c:forEach>
+  </tr>
+  </c:forEach>
+</table>
+
+
+<sql:update var="newTable" dataSource="${example}">
+  drop table mytable
+</sql:update>
+
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/sql/index.jsp b/standard-examples/src/main/webapp/sql/index.jsp
new file mode 100644
index 0000000..b8bc608
--- /dev/null
+++ b/standard-examples/src/main/webapp/sql/index.jsp
@@ -0,0 +1,108 @@
+<html><!-- #BeginTemplate "/Templates/ExamplesTemplate.dwt" -->
+<head>
+    <!-- #BeginEditable "doctitle" -->
+    <title>JSTL: SQL Tags Examples</title>
+    <!-- #EndEditable -->
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+    <link rel="stylesheet" href="../global.css" type="text/css">
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+<table width="100%" border="0" cellpadding="5">
+    <tr>
+        <td height="0"><font color="#000099"><b>standard taglib &#149; implementation
+            of the JSP Standard Tag Library &#149; </b></font><font color="#003399"><a
+                href="mailto:taglibs-user@jakarta.apache.org"><b>support</b></a>
+            &nbsp;&nbsp;<b><a href="mailto:taglibs-dev@jakarta.apache.org">development</a>&nbsp;&nbsp;
+                <a href="mailto:jsr-52-comments@jcp.org">comments to JSR-52</a></b></font></td>
+    </tr>
+    <tr>
+        <td bgcolor="#CCCCFF"><font size="-1">Examples &nbsp;&nbsp;&nbsp;&nbsp;<a href="../index.html">Introduction</a>
+            &#149; <a href="../elsupport/index.html">General Purpose</a>
+            &#149; <a href="../conditionals/index.html">Conditionals</a>
+            &#149; <a href="../iterators/index.html">Iterators</a> &#149;
+            <a href="../import/index.jsp">Import</a> &#149; <a href="../format/index.html">I18N
+                & Formatting</a> &#149; <a href="../xml/index.html">XML</a>
+            &#149; <a href="index.jsp">SQL</a> &#149; <a href="../functions/index.html">Functions</a>
+            &#149; <a href="../tlv/index.html">TLV</a> &#149; <a href="../functions/index.html"></a><a
+                    href="../misc/index.html">Misc.</a></font></td>
+    </tr>
+</table>
+<!-- #BeginEditable "body" -->
+<h1>SQL Tags Examples</h1>
+
+<p>These examples create their own table for demonstration purposes. Every database
+    supports table creation in a slightly different way. For instance, different
+    databases have different types and constraints. The simplest possible table
+    was chosen, however it may still not be supported by your particular database.
+    Check your database documentation or administrator if you have problems creating
+    the table and modify the examples acordingly. Here is the table used in the
+    examples:</p>
+<pre><code>
+    create table mytable (
+    nameid int primary key,
+    name varchar(80)
+    )
+</code></pre>
+<p>Enter your Driver Name and DataBase URL to test the Database Tag Library.</p>
+
+<p>NOTE: You will need to have the DataBase Driver classes available to your server's
+    classloader or in your server's CLASSPATH at startup.</p>
+
+<form name="myform" action="session.jsp" method="post">
+    <table width="100%" border="0" cellspacing="0" cellpadding="0">
+        <tr>
+            <td>Driver:</td>
+            <td>
+                <input type="text" size="40" name="dbDriver" value="org.apache.derby.jdbc.EmbeddedDriver">
+            </td>
+        </tr>
+        <tr>
+            <td>URL:</td>
+            <td>
+                <input type="text" size="40" name="dbUrl"
+                       value="jdbc:derby:jstlexample;create=true">
+            </td>
+        </tr>
+        <tr>
+            <td colspan="2"><br>
+
+                <p>The following two fields are <strong>Optional</strong>. They are included
+                    for convenience.<br>
+                    NOTE: an unsecure <code>form</code> is used.</p>
+            </td>
+        </tr>
+        <tr>
+            <td>User Name:</td>
+            <td>
+                <input type="text" size="40" name="dbUserName" value="">
+            </td>
+        </tr>
+        <tr>
+            <td>Password:</td>
+            <td>
+                <input type="password" size="40" name="dbPassword" value="">
+            </td>
+        </tr>
+    </table>
+    <p>
+        <input type="submit" name="Submit" value="Submit">
+    </p>
+</form>
+<hr>
+<p>NOTE: You can access the tags directly here to look at the source. If you do
+    not provide a valid Driver and URL using the above form, the tags will NOT run properly.</p>
+<%@ include file="links.html" %>
+<!-- #EndEditable -->
+<hr noshade color="#000099">
+<table width="100%" border="0" cellpadding="5">
+    <tr>
+        <td height="24"><font color="#000099"><b>standard taglib &#149; implementation
+            of the JSP Standard Tag Library &#149; </b></font><font color="#003399"><a
+                href="mailto:taglibs-user@jakarta.apache.org"><b>support</b></a>
+            &nbsp;&nbsp;<b><a href="mailto:taglibs-dev@jakarta.apache.org">development</a>&nbsp;&nbsp;
+                <a href="mailto:jsr-52-comments@jcp.org">comments to JSR-52</a></b></font></td>
+    </tr>
+</table>
+</body>
+<!-- #EndTemplate --></html>
diff --git a/standard-examples/src/main/webapp/sql/links.html b/standard-examples/src/main/webapp/sql/links.html
new file mode 100644
index 0000000..c7fd4c2
--- /dev/null
+++ b/standard-examples/src/main/webapp/sql/links.html
@@ -0,0 +1,43 @@
+<h2>DataBase Tags Examples</h2>
+
+<h3>Query Iterate&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/sql/QueryIterate.jsp"><img src="../images/code.gif"
+                                                                                              width="24" height="24"
+                                                                                              border="0"></a>
+    <a href="../sql/QueryIterate.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Example showing how to iterate over the result of a query.<br>
+
+<h3>Update&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/sql/Update.jsp"><img src="../images/code.gif" width="24"
+                                                                                 height="24" border="0"></a>
+    <a href="../sql/Update.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Example showing several database updates.<br>
+
+<h3>Direct Query&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/sql/QueryDirect.jsp"><img src="../images/code.gif"
+                                                                                            width="24" height="24"
+                                                                                            border="0"></a>
+    <a href="../sql/QueryDirect.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Example showing how the the result of a query can be directly accessed.<br>
+
+<h3>Query Parameters&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/sql/QueryParam.jsp"><img src="../images/code.gif"
+                                                                                               width="24" height="24"
+                                                                                               border="0"></a>
+    <a href="../sql/QueryParam.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Example showing how query parameters can be used to create an SQL query.<br>
+
+<h3>Transaction&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/sql/Transaction.jsp"><img src="../images/code.gif"
+                                                                                           width="24" height="24"
+                                                                                           border="0"></a>
+    <a href="../sql/Transaction.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Example showing how to setup transactions.<br>
+
+<h3>Driver Setup&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/sql/DriverSetup.jsp"><img src="../images/code.gif"
+                                                                                            width="24" height="24"
+                                                                                            border="0"></a>
+    <a href="../sql/DriverSetup.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+A sample page showing how a driver can be configured. NOTE: this is meant for prototyping and simple applications.<br>
+
diff --git a/standard-examples/src/main/webapp/sql/session.jsp b/standard-examples/src/main/webapp/sql/session.jsp
new file mode 100644
index 0000000..7afd78a
--- /dev/null
+++ b/standard-examples/src/main/webapp/sql/session.jsp
@@ -0,0 +1,17 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+<html>
+<head>
+    <title>Jakarta DBTAGS Taglib Example</title>
+</head>
+<body bgcolor="white">
+
+<c:set var="myDbUrl" value="${param.dbUrl}" scope="session"/>
+<c:set var="myDbDriver" value="${param.dbDriver}" scope="session"/>
+<c:set var="myDbUserName" value="${param.dbUserName}" scope="session"/>
+<c:set var="myDbPassword" value="${param.dbPassword}" scope="session"/>
+
+<%@ include file="links.html" %>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/tlv/PermittedTaglibsError.jsp b/standard-examples/src/main/webapp/tlv/PermittedTaglibsError.jsp
new file mode 100644
index 0000000..f136227
--- /dev/null
+++ b/standard-examples/src/main/webapp/tlv/PermittedTaglibsError.jsp
@@ -0,0 +1,28 @@
+<%@ taglib prefix="permittedTaglibs" uri="http://jakarta.apache.org/taglibs/standard/permittedTaglibs" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="ex" uri="/jstl-examples-taglib" %>
+
+<html>
+<head>
+    <title>JSTL: Tag Library Validator -- PermittedTaglibs Error</title>
+</head>
+<body bgcolor="#FFFFFF">
+
+<h3>This JSP page uses taglibs that are not permitted. A translation error will occur.</h3>
+
+<h4>Using custom tags &lt;even&gt; and &lt;odd&gt;</h4>
+
+<table>
+    <c:forEach var="customer" items="${customers}">
+        <tr>
+            <ex:odd>
+            <td bgcolor="#FFFF66"></ex:odd>
+            <ex:even>
+            <td bgcolor="#99FFCC"></ex:even>
+                <c:out value="${customer}"/></td>
+        </tr>
+    </c:forEach>
+</table>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/tlv/PermittedTaglibsOk.jsp b/standard-examples/src/main/webapp/tlv/PermittedTaglibsOk.jsp
new file mode 100644
index 0000000..0610f27
--- /dev/null
+++ b/standard-examples/src/main/webapp/tlv/PermittedTaglibsOk.jsp
@@ -0,0 +1,30 @@
+<%@ taglib prefix="permittedTaglibs" uri="http://jakarta.apache.org/taglibs/standard/permittedTaglibs" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+<html>
+<head>
+    <title>JSTL: Tag Library Validator -- ScriptFree OK</title>
+</head>
+<body bgcolor="#FFFFFF">
+
+<h3>This JSP page only uses permitted taglibs (which in this case are the JSTL taglibs)</h3>
+
+<table>
+    <c:forEach var="customer" items="${customers}" varStatus="status">
+        <tr>
+            <jsp:useBean type="javax.servlet.jsp.jstl.core.LoopTagStatus" id="status"/>
+            <c:choose>
+            <c:when test="${status.count % 2 == 1}">
+            <td bgcolor="#FFFF66">
+                </c:when>
+                <c:otherwise>
+            <td bgcolor="#99FFCC">
+                </c:otherwise>
+                </c:choose>
+                <c:out value="${customer}"/></td>
+        </tr>
+    </c:forEach>
+</table>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/tlv/ScriptFreeError.jsp b/standard-examples/src/main/webapp/tlv/ScriptFreeError.jsp
new file mode 100644
index 0000000..17d6fd7
--- /dev/null
+++ b/standard-examples/src/main/webapp/tlv/ScriptFreeError.jsp
@@ -0,0 +1,15 @@
+<%@ taglib prefix="scriptfree" uri="http://jakarta.apache.org/taglibs/standard/scriptfree" %>
+<html>
+<head>
+    <title>JSTL: Tag Library Validator -- ScriptFree Error</title>
+</head>
+<body bgcolor="#FFFFFF">
+
+<h3>This JSP page is NOT free of scripting elements. Translation error will occur.</h3>
+
+<% java.util.Date date = new java.util.Date(); %>
+
+Date is: <%= date %>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/tlv/ScriptFreeOk.jsp b/standard-examples/src/main/webapp/tlv/ScriptFreeOk.jsp
new file mode 100644
index 0000000..94d0a6f
--- /dev/null
+++ b/standard-examples/src/main/webapp/tlv/ScriptFreeOk.jsp
@@ -0,0 +1,25 @@
+<%@ taglib prefix="scriptfree" uri="http://jakarta.apache.org/taglibs/standard/scriptfree" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<html>
+<head>
+    <title>JSTL: Tag Library Validator -- ScriptFree OK</title>
+</head>
+<body bgcolor="#FFFFFF">
+
+<h3>This JSP page is free of scripting elements</h3>
+
+<table border="1">
+    <c:forEach var="customer" items="${customers}">
+        <tr>
+            <td><c:out value="${customer.lastName}"/></td>
+            <td><c:out value="${customer.phoneHome}" default="no home phone specified"/></td>
+            <td>
+                <c:out value="${customer.phoneCell}" escapeXml="false">
+                    <font color="red">no cell phone specified</font>
+                </c:out>
+            </td>
+        </tr>
+    </c:forEach>
+</table>
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/tlv/index.html b/standard-examples/src/main/webapp/tlv/index.html
new file mode 100644
index 0000000..39f828a
--- /dev/null
+++ b/standard-examples/src/main/webapp/tlv/index.html
@@ -0,0 +1,78 @@
+<html><!-- #BeginTemplate "/Templates/ExamplesTemplate.dwt" -->
+<head>
+    <!-- #BeginEditable "doctitle" -->
+    <title>JSTL: Tag Library Validators Examples</title>
+    <!-- #EndEditable -->
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+    <link rel="stylesheet" href="../global.css" type="text/css">
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+<table width="100%" border="0" cellpadding="5">
+    <tr>
+        <td height="0"><font color="#000099"><b>standard taglib &#149; implementation
+            of the JSP Standard Tag Library</b></font></td>
+    </tr>
+    <tr>
+        <td bgcolor="#CCCCFF"><font size="-1">Examples &nbsp;&nbsp;&nbsp;&nbsp;<a href="../index.html">Introduction</a>
+            &#149; <a href="../elsupport/index.html">General Purpose</a>
+            &#149; <a href="../conditionals/index.html">Conditionals</a>
+            &#149; <a href="../iterators/index.html">Iterators</a> &#149;
+            <a href="../import/index.jsp">Import</a> &#149; <a href="../format/index.html">I18N
+                & Formatting</a> &#149; <a href="../xml/index.html">XML</a>
+            &#149; <a href="../sql/index.jsp">SQL</a> &#149; <a href="../functions/index.html">Functions</a>
+            &#149; <a href="index.html">TLV</a>
+        </font></td>
+    </tr>
+</table>
+<!-- #BeginEditable "body" -->
+<h2>Tag Library Validators Examples</h2>
+
+<h3>ScriptFree OK&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/tlv/ScriptFreeOk.jsp"><img src="../images/code.gif"
+                                                                                              width="24" height="24"
+                                                                                              border="0"></a>
+    <a href="../tlv/ScriptFreeOk.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+
+<p>This example shows a JSP page using the ScriptFree TLV. Because this page does
+    not use any scripting element, there are no translation errors and the page
+    is properly processed.</p>
+
+<h3>ScriptFree Error&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/tlv/ScriptFreeError.jsp"><img
+        src="../images/code.gif" width="24" height="24" border="0"></a>
+    <a href="../tlv/ScriptFreeError.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+
+<p>This example shows a JSP page using the ScriptFree TLV. Because this page uses
+    scripting elements, a translation error is reported when accessing the page.</p>
+
+<h3>PermittedTaglibs OK&nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/tlv/PermittedTaglibsOk.jsp"><img
+        src="../images/code.gif" width="24" height="24" border="0"></a>
+    <a href="../tlv/PermittedTaglibsOk.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+
+<p>This example shows a JSP page using the PermittedTaglibs TLV. Because this
+    page only uses permitted tag libraries, there are no translation errors and
+    the page is properly processed.</p>
+
+<h3></h3>
+
+<h3>PermittedTaglibs Error&nbsp;&nbsp; <a
+        href="../ShowSource.jsp?filename=/tlv/PermittedTaglibsError.jsp"><img src="../images/code.gif" width="24"
+                                                                              height="24" border="0"></a>
+    <a href="../tlv/PermittedTaglibsError.jsp"><img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+
+<p>This example shows a JSP page using the PermittedTaglibs TLV. Because this
+    page uses tag libraries that are not allowed, a translation error is reported
+    when accessing the page.</p>
+<!-- #EndEditable -->
+<hr noshade color="#000099">
+<table width="100%" border="0" cellpadding="5">
+    <tr>
+        <td height="24"><font color="#000099"><b>standard taglib &#149; implementation
+            of the JSP Standard Tag Library</b></font></td>
+    </tr>
+</table>
+</body>
+<!-- #EndTemplate --></html>
diff --git a/standard-examples/src/main/webapp/xml/Filter.jsp b/standard-examples/src/main/webapp/xml/Filter.jsp
new file mode 100644
index 0000000..9dea840
--- /dev/null
+++ b/standard-examples/src/main/webapp/xml/Filter.jsp
@@ -0,0 +1,33 @@
+<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
+<%@ taglib prefix="ex" uri="/jstl-examples-taglib" %>
+
+<html>
+<head>
+    <title>JSTL: XML Support -- Parse / Filter / Out</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>Parse / Filter / Out</h3>
+
+<ex:SPath var="spath" select="//a"/>
+<x:parse var="a" filter="${spath}">
+    <nope>
+        <a>
+            <b>
+                <c>
+                    foo
+                </c>
+            </b>
+            <d>
+                bar
+            </d>
+        </a>
+    </nope>
+</x:parse>
+
+<x:out select="$a//c"/>
+<x:out select="$a/a/d"/>
+
+<hr/>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/xml/ForEach.jsp b/standard-examples/src/main/webapp/xml/ForEach.jsp
new file mode 100644
index 0000000..7cb1d29
--- /dev/null
+++ b/standard-examples/src/main/webapp/xml/ForEach.jsp
@@ -0,0 +1,85 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
+
+<html>
+<head>
+    <title>JSTL: XML Support -- Parse / ForEach</title>
+</head>
+
+<body bgcolor="#FFFFFF">
+
+<h3>&lt;x:parse&gt; / &lt;x:forEach&gt;</h3>
+
+<c:import var="docString" url="ForEachDoc.xml"/>
+
+<x:parse var="document" doc="${docString}"/>
+
+<table border=1>
+    <tr>
+        <td valign="top">
+            <pre><c:out value="${docString}"/></pre>
+        </td>
+        <td valign="top">
+            <table border=1>
+                <tr>
+                    <th>Expression</th>
+                    <th>Result</th>
+                </tr>
+                <tr>
+                    <td><pre>
+&lt;x:forEach select="$document//a" varStatus="status">
+  ${status.index}:  &lt;x:out select="."/> &lt;br>
+&lt;x:forEach>
+</pre>
+                    </td>
+                    <td>
+                        <x:forEach select="$document//a" varStatus="status">
+                            ${status.index}: <x:out select="."/>
+                            <br/>
+                        </x:forEach>
+                    </td>
+                </tr>
+
+                <tr>
+                    <td><pre>
+&lt;x:forEach select="$document//a" begin="1" end="2" varStatus="status">
+  -> &lt;x:out select="."/> &lt;br>
+&lt;x:forEach>
+</pre>
+                    </td>
+                    <td>
+                        <x:forEach select="$document//a" begin="1" end="2" varStatus="status">
+                            ${status.index}: <x:out select="."/>
+                            <br/>
+                        </x:forEach>
+                    </td>
+                </tr>
+
+                <tr>
+                    <td><pre>
+&lt;x:forEach select="$document//a" varStatus="status">
+  ${status.index}:  
+  &lt;x:if select=".//d">
+    &lt;d&gt; element present
+  &lt;x:if>
+  &lt;br>
+&lt;x:forEach>
+</pre>
+                    </td>
+                    <td>
+                        <x:forEach select="$document//a" varStatus="status">
+                            ${status.index}:
+                            <x:if select=".//d">
+                                &lt;d&gt; element present
+                            </x:if>
+                            <br/>
+                        </x:forEach>
+                    </td>
+                </tr>
+            </table>
+        </td>
+    </tr>
+</table>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/xml/ForEachDoc.xml b/standard-examples/src/main/webapp/xml/ForEachDoc.xml
new file mode 100644
index 0000000..30ccb72
--- /dev/null
+++ b/standard-examples/src/main/webapp/xml/ForEachDoc.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<doc>
+    <a>
+        <b foo="foo">foo 1</b>
+    </a>
+    <a>
+        <c foo="bar">bar 2</c>
+    </a>
+    <a>
+        <d foo="bar">bar 3</d>
+    </a>
+    <a>
+        <d foo="foo">foo 4</d>
+    </a>
+</doc>
\ No newline at end of file
diff --git a/standard-examples/src/main/webapp/xml/If.jsp b/standard-examples/src/main/webapp/xml/If.jsp
new file mode 100644
index 0000000..bd5ede3
--- /dev/null
+++ b/standard-examples/src/main/webapp/xml/If.jsp
@@ -0,0 +1,42 @@
+<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
+
+<html>
+<head>
+    <title>JSTL: XML Support -- Parse / If</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>Parse / If</h3>
+
+<x:parse var="a">
+    <a>
+        <b>
+            <c>
+                foo
+            </c>
+        </b>
+        <d>
+            bar
+        </d>
+    </a>
+</x:parse>
+
+<x:if select="$a//c">
+    $a//c exists
+</x:if>
+
+<br/>
+
+<x:if select="$a/a/d">
+    $a/a/d exists
+</x:if>
+
+<br/>
+
+<x:if select="$a/w/o/l">
+    $a/w/o/l exists
+</x:if>
+
+<hr/>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/xml/Out.jsp b/standard-examples/src/main/webapp/xml/Out.jsp
new file mode 100644
index 0000000..3f25c62
--- /dev/null
+++ b/standard-examples/src/main/webapp/xml/Out.jsp
@@ -0,0 +1,82 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
+
+<html>
+<head>
+    <title>JSTL: XML Support -- Parse / Out</title>
+</head>
+
+<body bgcolor="#FFFFFF">
+
+<h3>&lt;x:parse&gt; / &lt;x:out&gt;</h3>
+
+<c:import var="docString" url="games.xml"/>
+
+<x:parse var="doc" doc="${docString}"/>
+
+<table border=1>
+    <tr>
+        <td valign="top">
+            <pre><c:out value="${docString}"/></pre>
+        </td>
+        <td valign="top">
+            <table border=1>
+                <tr>
+                    <th>Expression</th>
+                    <th>Result</th>
+                </tr>
+                <%--
+                        <tr>
+                          <td>3 + 3</td>
+                          <td><pre><x:out select="3 + 3"/></pre></td>
+                        </tr>
+                --%>
+                <tr>
+                    <td>$doc//sport</td>
+                    <td>
+                        <pre><x:out select="$doc//sport"/></pre>
+                    </td>
+                </tr>
+                <tr>
+                    <td>$doc/games/country/*</td>
+                    <td>
+                        <pre><x:out select="$doc/games/country/*"/></pre>
+                    </td>
+                </tr>
+                <tr>
+                    <td>$doc//*</td>
+                    <td>
+                        <pre><x:out select="$doc//*"/></pre>
+                    </td>
+                </tr>
+                <tr>
+                    <td>$doc/games/country</td>
+                    <td>
+                        <pre><x:out select="$doc/games/country"/></pre>
+                    </td>
+                </tr>
+                <tr>
+                    <td>$doc/games/country[last()]</td>
+                    <td>
+                        <pre><x:out select="$doc/games/country[last()]"/></pre>
+                    </td>
+                </tr>
+                <tr>
+                    <td>$doc//@id</td>
+                    <td>
+                        <pre><x:out select="$doc//@id"/></pre>
+                    </td>
+                </tr>
+                <tr>
+                    <td>$doc//country[@id='Denmark']</td>
+                    <td>
+                        <pre><x:out select="$doc//country[@id='Denmark']"/></pre>
+                    </td>
+                </tr>
+            </table>
+        </td>
+    </tr>
+</table>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/xml/Parse.jsp b/standard-examples/src/main/webapp/xml/Parse.jsp
new file mode 100644
index 0000000..0976ce2
--- /dev/null
+++ b/standard-examples/src/main/webapp/xml/Parse.jsp
@@ -0,0 +1,30 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
+
+<html>
+<head>
+    <title>JSTL: XML Support -- Parse</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>Parse from Objects and URLs</h3>
+
+<c:set var="xmlText">
+    <a>
+        <b>
+            <c>
+                foo
+            </c>
+        </b>
+        <d>
+            bar
+        </d>
+    </a>
+</c:set>
+
+<x:parse var="a" doc="${xmlText}"/>
+
+<x:out select="$a//c"/>
+<x:out select="$a/a/d"/>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/xml/ParseWithEntities.jsp b/standard-examples/src/main/webapp/xml/ParseWithEntities.jsp
new file mode 100644
index 0000000..9b24fc8
--- /dev/null
+++ b/standard-examples/src/main/webapp/xml/ParseWithEntities.jsp
@@ -0,0 +1,27 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
+
+<html>
+<head>
+    <title>JSTL: XML Support -- Parse</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>Parse from Objects and URLs</h3>
+
+<c:set var="xmlText">
+    <?xml version="1.0"?>
+
+    <!DOCTYPE project [
+    <!ENTITY included SYSTEM "included.xml">
+    ]>
+    <root>
+        &included;
+    </root>
+</c:set>
+
+<x:parse var="a" doc="${xmlText}" systemId="foo.xml"/>
+
+<x:out select="$a//*"/>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/xml/Set.jsp b/standard-examples/src/main/webapp/xml/Set.jsp
new file mode 100644
index 0000000..84f6a51
--- /dev/null
+++ b/standard-examples/src/main/webapp/xml/Set.jsp
@@ -0,0 +1,31 @@
+<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
+
+<html>
+<head>
+    <title>JSTL: XML Support -- Parse / Set / Out</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>Parse / Set / Out</h3>
+
+<x:parse var="a">
+    <a>
+        <b>
+            <c>
+                foo
+            </c>
+        </b>
+        <d>
+            <e>
+                bar
+            </e>
+        </d>
+    </a>
+</x:parse>
+
+<x:set var="d" select="$a//d"/>
+<x:out select="$d/e"/>
+
+<hr/>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/xml/Transform.jsp b/standard-examples/src/main/webapp/xml/Transform.jsp
new file mode 100644
index 0000000..e074e9a
--- /dev/null
+++ b/standard-examples/src/main/webapp/xml/Transform.jsp
@@ -0,0 +1,58 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
+
+<html>
+<head>
+    <title>JSTL: XML Support -- Transform</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>Parse / Expr</h3>
+
+<c:set var="xml">
+    <a><b>header!</b></a>
+</c:set>
+
+<c:set var="xsl">
+    <?xml version="1.0"?>
+    <xsl:stylesheet
+            xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+        <xsl:template match="text()">
+            <h1><xsl:value-of select="."/></h1>
+        </xsl:template>
+
+    </xsl:stylesheet>
+</c:set>
+
+Prints "header" as a header:<br/>
+<x:transform doc="${xml}" xslt="${xsl}"/>
+
+<hr/>
+
+Prints "header" in normal size:<br/>
+<x:transform doc="${xml}" xslt="${xsl}" var="doc"/>
+<x:out select="$doc//h1"/>
+
+<hr size="5"/>
+
+<hr/>
+<h3>Transformations using output from XPath expressions</h3>
+
+<x:parse var="xml" doc="${xml}"/>
+<x:set var="miniDoc" select="$xml//b"/>
+<x:transform xslt="${xsl}" doc="${miniDoc}"/>
+<hr/>
+
+<h3>Inline transformations</h3>
+
+<x:transform xslt="${xsl}">
+    <a>
+        <b>
+            <c>Paragraph one!</c>
+            <c>Paragraph foo!</c>
+        </b>
+    </a>
+</x:transform>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/xml/TransformWithInclusion.jsp b/standard-examples/src/main/webapp/xml/TransformWithInclusion.jsp
new file mode 100644
index 0000000..e3b6064
--- /dev/null
+++ b/standard-examples/src/main/webapp/xml/TransformWithInclusion.jsp
@@ -0,0 +1,32 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
+
+<html>
+<head>
+    <title>JSTL: XML Support -- Transform</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>Parse / Expr</h3>
+
+<c:set var="xml">
+<?xml version="1.0"?>
+
+<!DOCTYPE project [
+<!ENTITY included SYSTEM "included.xml">
+]>
+<root>
+    &included;
+</root>
+</c:set>
+
+<c:set var="xsl">
+<?xml version="1.0"?>
+<xsl:stylesheet
+        xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+    <xsl:import href="/xml/includedStylesheet.xsl"/>
+
+</xsl:stylesheet>
+</c:set>
+
+<x:transform doc="${xml}" docSystemId="foo.xml" xslt="${xsl}"/>
diff --git a/standard-examples/src/main/webapp/xml/When.jsp b/standard-examples/src/main/webapp/xml/When.jsp
new file mode 100644
index 0000000..be312c7
--- /dev/null
+++ b/standard-examples/src/main/webapp/xml/When.jsp
@@ -0,0 +1,68 @@
+<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
+
+<html>
+<head>
+    <title>JSTL: XML Support -- Parse / When</title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>Parse / When</h3>
+
+<x:parse var="a">
+    <a>
+        <b>
+            <c foo="bar">
+                foo
+            </c>
+        </b>
+        <d>
+            bar
+        </d>
+    </a>
+</x:parse>
+
+<x:choose>
+    <x:when select='$a//c[@foo="bar"]'>
+        @foo = bar
+    </x:when>
+    <x:when select='$a//c[@foo="foo"]'>
+        @foo = foo
+    </x:when>
+    <x:otherwise>
+        @foo not recognized
+    </x:otherwise>
+</x:choose>
+
+<br/>
+
+<x:choose>
+    <x:when select='$a//c[@foo="foo"]'>
+        @foo = foo
+    </x:when>
+    <x:when select='$a//c[@foo="bar"]'>
+        @foo = bar
+    </x:when>
+    <x:otherwise>
+        @foo not recognized
+    </x:otherwise>
+</x:choose>
+
+<br/>
+
+<x:choose>
+    <x:when select='$a//c[@foo="barr"]'>
+        @foo = barr
+    </x:when>
+    <x:when select='$a//c[@foo="fooo"]'>
+        @foo = fooo
+    </x:when>
+    <x:otherwise>
+        @foo not recognized
+    </x:otherwise>
+</x:choose>
+
+<br/>
+
+<hr/>
+
+</body>
+</html>
diff --git a/standard-examples/src/main/webapp/xml/games.xml b/standard-examples/src/main/webapp/xml/games.xml
new file mode 100644
index 0000000..e528b69
--- /dev/null
+++ b/standard-examples/src/main/webapp/xml/games.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<games>
+    <country id="Luxembourg">
+        <athlete>
+            <name>Lux 1</name>
+            <sport>swimming</sport>
+            <age>23</age>
+            <gender>M</gender>
+        </athlete>
+        <athlete>
+            <name>Lux 2</name>
+            <sport>wrestling</sport>
+            <age>31</age>
+            <gender>M</gender>
+        </athlete>
+    </country>
+    <country id="Denmark">
+        <athlete>
+            <name>Den 1</name>
+            <sport>cycling</sport>
+            <age>18</age>
+            <gender>F</gender>
+        </athlete>
+        <athlete>
+            <name>Den 2</name>
+            <sport>sailing</sport>
+            <age>27</age>
+            <gender>M</gender>
+        </athlete>
+    </country>
+</games>
\ No newline at end of file
diff --git a/standard-examples/src/main/webapp/xml/included.xml b/standard-examples/src/main/webapp/xml/included.xml
new file mode 100644
index 0000000..5724290
--- /dev/null
+++ b/standard-examples/src/main/webapp/xml/included.xml
@@ -0,0 +1,3 @@
+<a>
+    <b>YES!</b>
+</a>
diff --git a/standard-examples/src/main/webapp/xml/includedStylesheet.xsl b/standard-examples/src/main/webapp/xml/includedStylesheet.xsl
new file mode 100644
index 0000000..ff71c51
--- /dev/null
+++ b/standard-examples/src/main/webapp/xml/includedStylesheet.xsl
@@ -0,0 +1,10 @@
+<xsl:stylesheet
+        xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+    <xsl:template match="text()">
+        <h1>
+            <xsl:value-of select="."/>
+        </h1>
+    </xsl:template>
+
+</xsl:stylesheet>
diff --git a/standard-examples/src/main/webapp/xml/index.html b/standard-examples/src/main/webapp/xml/index.html
new file mode 100644
index 0000000..d6aaa0d
--- /dev/null
+++ b/standard-examples/src/main/webapp/xml/index.html
@@ -0,0 +1,93 @@
+<html><!-- #BeginTemplate "/Templates/ExamplesTemplate.dwt" -->
+<head>
+    <!-- #BeginEditable "doctitle" -->
+    <title>JSTL: XML Tags Examples</title>
+    <!-- #EndEditable -->
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+    <link rel="stylesheet" href="../global.css" type="text/css">
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+<table width="100%" border="0" cellpadding="5">
+    <tr>
+        <td height="0"><font color="#000099"><b>standard taglib &#149; implementation
+            of the JSP Standard Tag Library</b></font></td>
+    </tr>
+    <tr>
+        <td bgcolor="#CCCCFF"><font size="-1">Examples &nbsp;&nbsp;&nbsp;&nbsp;<a href="../index.html">Introduction</a>
+            &#149; <a href="../elsupport/index.html">General Purpose</a>
+            &#149; <a href="../conditionals/index.html">Conditionals</a>
+            &#149; <a href="../iterators/index.html">Iterators</a> &#149;
+            <a href="../import/index.jsp">Import</a> &#149; <a href="../format/index.html">I18N
+                & Formatting</a> &#149; <a href="index.html">XML</a>
+            &#149; <a href="../sql/index.jsp">SQL</a> &#149; <a href="../functions/index.html">Functions</a>
+            &#149; <a href="../tlv/index.html">TLV</a>
+        </font></td>
+    </tr>
+</table>
+<!-- #BeginEditable "body" -->
+<h2>XML Examples</h2>
+
+<h3>Out &nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/xml/Out.jsp"> <img src="../images/code.gif" width="24"
+                                                                             height="24" border="0"></a>
+    <a href="Out.jsp"> <img src="../images/execute.gif" width="24" height="24" border="0"></a></h3>
+Retrieving a String from a parsed XML document <br/>
+
+<h3>Filter &nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/xml/Filter.jsp">
+    <img src="../images/code.gif" width="24" height="24" border="0"></a> <a href="Filter.jsp">
+    <img src="../images/execute.gif" width="24" height="24" border="0"></a></h3>
+Applying a SAX XMLFilter object to a document before parsing <br/>
+
+<h3>ForEach &nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/xml/ForEach.jsp">
+    <img src="../images/code.gif" width="24" height="24" border="0"></a> <a href="ForEach.jsp">
+    <img src="../images/execute.gif" width="24" height="24" border="0"></a></h3>
+Iterating over XML nodes <br/>
+
+<h3>If &nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/xml/If.jsp"> <img src="../images/code.gif" width="24"
+                                                                           height="24" border="0"></a>
+    <a href="If.jsp"> <img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Basing a decision on the status of an XML document <br/>
+
+<h3>Parse &nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/xml/Parse.jsp"> <img src="../images/code.gif" width="24"
+                                                                                 height="24" border="0"></a>
+    <a href="Parse.jsp"> <img src="../images/execute.gif" width="24" height="24"
+                              border="0"></a></h3>
+Parsing XML documents directly from Objects and from URLs. <br/>
+
+<h3>Set &nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/xml/Set.jsp"> <img src="../images/code.gif" width="24"
+                                                                             height="24" border="0"></a>
+    <a href="Set.jsp"> <img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Storing an object resulting from an XPath expression <br/>
+
+<h3>Transform &nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/xml/Transform.jsp">
+    <img src="../images/code.gif" width="24" height="24" border="0"></a> <a href="Transform.jsp">
+    <img src="../images/execute.gif" width="24" height="24" border="0"></a></h3>
+Applying XSLT transformations <br/>
+
+<h3>When &nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/xml/When.jsp"> <img src="../images/code.gif" width="24"
+                                                                               height="24" border="0"></a>
+    <a href="When.jsp"> <img src="../images/execute.gif" width="24" height="24" border="0"></a>
+</h3>
+Mutually exclusive conditionals based on the status of an XML document <br/>
+
+<h3>Parse with entities &nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/xml/ParseWithEntities.jsp">
+    <img src="../images/code.gif" width="24" height="24" border="0"></a> <a href="ParseWithEntities.jsp">
+    <img src="../images/execute.gif" width="24" height="24" border="0"></a></h3>
+Parsing a document with relative entity references (using systemId) <br/>
+
+<h3>Transform with inclusion &nbsp;&nbsp; <a href="../ShowSource.jsp?filename=/xml/TransformWithInclusion.jsp">
+    <img src="../images/code.gif" width="24" height="24" border="0"></a> <a href="TransformWithInclusion.jsp">
+    <img src="../images/execute.gif" width="24" height="24" border="0"></a></h3>
+Transformations using XSLT tags like &lt;xsl:include&gt; (with xsltSystemId) <br/>
+<!-- #EndEditable -->
+<hr noshade color="#000099">
+<table width="100%" border="0" cellpadding="5">
+    <tr>
+        <td height="24"><font color="#000099"><b>standard taglib &#149; implementation
+            of the JSP Standard Tag Library</b></font></td>
+    </tr>
+</table>
+</body>
+<!-- #EndTemplate --></html>