初始提交
diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/FooBean.java.html b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/FooBean.java.html
new file mode 100644
index 0000000..0b15181
--- /dev/null
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/FooBean.java.html
@@ -0,0 +1,38 @@
+<html><body><pre>

+/*

+* 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 jsp2.examples;

+

+public class FooBean {

+    private String bar;

+    

+    public FooBean() {

+        bar = "Initial value";

+    }

+    

+    public String getBar() {

+        return this.bar;

+    }

+    

+    public void setBar(String bar) {

+        this.bar = bar;

+    }

+    

+}

+</pre></body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/HelloWorldSimpleTag.java.html b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/HelloWorldSimpleTag.java.html
new file mode 100644
index 0000000..c409839
--- /dev/null
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/HelloWorldSimpleTag.java.html
@@ -0,0 +1,34 @@
+<html><body><pre>

+/*

+* 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 jsp2.examples.simpletag;

+

+import javax.servlet.jsp.JspException;

+import javax.servlet.jsp.tagext.SimpleTagSupport;

+import java.io.IOException;

+

+/**

+ * SimpleTag handler that prints "Hello, world!"

+ */

+public class HelloWorldSimpleTag extends SimpleTagSupport {

+    public void doTag() throws JspException, IOException {

+	getJspContext().getOut().write( "Hello, world!" );

+    }

+}

+</pre></body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/ShuffleSimpleTag.java.html b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/ShuffleSimpleTag.java.html
new file mode 100644
index 0000000..1b66d06
--- /dev/null
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/ShuffleSimpleTag.java.html
@@ -0,0 +1,83 @@
+<html><body><pre>

+/*

+* 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 jsp2.examples.simpletag;

+

+import javax.servlet.jsp.JspException;

+import javax.servlet.jsp.tagext.JspFragment;

+import javax.servlet.jsp.tagext.SimpleTagSupport;

+import java.io.IOException;

+

+/**

+ * SimpleTag handler that accepts takes three attributes of type

+ * JspFragment and invokes then in a random order.

+ */

+public class ShuffleSimpleTag extends SimpleTagSupport {

+    private JspFragment fragment1;

+    private JspFragment fragment2;

+    private JspFragment fragment3;

+

+    public void doTag() throws JspException, IOException {

+        switch( (int)(Math.random() * 6) ) {

+            case 0:

+                fragment1.invoke( null );

+                fragment2.invoke( null );

+                fragment3.invoke( null );

+                break;

+            case 1:

+                fragment1.invoke( null );

+                fragment3.invoke( null );

+                fragment2.invoke( null );

+                break;

+            case 2:

+                fragment2.invoke( null );

+                fragment1.invoke( null );

+                fragment3.invoke( null );

+                break;

+            case 3:

+                fragment2.invoke( null );

+                fragment3.invoke( null );

+                fragment1.invoke( null );

+                break;

+            case 4:

+                fragment3.invoke( null );

+                fragment1.invoke( null );

+                fragment2.invoke( null );

+                break;

+            case 5:

+                fragment3.invoke( null );

+                fragment2.invoke( null );

+                fragment1.invoke( null );

+                break;

+        }

+    }

+

+    public void setFragment1( JspFragment fragment1 ) {

+        this.fragment1 = fragment1;

+    }

+    

+    public void setFragment2( JspFragment fragment2 ) {

+        this.fragment2 = fragment2;

+    }

+    

+    public void setFragment3( JspFragment fragment3 ) {

+        this.fragment3 = fragment3;

+    }

+}

+</pre></body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/TileSimpleTag.java.html b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/TileSimpleTag.java.html
new file mode 100644
index 0000000..4453222
--- /dev/null
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/TileSimpleTag.java.html
@@ -0,0 +1,48 @@
+<html><body><pre>

+/*

+* 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 jsp2.examples.simpletag;

+

+import javax.servlet.jsp.JspException;

+import javax.servlet.jsp.tagext.SimpleTagSupport;

+import java.io.IOException;

+

+/**

+ * Displays a tile as a single cell in a table.

+ */

+public class TileSimpleTag extends SimpleTagSupport {

+    private String color;

+    private String label;

+

+    public void doTag() throws JspException, IOException {

+	getJspContext().getOut().write( 

+	    "&lt;td width=\"32\" height=\"32\" bgcolor=\"" + this.color + 

+	    "\">&lt;font color=\"#ffffff\">&lt;center>" + this.label + 

+                "&lt;/center>&lt;/font>&lt;/td>" );

+    }

+

+    public void setColor( String color ) {

+        this.color = color;

+    }

+    

+    public void setLabel( String label ) {

+        this.label = label;

+    }

+}

+</pre></body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/jspattribute.html b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/jspattribute.html
new file mode 100644
index 0000000..b949da9
--- /dev/null
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/jspattribute.html
@@ -0,0 +1,37 @@
+<html>

+<!--

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

+-->

+<head>

+<title>View Source Code</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="jspattribute.jsp"><img src="../../images/execute.gif" align="right" border="0"></a>

+<a href="../../index.html"><img src="../../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h3><a href="jspattribute.jsp.html">Source Code for jspattribute.jsp<font color="#0000FF"></a>

+  </font> </h3>

+

+<h3><a href="HelloWorldSimpleTag.java.html">Source Code for HelloWorldSimpleTag.java<font color="#0000FF"></a>

+  </font> </h3>

+

+<h3><a href="FooBean.java.html">Source Code for FooBean.java<font color="#0000FF"></a>

+  </font> </h3>

+

+</body>

+</html>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/jspattribute.jsp b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/jspattribute.jsp
new file mode 100644
index 0000000..64b6d6e
--- /dev/null
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/jspattribute.jsp
@@ -0,0 +1,46 @@
+<!--

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

+-->

+<%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%>

+

+<html>

+  <head>

+    <title>JSP 2.0 Examples - jsp:attribute and jsp:body</title>

+  </head>

+  <body>

+    <h1>JSP 2.0 Examples - jsp:attribute and jsp:body</h1>

+    <hr>

+    <p>The new &lt;jsp:attribute&gt; and &lt;jsp:body&gt; 

+    standard actions can be used to specify the value of any standard

+    action or custom action attribute.</p>

+    <p>This example uses the &lt;jsp:attribute&gt;

+    standard action to use the output of a custom action invocation

+    (one that simply outputs "Hello, World!") to set the value of a

+    bean property.  This would normally require an intermediary

+    step, such as using JSTL's &lt;c:set&gt; action.</p>

+    <br>

+    <jsp:useBean id="foo" class="jsp2.examples.FooBean">

+      Bean created!  Setting foo.bar...<br>

+      <jsp:setProperty name="foo" property="bar">

+        <jsp:attribute name="value">

+	  <my:helloWorld/>

+        </jsp:attribute>

+      </jsp:setProperty>

+    </jsp:useBean>

+    <br>

+    Result: ${foo.bar}

+  </body>

+</html>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/jspattribute.jsp.html b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/jspattribute.jsp.html
new file mode 100644
index 0000000..eb3a927
--- /dev/null
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/jspattribute.jsp.html
@@ -0,0 +1,48 @@
+<html><body><pre>

+&lt;!--

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

+-->

+&lt;%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%>

+

+&lt;html>

+  &lt;head>

+    &lt;title>JSP 2.0 Examples - jsp:attribute and jsp:body&lt;/title>

+  &lt;/head>

+  &lt;body>

+    &lt;h1>JSP 2.0 Examples - jsp:attribute and jsp:body&lt;/h1>

+    &lt;hr>

+    &lt;p>The new &amp;lt;jsp:attribute&amp;gt; and &amp;lt;jsp:body&amp;gt; 

+    standard actions can be used to specify the value of any standard

+    action or custom action attribute.&lt;/p>

+    &lt;p>This example uses the &amp;lt;jsp:attribute&amp;gt;

+    standard action to use the output of a custom action invocation

+    (one that simply outputs "Hello, World!") to set the value of a

+    bean property.  This would normally require an intermediary

+    step, such as using JSTL's &amp;lt;c:set&amp;gt; action.&lt;/p>

+    &lt;br>

+    &lt;jsp:useBean id="foo" class="jsp2.examples.FooBean">

+      Bean created!  Setting foo.bar...&lt;br>

+      &lt;jsp:setProperty name="foo" property="bar">

+        &lt;jsp:attribute name="value">

+	  &lt;my:helloWorld/>

+        &lt;/jsp:attribute>

+      &lt;/jsp:setProperty>

+    &lt;/jsp:useBean>

+    &lt;br>

+    Result: ${foo.bar}

+  &lt;/body>

+&lt;/html>

+</pre></body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/shuffle.html b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/shuffle.html
new file mode 100644
index 0000000..b7a4cb6
--- /dev/null
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/shuffle.html
@@ -0,0 +1,37 @@
+<html>

+<!--

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

+-->

+<head>

+<title>View Source Code</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="shuffle.jsp"><img src="../../images/execute.gif" align="right" border="0"></a>

+<a href="../../index.html"><img src="../../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h3><a href="shuffle.jsp.html">Source Code for shuffle.jsp<font color="#0000FF"></a>

+  </font> </h3>

+

+<h3><a href="ShuffleSimpleTag.java.html">Source Code for ShuffleSimpleTag.java<font color="#0000FF"></a>

+  </font> </h3>

+

+<h3><a href="TileSimpleTag.java.html">Source Code for TileSimpleTag.java<font color="#0000FF"></a>

+  </font> </h3>

+

+</body>

+</html>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/shuffle.jsp b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/shuffle.jsp
new file mode 100644
index 0000000..2a318a7
--- /dev/null
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/shuffle.jsp
@@ -0,0 +1,90 @@
+<!--

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

+-->

+<%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%>

+

+<html>

+  <head>

+    <title>JSP 2.0 Examples - Shuffle Example</title>

+  </head>

+  <body>

+    <h1>JSP 2.0 Examples - Shuffle Example</h1>

+    <hr>

+    <p>Try reloading the page a few times.  Both the rows and the columns

+    are shuffled and appear different each time.</p>

+    <p>Here's how the code works.  The SimpleTag handler called 

+    &lt;my:shuffle&gt; accepts three attributes.  Each attribute is a 

+    JSP Fragment, meaning it is a fragment of JSP code that can be

+    dynamically executed by the shuffle tag handler on demand.  The 

+    shuffle tag handler executes the three fragments in a random order.

+    To shuffle both the rows and the columns, the shuffle tag is used

+    with itself as a parameter.</p>

+    <hr>

+    <blockquote>

+     <font color="#ffffff">

+      <table>

+        <my:shuffle>

+          <jsp:attribute name="fragment1">

+            <tr>

+              <my:shuffle>

+                <jsp:attribute name="fragment1">

+                  <my:tile color="#ff0000" label="A"/>

+                </jsp:attribute>

+                <jsp:attribute name="fragment2">

+                  <my:tile color="#00ff00" label="B"/>

+                </jsp:attribute>

+                <jsp:attribute name="fragment3">

+                  <my:tile color="#0000ff" label="C"/>

+                </jsp:attribute>

+              </my:shuffle>

+            </tr>

+          </jsp:attribute>

+          <jsp:attribute name="fragment2">

+            <tr>

+              <my:shuffle>

+                <jsp:attribute name="fragment1">

+                  <my:tile color="#ff0000" label="1"/>

+                </jsp:attribute>

+                <jsp:attribute name="fragment2">

+                  <my:tile color="#00ff00" label="2"/>

+                </jsp:attribute>

+                <jsp:attribute name="fragment3">

+                  <my:tile color="#0000ff" label="3"/>

+                </jsp:attribute>

+              </my:shuffle>

+            </tr>

+          </jsp:attribute>

+          <jsp:attribute name="fragment3">

+            <tr>

+              <my:shuffle>

+                <jsp:attribute name="fragment1">

+                  <my:tile color="#ff0000" label="!"/>

+                </jsp:attribute>

+                <jsp:attribute name="fragment2">

+                  <my:tile color="#00ff00" label="@"/>

+                </jsp:attribute>

+                <jsp:attribute name="fragment3">

+                  <my:tile color="#0000ff" label="#"/>

+                </jsp:attribute>

+              </my:shuffle>

+            </tr>

+          </jsp:attribute>

+        </my:shuffle>

+      </table>

+     </font>

+    </blockquote>

+  </body>

+</html>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/shuffle.jsp.html b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/shuffle.jsp.html
new file mode 100644
index 0000000..9329285
--- /dev/null
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/shuffle.jsp.html
@@ -0,0 +1,92 @@
+<html><body><pre>

+&lt;!--

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

+-->

+&lt;%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%>

+

+&lt;html>

+  &lt;head>

+    &lt;title>JSP 2.0 Examples - Shuffle Example&lt;/title>

+  &lt;/head>

+  &lt;body>

+    &lt;h1>JSP 2.0 Examples - Shuffle Example&lt;/h1>

+    &lt;hr>

+    &lt;p>Try reloading the page a few times.  Both the rows and the columns

+    are shuffled and appear different each time.&lt;/p>

+    &lt;p>Here's how the code works.  The SimpleTag handler called 

+    &amp;lt;my:shuffle&amp;gt; accepts three attributes.  Each attribute is a 

+    JSP Fragment, meaning it is a fragment of JSP code that can be

+    dynamically executed by the shuffle tag handler on demand.  The 

+    shuffle tag handler executes the three fragments in a random order.

+    To shuffle both the rows and the columns, the shuffle tag is used

+    with itself as a parameter.&lt;/p>

+    &lt;hr>

+    &lt;blockquote>

+     &lt;font color="#ffffff">

+      &lt;table>

+        &lt;my:shuffle>

+          &lt;jsp:attribute name="fragment1">

+            &lt;tr>

+              &lt;my:shuffle>

+                &lt;jsp:attribute name="fragment1">

+                  &lt;my:tile color="#ff0000" label="A"/>

+                &lt;/jsp:attribute>

+                &lt;jsp:attribute name="fragment2">

+                  &lt;my:tile color="#00ff00" label="B"/>

+                &lt;/jsp:attribute>

+                &lt;jsp:attribute name="fragment3">

+                  &lt;my:tile color="#0000ff" label="C"/>

+                &lt;/jsp:attribute>

+              &lt;/my:shuffle>

+            &lt;/tr>

+          &lt;/jsp:attribute>

+          &lt;jsp:attribute name="fragment2">

+            &lt;tr>

+              &lt;my:shuffle>

+                &lt;jsp:attribute name="fragment1">

+                  &lt;my:tile color="#ff0000" label="1"/>

+                &lt;/jsp:attribute>

+                &lt;jsp:attribute name="fragment2">

+                  &lt;my:tile color="#00ff00" label="2"/>

+                &lt;/jsp:attribute>

+                &lt;jsp:attribute name="fragment3">

+                  &lt;my:tile color="#0000ff" label="3"/>

+                &lt;/jsp:attribute>

+              &lt;/my:shuffle>

+            &lt;/tr>

+          &lt;/jsp:attribute>

+          &lt;jsp:attribute name="fragment3">

+            &lt;tr>

+              &lt;my:shuffle>

+                &lt;jsp:attribute name="fragment1">

+                  &lt;my:tile color="#ff0000" label="!"/>

+                &lt;/jsp:attribute>

+                &lt;jsp:attribute name="fragment2">

+                  &lt;my:tile color="#00ff00" label="@"/>

+                &lt;/jsp:attribute>

+                &lt;jsp:attribute name="fragment3">

+                  &lt;my:tile color="#0000ff" label="#"/>

+                &lt;/jsp:attribute>

+              &lt;/my:shuffle>

+            &lt;/tr>

+          &lt;/jsp:attribute>

+        &lt;/my:shuffle>

+      &lt;/table>

+     &lt;/font>

+    &lt;/blockquote>

+  &lt;/body>

+&lt;/html>

+</pre></body></html>