You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by gr...@apache.org on 2007/09/24 18:52:30 UTC

svn commit: r578875 - in /tapestry/tapestry5/trunk/tapestry-core/src: main/java/org/apache/tapestry/internal/services/ site/apt/guide/ test/java/org/apache/tapestry/internal/services/ test/resources/org/apache/tapestry/internal/services/

Author: gredler
Date: Mon Sep 24 09:52:22 2007
New Revision: 578875

URL: http://svn.apache.org/viewvc?rev=578875&view=rev
Log:
TAPESTRY-1777: Allow HTML 4 doctypes to be used in component templates.

Added:
    tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry/internal/services/html4_frameset_doctype.html
    tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry/internal/services/html4_strict_doctype.html
    tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry/internal/services/html4_transitional_doctype.html
Modified:
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/InternalModule.java
    tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/templates.apt
    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/TemplateParserImplTest.java
    tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry/internal/services/xhtml1_frameset_doctype.html
    tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry/internal/services/xhtml1_strict_doctype.html
    tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry/internal/services/xhtml1_transitional_doctype.html

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/InternalModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/InternalModule.java?rev=578875&r1=578874&r2=578875&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/InternalModule.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/InternalModule.java Mon Sep 24 09:52:22 2007
@@ -89,20 +89,18 @@
         binder.bind(RequestEncodingInitializer.class, RequestEncodingInitializerImpl.class);
     }
 
-    public static void contributeTemplateParser(MappedConfiguration<String, URL> configuration)
+    public static void contributeTemplateParser(MappedConfiguration<String, URL> config)
     {
         Class c = InternalModule.class;
-        configuration.add("-//W3C//DTD XHTML 1.0 Strict//EN", c.getResource("xhtml1-strict.dtd"));
-        configuration.add("-//W3C//DTD XHTML 1.0 Transitional//EN", c
-                .getResource("xhtml1-transitional.dtd"));
-        configuration.add("-//W3C//DTD XHTML 1.0 Frameset//EN", c
-                .getResource("xhtml1-frameset.dtd"));
-        configuration
-                .add("-//W3C//ENTITIES Latin 1 for XHTML//EN", c.getResource("xhtml-lat1.ent"));
-        configuration.add("-//W3C//ENTITIES Symbols for XHTML//EN", c
-                .getResource("xhtml-symbol.ent"));
-        configuration.add("-//W3C//ENTITIES Special for XHTML//EN", c
-                .getResource("xhtml-special.ent"));
+        config.add("-//W3C//DTD XHTML 1.0 Strict//EN", c.getResource("xhtml1-strict.dtd"));
+        config.add("-//W3C//DTD XHTML 1.0 Transitional//EN", c.getResource("xhtml1-transitional.dtd"));
+        config.add("-//W3C//DTD XHTML 1.0 Frameset//EN", c.getResource("xhtml1-frameset.dtd"));
+        config.add("-//W3C//DTD HTML 4.01//EN", c.getResource("xhtml1-strict.dtd"));
+        config.add("-//W3C//DTD HTML 4.01 Transitional//EN", c.getResource("xhtml1-transitional.dtd"));
+        config.add("-//W3C//DTD HTML 4.01 Frameset//EN", c.getResource("xhtml1-frameset.dtd"));
+        config.add("-//W3C//ENTITIES Latin 1 for XHTML//EN", c.getResource("xhtml-lat1.ent"));
+        config.add("-//W3C//ENTITIES Symbols for XHTML//EN", c.getResource("xhtml-symbol.ent"));
+        config.add("-//W3C//ENTITIES Special for XHTML//EN", c.getResource("xhtml-special.ent"));
     }
 
     /**
@@ -127,7 +125,9 @@
         // contribution based on the path.
 
         configuration.add("tapestry.scriptaculous", "classpath:${tapestry.scriptaculous.path}");
-        configuration.add("tapestry.scriptaculous.path", "org/apache/tapestry/scriptaculous_1_7_1_beta_3");
+        configuration.add(
+                "tapestry.scriptaculous.path",
+                "org/apache/tapestry/scriptaculous_1_7_1_beta_3");
     }
 
     private final ComponentInstantiatorSource _componentInstantiatorSource;
@@ -549,7 +549,7 @@
         };
 
         configuration.add("SetRequestEncoding", filter, "before:*");
-        
+
         configuration.add("Ajax", new AjaxFilter());
     }
 }

Modified: tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/templates.apt
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/templates.apt?rev=578875&r1=578874&r2=578875&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/templates.apt (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/templates.apt Mon Sep 24 09:52:22 2007
@@ -58,14 +58,18 @@
 
   As mentioned above, component templates are well-formed XML documents. This means that if you want to use any
   {{{http://www.w3.org/TR/html401/sgml/entities.html}HTML entities}} (such as &amp; &nbsp; &lt; &gt; or &copy;),
-  you must use an {{{http://www.w3.org/QA/2002/04/valid-dtd-list.html}HTML or XHTML doctype}} in your template. Unfortunately,
-  HTML DTDs aren't valid XML DTDs, causing problems for XML parsers. The result is that you cannot use HTML doctypes in
-  component templates -- you must use XHTML doctypes.
-
-  If you do choose to use XHTML doctypes in your templates, they will be passed
-  on to the client in the resultant (X)HTML. Note that if your pages are composed of multiple components, each with a template, and
-  each template contains a doctype declaration, only the first doctype encountered by the template parser will be passed on to the
-  client. The following two doctypes are the most common XHTML doctypes:
+  you must use an {{{http://www.w3.org/QA/2002/04/valid-dtd-list.html}HTML or XHTML doctype}} in your template. If
+  you choose to use (X)HTML doctypes in your templates, they will be passed on to the client in the resultant (X)HTML.
+  Note that if your pages are composed of multiple components, each with a template, and each template contains a
+  doctype declaration, only the first doctype encountered by the template parser will be passed on to the client.
+
+  It should also be noted that even though XHTML DTDs are valid XML DTDs, HTML DTDs aren't valid XML DTDs. This means
+  that HTML doctypes cannot be used by XML parsers. Tapestry works around this limitation internally by using XHTML DTDs
+  to parse templates that use HTML DTDs. This internal mapping is possible because XHTML 1.0 is nothing more than "a
+  reformulation of the three HTML 4 document types as applications of XML 1.0," {{{http://www.w3.org/TR/xhtml1/#xhtml}as per the W3C}}.
+  Don't worry though -- the original HTML 4 doctype will still be emitted to the client!
+
+ The following doctypes are the most common (X)HTML doctypes:
 
 +----+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
@@ -73,6 +77,12 @@
 
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+   "http://www.w3.org/TR/html4/strict.dtd">
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+   "http://www.w3.org/TR/html4/loose.dtd">
 +----+
 
 Tapestry Namespace

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/TemplateParserImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/TemplateParserImplTest.java?rev=578875&r1=578874&r2=578875&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/TemplateParserImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/TemplateParserImplTest.java Mon Sep 24 09:52:22 2007
@@ -605,7 +605,7 @@
         assertEquals(t.getText().trim(), "<Test>");
     }
 
-    @DataProvider(name = "doctype_added_correctly_data")
+    @DataProvider(name = "doctype_token_added_correctly_data")
     public Object[][] doctype_token_added_correctly_data()
     {
         return new Object[][]
@@ -617,11 +617,18 @@
                         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" },
                 { "xhtml1_frameset_doctype.html", "html", "-//W3C//DTD XHTML 1.0 Frameset//EN",
                         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd" },
+                { "html4_strict_doctype.html", "HTML", "-//W3C//DTD HTML 4.01//EN",
+                        "http://www.w3.org/TR/html4/strict.dtd" },
+                { "html4_transitional_doctype.html", "HTML",
+                        "-//W3C//DTD HTML 4.01 Transitional//EN",
+                        "http://www.w3.org/TR/html4/loose.dtd" },
+                { "html4_frameset_doctype.html", "HTML", "-//W3C//DTD HTML 4.01 Frameset//EN",
+                        "http://www.w3.org/TR/html4/frameset.dtd" },
                 { "system_doctype.xml", "foo", null,
-                        "src/test/resources/org/apache/tapestry/internal/services/simple.dtd" }, };
+                        "src/test/resources/org/apache/tapestry/internal/services/simple.dtd" } };
     }
 
-    @Test(dataProvider = "doctype_added_correctly_data")
+    @Test(dataProvider = "doctype_token_added_correctly_data")
     public void doctype_added_correctly(String fileName, String name, String publicId,
             String systemId) throws Exception
     {

Added: tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry/internal/services/html4_frameset_doctype.html
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry/internal/services/html4_frameset_doctype.html?rev=578875&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry/internal/services/html4_frameset_doctype.html (added)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry/internal/services/html4_frameset_doctype.html Mon Sep 24 09:52:22 2007
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC
+	"-//W3C//DTD HTML 4.01 Frameset//EN"
+	"http://www.w3.org/TR/html4/frameset.dtd">
+
+<html>
+	<head>
+		<title>HTML 4 Frameset Test</title>
+	</head>
+	<body>
+		&lt;Test&gt;
+	</body>
+</html>

Added: tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry/internal/services/html4_strict_doctype.html
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry/internal/services/html4_strict_doctype.html?rev=578875&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry/internal/services/html4_strict_doctype.html (added)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry/internal/services/html4_strict_doctype.html Mon Sep 24 09:52:22 2007
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC
+	"-//W3C//DTD HTML 4.01//EN"
+	"http://www.w3.org/TR/html4/strict.dtd">
+
+<html>
+	<head>
+		<title>HTML 4 Strict Test</title>
+	</head>
+	<body>
+		&lt;Test&gt;
+	</body>
+</html>

Added: tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry/internal/services/html4_transitional_doctype.html
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry/internal/services/html4_transitional_doctype.html?rev=578875&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry/internal/services/html4_transitional_doctype.html (added)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry/internal/services/html4_transitional_doctype.html Mon Sep 24 09:52:22 2007
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC
+	"-//W3C//DTD HTML 4.01 Transitional//EN"
+	"http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+	<head>
+		<title>HTML 4 Transitional Test</title>
+	</head>
+	<body>
+		&lt;Test&gt;
+	</body>
+</html>

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry/internal/services/xhtml1_frameset_doctype.html
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry/internal/services/xhtml1_frameset_doctype.html?rev=578875&r1=578874&r2=578875&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry/internal/services/xhtml1_frameset_doctype.html (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry/internal/services/xhtml1_frameset_doctype.html Mon Sep 24 09:52:22 2007
@@ -4,7 +4,7 @@
 
 <html>
 	<head>
-		<title>HTML 4 Strict Test</title>
+		<title>XHTML 1.0 Frameset Test</title>
 	</head>
 	<body>
 		&lt;Test&gt;

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry/internal/services/xhtml1_strict_doctype.html
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry/internal/services/xhtml1_strict_doctype.html?rev=578875&r1=578874&r2=578875&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry/internal/services/xhtml1_strict_doctype.html (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry/internal/services/xhtml1_strict_doctype.html Mon Sep 24 09:52:22 2007
@@ -4,7 +4,7 @@
 
 <html>
 	<head>
-		<title>HTML 4 Strict Test</title>
+		<title>XHTML 1.0 Strict Test</title>
 	</head>
 	<body>
 		&lt;Test&gt;

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry/internal/services/xhtml1_transitional_doctype.html
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry/internal/services/xhtml1_transitional_doctype.html?rev=578875&r1=578874&r2=578875&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry/internal/services/xhtml1_transitional_doctype.html (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry/internal/services/xhtml1_transitional_doctype.html Mon Sep 24 09:52:22 2007
@@ -4,7 +4,7 @@
 
 <html>
 	<head>
-		<title>HTML 4 Strict Test</title>
+		<title>XHTML 1.0 Transitional Test</title>
 	</head>
 	<body>
 		&lt;Test&gt;