diff --git a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/GenerateFaceletsTaglibsMojo.java b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/GenerateFaceletsTaglibsMojo.java
index 0e82ce0..627d4d9 100644
--- a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/GenerateFaceletsTaglibsMojo.java
+++ b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/GenerateFaceletsTaglibsMojo.java
@@ -163,10 +163,13 @@
 
           TransformerFactory transFactory = TransformerFactory.newInstance();
           Transformer identity = transFactory.newTransformer();
-          identity.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC,
-                                     _FACELETS_TAG_LIBRARY_DOCTYPE_PUBLIC);
-          identity.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM,
-                                     _FACELETS_TAG_LIBRARY_DOCTYPE_SYSTEM);
+          if (!_isJSF20PLus())
+          {
+            identity.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC,
+                                       _FACELETS_TAG_LIBRARY_DOCTYPE_PUBLIC);
+            identity.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM,
+                                       _FACELETS_TAG_LIBRARY_DOCTYPE_SYSTEM);
+          }
           identity.transform(mergedSource, mergedResult);
 
           targetFile.setReadOnly();
@@ -247,10 +250,28 @@
   {
     stream.writeStartDocument("1.0");
     stream.writeCharacters("\n");
-    stream.writeDTD(dtd);
-    stream.writeCharacters("\n");
+    
+    boolean isJSF20PLus = _isJSF20PLus();
+    
+    String ns = _FACELETS_NAMESPACE_URI_20;
+    
+    if (!isJSF20PLus)
+    {
+      ns = _FACELETS_NAMESPACE_URI;
+      stream.writeDTD(dtd);
+      stream.writeCharacters("\n");
+    }
+    
     stream.writeStartElement("facelet-taglib");
-    stream.writeDefaultNamespace(_FACELETS_NAMESPACE_URI);
+    stream.writeDefaultNamespace(ns);
+    
+    if (isJSF20PLus)
+    {
+      stream.writeNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
+      stream.writeAttribute("http://www.w3.org/2001/XMLSchema-instance", "schemaLocation",
+                            "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd");
+      stream.writeAttribute("version", "2.0");
+    }
     stream.writeCharacters("\n  ");
   }
 
@@ -636,6 +657,9 @@
 
   static private final String _FACELETS_NAMESPACE_URI =
               "http://java.sun.com/JSF/Facelet";
+  
+  static private final String _FACELETS_NAMESPACE_URI_20 =
+              "http://java.sun.com/xml/ns/javaee";
 
   static final private String _FACELETS_TAG_LIBRARY_DOCTYPE_PUBLIC =
               "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN";
