You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ta...@apache.org on 2021/04/13 12:06:53 UTC

[myfaces] branch master updated: MYFACES-4388 Faces 4.0: rename xmlns.jcp.org taglib URIs

This is an automated email from the ASF dual-hosted git repository.

tandraschko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/myfaces.git


The following commit(s) were added to refs/heads/master by this push:
     new f69fdd9  MYFACES-4388 Faces 4.0: rename xmlns.jcp.org taglib URIs
f69fdd9 is described below

commit f69fdd9e3e8f319bc6c7608c764ab4f16a356745
Author: Thomas Andraschko <ta...@apache.org>
AuthorDate: Tue Apr 13 14:06:45 2021 +0200

    MYFACES-4388 Faces 4.0: rename xmlns.jcp.org taglib URIs
---
 .../view/facelets/compiler/CompilationManager.java | 20 +++--
 .../facelets/compiler/FaceletsCompilerSupport.java |  4 +-
 .../compiler/RefreshDynamicComponentListener.java  | 30 +++++--
 .../view/facelets/compiler/SAXCompiler.java        | 39 +++++++---
 .../view/facelets/tag/AbstractTagLibrary.java      | 28 ++++---
 .../myfaces/view/facelets/tag/MetaRulesetImpl.java | 20 +++--
 .../facelets/tag/composite/CompositeLibrary.java   |  7 +-
 .../tag/composite/CompositeResourceLibrary.java    |  5 +-
 .../CreateDynamicCompositeComponentListener.java   | 30 +++++--
 .../view/facelets/tag/faces/JsfLibrary.java        |  7 +-
 .../facelets/tag/faces/PassThroughLibrary.java     |  7 +-
 .../view/facelets/tag/faces/core/CoreLibrary.java  |  8 +-
 .../tag/faces/html/AbstractHtmlLibrary.java        |  9 ++-
 .../tag/faces/html/DefaultTagDecorator.java        | 91 +++++++++++++++-------
 .../view/facelets/tag/faces/html/HtmlLibrary.java  |  8 +-
 .../view/facelets/tag/ui/RepeatHandler.java        |  5 +-
 .../myfaces/view/facelets/tag/ui/UILibrary.java    |  8 +-
 .../tag/faces/html/DataTableTestCaseUrn.java       | 90 +++++++++++++++++++++
 .../faces/html/DefaultHtmlDecoratorTestCase.java   | 10 +--
 ...e.java => DefaultHtmlDecoratorTestCaseUrn.java} | 16 ++--
 .../view/facelets/tag/faces/html/dataTable.xml     |  6 +-
 .../faces/html/{dataTable.xml => dataTableUrn.xml} |  0
 .../tag/faces/html/testHtmlPassthrough1urn.xhtml   | 75 ++++++++++++++++++
 .../tag/faces/html/testHtmlPassthrough2urn.xhtml   | 75 ++++++++++++++++++
 24 files changed, 477 insertions(+), 121 deletions(-)

diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/CompilationManager.java b/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/CompilationManager.java
index 2dde7fa..0d9d9e4 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/CompilationManager.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/CompilationManager.java
@@ -479,25 +479,31 @@ final class CompilationManager
 
     protected static boolean isRemove(String ns, String name)
     {
-        return (UILibrary.NAMESPACE.equals(ns) || UILibrary.ALIAS_NAMESPACE.equals(ns)) && "remove".equals(name);
+        return "remove".equals(name) && (UILibrary.NAMESPACE.equals(ns)
+                || UILibrary.JCP_NAMESPACE.equals(ns)
+                || UILibrary.SUN_NAMESPACE.equals(ns));
     }
 
     protected static boolean isTrimmed(String ns, String name)
     {
-        return (UILibrary.NAMESPACE.equals(ns) || UILibrary.ALIAS_NAMESPACE.equals(ns))
-                && (CompositionHandler.NAME.equals(name) || ComponentRefHandler.NAME.equals(name));
+        return (CompositionHandler.NAME.equals(name) || ComponentRefHandler.NAME.equals(name)) &&
+                (UILibrary.NAMESPACE.equals(ns)
+                    || UILibrary.JCP_NAMESPACE.equals(ns)
+                    || UILibrary.SUN_NAMESPACE.equals(ns));
     }
     
     protected static boolean isCompositeComponentInterface(String ns, String name)
     {
-        return (CompositeLibrary.NAMESPACE.equals(ns) || CompositeLibrary.ALIAS_NAMESPACE.equals(ns))
-            && InterfaceHandler.NAME.equals(name);
+        return InterfaceHandler.NAME.equals(name) && (CompositeLibrary.NAMESPACE.equals(ns)
+                || CompositeLibrary.JCP_NAMESPACE.equals(ns)
+                || CompositeLibrary.SUN_NAMESPACE.equals(ns));
     }
 
     protected static boolean isCompositeComponentImplementation(String ns, String name)
     {
-        return (CompositeLibrary.NAMESPACE.equals(ns) || CompositeLibrary.ALIAS_NAMESPACE.equals(ns))
-            && ImplementationHandler.NAME.equals(name);
+        return ImplementationHandler.NAME.equals(name) && (CompositeLibrary.NAMESPACE.equals(ns)
+                || CompositeLibrary.JCP_NAMESPACE.equals(ns)
+                || CompositeLibrary.SUN_NAMESPACE.equals(ns));
     }
 
     private String[] determineQName(Tag tag)
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/FaceletsCompilerSupport.java b/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/FaceletsCompilerSupport.java
index 9df9fcb..621514e 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/FaceletsCompilerSupport.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/FaceletsCompilerSupport.java
@@ -90,7 +90,9 @@ public class FaceletsCompilerSupport
         compiler.addTagLibrary(new CompositeResourceLibrary(context,
             CompositeResourceLibrary.NAMESPACE_PREFIX));
         compiler.addTagLibrary(new CompositeResourceLibrary(context,
-            CompositeResourceLibrary.ALIAS_NAMESPACE_PREFIX));
+            CompositeResourceLibrary.JCP_NAMESPACE_PREFIX));
+        compiler.addTagLibrary(new CompositeResourceLibrary(context,
+            CompositeResourceLibrary.SUN_NAMESPACE_PREFIX));
         compiler.addTagLibrary(new JsfLibrary());
         compiler.addTagLibrary(new PassThroughLibrary());
         
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/RefreshDynamicComponentListener.java b/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/RefreshDynamicComponentListener.java
index c1c11bc..e4098c8 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/RefreshDynamicComponentListener.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/RefreshDynamicComponentListener.java
@@ -165,11 +165,15 @@ public final class RefreshDynamicComponentListener implements ComponentSystemEve
         }
         else if (taglibURI.startsWith(CompositeResourceLibrary.NAMESPACE_PREFIX))
         {
-            values[0] = new Object[]{0, taglibURI.substring(35)};
+            values[0] = new Object[]{0, taglibURI.substring(CompositeResourceLibrary.NAMESPACE_PREFIX.length())};
         }
-        else if(taglibURI.startsWith(CompositeResourceLibrary.ALIAS_NAMESPACE_PREFIX))
+        else if(taglibURI.startsWith(CompositeResourceLibrary.JCP_NAMESPACE_PREFIX))
         {
-            values[0] = new Object[]{1, taglibURI.substring(34)};
+            values[0] = new Object[]{1, taglibURI.substring(CompositeResourceLibrary.JCP_NAMESPACE_PREFIX.length())};
+        }
+        else if(taglibURI.startsWith(CompositeResourceLibrary.SUN_NAMESPACE_PREFIX))
+        {
+            values[0] = new Object[]{2, taglibURI.substring(CompositeResourceLibrary.SUN_NAMESPACE_PREFIX.length())};
         }
         else
         {
@@ -198,9 +202,23 @@ public final class RefreshDynamicComponentListener implements ComponentSystemEve
         else if (values[0] instanceof Object[])
         {
             Object[] def = (Object[]) values[0];
-            String ns = (((Integer) def[0]) == 0) ? 
-                CompositeResourceLibrary.NAMESPACE_PREFIX :
-                CompositeResourceLibrary.ALIAS_NAMESPACE_PREFIX;
+            int index = (Integer) def[0];
+            String ns;
+            switch (index)
+            {
+                case 0:
+                    ns = CompositeResourceLibrary.NAMESPACE_PREFIX;
+                    break;
+                case 1:
+                    ns = CompositeResourceLibrary.JCP_NAMESPACE_PREFIX;
+                    break;
+                case 2:
+                    ns = CompositeResourceLibrary.SUN_NAMESPACE_PREFIX;
+                    break;
+                default:
+                    ns = "";
+                    break;
+            }
             taglibURI = ns + (String) ((Object[]) values[0])[1];
         }
         tagName = (String) values[1];
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/SAXCompiler.java b/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/SAXCompiler.java
index 6cd984d..6472d1e 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/SAXCompiler.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/SAXCompiler.java
@@ -376,7 +376,9 @@ public final class SAXCompiler extends Compiler
             {
                 this.unit.popTag();
             }
-            if ((CoreLibrary.NAMESPACE.equals(uri) || CoreLibrary.ALIAS_NAMESPACE.equals(uri)))
+            if ((CoreLibrary.NAMESPACE.equals(uri)
+                    || CoreLibrary.JCP_NAMESPACE.equals(uri)
+                    || CoreLibrary.SUN_NAMESPACE.equals(uri)))
             {
                 if ("metadata".equals(localName))
                 {
@@ -387,7 +389,9 @@ public final class SAXCompiler extends Compiler
                     this.unit.popTag();
                 }
             }
-            else if (UILibrary.NAMESPACE.equals(uri) || UILibrary.ALIAS_NAMESPACE.equals(uri))
+            else if (UILibrary.NAMESPACE.equals(uri)
+                    || UILibrary.JCP_NAMESPACE.equals(uri)
+                    || UILibrary.SUN_NAMESPACE.equals(uri))
             {
                 if (!inMetadata && "remove".equals(localName))
                 {
@@ -480,8 +484,10 @@ public final class SAXCompiler extends Compiler
         @Override
         public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException
         {
-            if ( (CoreLibrary.NAMESPACE.equals(uri) ||
-                  CoreLibrary.ALIAS_NAMESPACE.equals(uri)) && this.uiRemoveCount <= 0)
+            if (this.uiRemoveCount <= 0 &&
+                    (CoreLibrary.NAMESPACE.equals(uri)
+                        || CoreLibrary.JCP_NAMESPACE.equals(uri)
+                        || CoreLibrary.SUN_NAMESPACE.equals(uri)))
             {
                 if ("metadata".equals(localName))
                 {
@@ -496,8 +502,9 @@ public final class SAXCompiler extends Compiler
             {
                 this.unit.pushTag(new Tag(createLocation(), uri, localName, qName, createAttributes(attributes)));
             }
-            else if (UILibrary.NAMESPACE.equals(uri) ||
-                    UILibrary.ALIAS_NAMESPACE.equals(uri))
+            else if (UILibrary.NAMESPACE.equals(uri)
+                    || UILibrary.JCP_NAMESPACE.equals(uri)
+                    || UILibrary.SUN_NAMESPACE.equals(uri))
             {
                 if ("remove".equals(localName))
                 {
@@ -629,7 +636,9 @@ public final class SAXCompiler extends Compiler
                 this.unit.popTag();
             }
             else if (inCompositeImplementation && 
-                (CompositeLibrary.NAMESPACE.equals(uri) || CompositeLibrary.ALIAS_NAMESPACE.equals(uri)) )
+                (CompositeLibrary.NAMESPACE.equals(uri)
+                    || CompositeLibrary.JCP_NAMESPACE.equals(uri)
+                    || CompositeLibrary.SUN_NAMESPACE.equals(uri)))
             {
                 if ("insertFacet".equals(localName) ||
                     "renderFacet".equals(localName) ||
@@ -640,7 +649,9 @@ public final class SAXCompiler extends Compiler
                 }
             }
             
-            if (CompositeLibrary.NAMESPACE.equals(uri) || CompositeLibrary.ALIAS_NAMESPACE.equals(uri))
+            if (CompositeLibrary.NAMESPACE.equals(uri)
+                    || CompositeLibrary.JCP_NAMESPACE.equals(uri)
+                    || CompositeLibrary.SUN_NAMESPACE.equals(uri))
             {
                 if (InterfaceHandler.NAME.equals(localName))
                 {
@@ -735,7 +746,9 @@ public final class SAXCompiler extends Compiler
         @Override
         public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException
         {
-            if (CompositeLibrary.NAMESPACE.equals(uri) || CompositeLibrary.ALIAS_NAMESPACE.equals(uri))
+            if (CompositeLibrary.NAMESPACE.equals(uri)
+                    || CompositeLibrary.JCP_NAMESPACE.equals(uri)
+                    || CompositeLibrary.SUN_NAMESPACE.equals(uri))
             {
                 if (InterfaceHandler.NAME.equals(localName))
                 {
@@ -752,7 +765,9 @@ public final class SAXCompiler extends Compiler
                 this.unit.pushTag(new Tag(createLocation(), uri, localName, qName, createAttributes(attributes)));
             }
             else if (inCompositeImplementation && 
-                (CompositeLibrary.NAMESPACE.equals(uri) || CompositeLibrary.ALIAS_NAMESPACE.equals(uri)))
+                (CompositeLibrary.NAMESPACE.equals(uri)
+                    || CompositeLibrary.JCP_NAMESPACE.equals(uri)
+                    || CompositeLibrary.SUN_NAMESPACE.equals(uri)))
             {
                 if ("insertFacet".equals(localName)    ||
                     "renderFacet".equals(localName)    ||
@@ -942,7 +957,9 @@ public final class SAXCompiler extends Compiler
         
         boolean tagContainParams = ( 
                 ("include".equals(tagName) || "decorate".equals(tagName) || "composition".equals(tagName)) && 
-                (UILibrary.NAMESPACE.equals(taglibURI) || UILibrary.ALIAS_NAMESPACE.equals(taglibURI)) );
+                (UILibrary.NAMESPACE.equals(taglibURI)
+                    || UILibrary.JCP_NAMESPACE.equals(taglibURI)
+                    || UILibrary.SUN_NAMESPACE.equals(taglibURI)));
         
         Location location = new Location(alias, 0, 0);
         int len = attributes.size();
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/AbstractTagLibrary.java b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/AbstractTagLibrary.java
index 475b55f..0f21177 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/AbstractTagLibrary.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/AbstractTagLibrary.java
@@ -61,23 +61,29 @@ public abstract class AbstractTagLibrary implements TagLibrary
     private final Map<String, Method> _functions;
 
     private final String _namespace;
-    private final String _aliasNamespace;
+    private final String _jcpNamespace;
+    private final String _sunNamespace;
     private Boolean _strictJsf2FaceletsCompatibility;
 
-    public AbstractTagLibrary(String namespace, String aliasNamespace)
+    public AbstractTagLibrary(String namespace)
     {
-        _namespace = namespace;
-        _aliasNamespace = aliasNamespace;
-        _factories = new HashMap<>();
-        _functions = new HashMap<>();
+        this(namespace, null, null);
     }
     
-    public AbstractTagLibrary(String namespace)
+    public AbstractTagLibrary(String namespace, String jcpNamespace)
     {
-        this(namespace,null);
+        this(namespace, jcpNamespace, null);
     }
     
-
+    public AbstractTagLibrary(String namespace, String jcpNamespace, String sunNamespace)
+    {
+        _namespace = namespace;
+        _jcpNamespace = jcpNamespace;
+        _sunNamespace = sunNamespace;
+        _factories = new HashMap<>();
+        _functions = new HashMap<>();
+    }
+ 
     /*
      * (non-Javadoc)
      * 
@@ -86,7 +92,9 @@ public abstract class AbstractTagLibrary implements TagLibrary
     @Override
     public boolean containsNamespace(String ns)
     {
-        return _namespace.equals(ns) || (_aliasNamespace != null && _aliasNamespace.equals(ns));
+        return _namespace.equals(ns)
+                || (_jcpNamespace != null && _jcpNamespace.equals(ns))
+                || (_sunNamespace != null && _sunNamespace.equals(ns));
     }
 
     /*
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/MetaRulesetImpl.java b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/MetaRulesetImpl.java
index 8f80e12..fcf3ac0 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/MetaRulesetImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/MetaRulesetImpl.java
@@ -122,22 +122,26 @@ public final class MetaRulesetImpl extends MetaRuleset
         // to find the passthrough attributes.
         TagAttribute[] passthroughAttribute = _tag.getAttributes().getAll(
             PassThroughLibrary.NAMESPACE);
-        TagAttribute[] passthroughAttributeAlias = _tag.getAttributes().getAll(
-            PassThroughLibrary.ALIAS_NAMESPACE);
+        TagAttribute[] passthroughAttributeJcp = _tag.getAttributes().getAll(
+            PassThroughLibrary.JCP_NAMESPACE);
+        TagAttribute[] passthroughAttributeSun = _tag.getAttributes().getAll(
+            PassThroughLibrary.SUN_NAMESPACE);
         
-        if (passthroughAttribute.length > 0 ||
-            passthroughAttributeAlias.length > 0)
+        if (passthroughAttribute.length > 0
+                || passthroughAttributeJcp.length > 0
+                || passthroughAttributeSun.length > 0)
         {
-            _passthroughAttributes = new TagAttribute[passthroughAttribute.length+
-                passthroughAttributeAlias.length];
+            _passthroughAttributes = new TagAttribute[passthroughAttribute.length + 
+                passthroughAttributeJcp.length + passthroughAttributeSun.length];
             int i = 0;
             for (TagAttribute attribute : allAttributes)
             {
                 // The fastest check is check if the length is > 0, because
                 // most attributes usually has no namespace attached.
                 if (attribute.getNamespace().length() > 0 &&
-                    (PassThroughLibrary.NAMESPACE.equals(attribute.getNamespace()) ||
-                        PassThroughLibrary.ALIAS_NAMESPACE.equals(attribute.getNamespace())))
+                    (PassThroughLibrary.NAMESPACE.equals(attribute.getNamespace())
+                        || PassThroughLibrary.JCP_NAMESPACE.equals(attribute.getNamespace())
+                        || PassThroughLibrary.SUN_NAMESPACE.equals(attribute.getNamespace())))
                 {
                     _passthroughAttributes[i] = attribute;
                     i++;
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/CompositeLibrary.java b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/CompositeLibrary.java
index 7ffb75b..1443a50 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/CompositeLibrary.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/CompositeLibrary.java
@@ -26,12 +26,13 @@ import org.apache.myfaces.view.facelets.tag.AbstractTagLibrary;
  */
 public class CompositeLibrary extends AbstractTagLibrary
 {
-    public final static String NAMESPACE = "http://xmlns.jcp.org/jsf/composite";
-    public final static String ALIAS_NAMESPACE = "http://java.sun.com/jsf/composite";
+    public final static String NAMESPACE = "jakarta.faces.composite";
+    public final static String JCP_NAMESPACE = "http://xmlns.jcp.org/jsf/composite";
+    public final static String SUN_NAMESPACE = "http://java.sun.com/jsf/composite";
     
     public CompositeLibrary()
     {
-        super(NAMESPACE, ALIAS_NAMESPACE);
+        super(NAMESPACE, JCP_NAMESPACE, SUN_NAMESPACE);
 
         addTagHandler("actionSource", ActionSourceHandler.class);
 
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/CompositeResourceLibrary.java b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/CompositeResourceLibrary.java
index 4933da0..ea1865e 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/CompositeResourceLibrary.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/CompositeResourceLibrary.java
@@ -49,8 +49,9 @@ import org.apache.myfaces.view.facelets.tag.TagLibrary;
  */
 public class CompositeResourceLibrary implements TagLibrary
 {
-    public final static String NAMESPACE_PREFIX = "http://xmlns.jcp.org/jsf/composite/";
-    public final static String ALIAS_NAMESPACE_PREFIX = "http://java.sun.com/jsf/composite/";
+    public final static String NAMESPACE_PREFIX = "jakarta.faces.composite";
+    public final static String JCP_NAMESPACE_PREFIX = "http://xmlns.jcp.org/jsf/composite/";
+    public final static String SUN_NAMESPACE_PREFIX = "http://java.sun.com/jsf/composite/";
     
     private final ResourceHandler _resourceHandler;
     private Pattern _acceptPatterns;
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/CreateDynamicCompositeComponentListener.java b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/CreateDynamicCompositeComponentListener.java
index cb3379c..ce944db 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/CreateDynamicCompositeComponentListener.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/CreateDynamicCompositeComponentListener.java
@@ -198,11 +198,15 @@ public class CreateDynamicCompositeComponentListener
         }
         else if (taglibURI.startsWith(CompositeResourceLibrary.NAMESPACE_PREFIX))
         {
-            values[0] = new Object[]{0, taglibURI.substring(35)};
+            values[0] = new Object[]{0, taglibURI.substring(CompositeResourceLibrary.NAMESPACE_PREFIX.length())};
         }
-        else if(taglibURI.startsWith(CompositeResourceLibrary.ALIAS_NAMESPACE_PREFIX))
+        else if(taglibURI.startsWith(CompositeResourceLibrary.JCP_NAMESPACE_PREFIX))
         {
-            values[0] = new Object[]{1, taglibURI.substring(34)};
+            values[0] = new Object[]{1, taglibURI.substring(CompositeResourceLibrary.JCP_NAMESPACE_PREFIX.length())};
+        }
+        else if(taglibURI.startsWith(CompositeResourceLibrary.SUN_NAMESPACE_PREFIX))
+        {
+            values[0] = new Object[]{2, taglibURI.substring(CompositeResourceLibrary.SUN_NAMESPACE_PREFIX.length())};
         }
         else
         {
@@ -230,9 +234,23 @@ public class CreateDynamicCompositeComponentListener
         else if (values[0] instanceof Object[])
         {
             Object[] def = (Object[])values[0];
-            String ns = (((Integer) def[0]) == 0) ? 
-                CompositeResourceLibrary.NAMESPACE_PREFIX :
-                CompositeResourceLibrary.ALIAS_NAMESPACE_PREFIX;
+            int index = (Integer) def[0];
+            String ns;
+            switch (index)
+            {
+                case 0:
+                    ns = CompositeResourceLibrary.NAMESPACE_PREFIX;
+                    break;
+                case 1:
+                    ns = CompositeResourceLibrary.JCP_NAMESPACE_PREFIX;
+                    break;
+                case 2:
+                    ns = CompositeResourceLibrary.SUN_NAMESPACE_PREFIX;
+                    break;
+                default:
+                    ns = "";
+                    break;
+            }
             taglibURI = ns + (String) ((Object[]) values[0])[1];
         }
         tagName = (String)values[1];
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/faces/JsfLibrary.java b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/faces/JsfLibrary.java
index 183081e..38ec1b9 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/faces/JsfLibrary.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/faces/JsfLibrary.java
@@ -26,14 +26,15 @@ import org.apache.myfaces.view.facelets.tag.AbstractTagLibrary;
  */
 public final class JsfLibrary extends AbstractTagLibrary
 {
-    public final static String NAMESPACE = "http://xmlns.jcp.org/jsf";
-    public final static String ALIAS_NAMESPACE = "http://java.sun.com/jsf";
+    public final static String NAMESPACE = "jakarta.faces";
+    public final static String JCP_NAMESPACE = "http://xmlns.jcp.org/jsf";
+    public final static String SUN_NAMESPACE = "http://java.sun.com/jsf";
 
     public final static JsfLibrary INSTANCE = new JsfLibrary();
 
     public JsfLibrary()
     {
-        super(NAMESPACE, ALIAS_NAMESPACE);
+        super(NAMESPACE, JCP_NAMESPACE, SUN_NAMESPACE);
         
         this.addComponent("element", "oam.passthrough.Element", 
             "jakarta.faces.passthrough.Element", JsfElementHandler.class);
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/faces/PassThroughLibrary.java b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/faces/PassThroughLibrary.java
index 74be7d0..b535a18 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/faces/PassThroughLibrary.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/faces/PassThroughLibrary.java
@@ -29,13 +29,14 @@ import org.apache.myfaces.view.facelets.tag.AbstractTagLibrary;
  */
 public class PassThroughLibrary extends AbstractTagLibrary
 {
-    public final static String NAMESPACE = "http://xmlns.jcp.org/jsf/passthrough";
-    public final static String ALIAS_NAMESPACE = "http://java.sun.com/jsf/passthrough";
+    public final static String NAMESPACE = "jakarta.faces.passthrough";
+    public final static String JCP_NAMESPACE = "http://xmlns.jcp.org/jsf/passthrough";
+    public final static String SUN_NAMESPACE = "http://java.sun.com/jsf/passthrough";
 
     public final static PassThroughLibrary INSTANCE = new PassThroughLibrary();
     
     public PassThroughLibrary()
     {
-        super(NAMESPACE, ALIAS_NAMESPACE);
+        super(NAMESPACE, JCP_NAMESPACE, SUN_NAMESPACE);
     }
 }
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/faces/core/CoreLibrary.java b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/faces/core/CoreLibrary.java
index 5cbd89b..69e3825 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/faces/core/CoreLibrary.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/faces/core/CoreLibrary.java
@@ -46,15 +46,15 @@ import org.apache.myfaces.view.facelets.tag.AbstractTagLibrary;
  */
 public final class CoreLibrary extends AbstractTagLibrary
 {
-
-    public final static String NAMESPACE = "http://xmlns.jcp.org/jsf/core";
-    public final static String ALIAS_NAMESPACE = "http://java.sun.com/jsf/core";
+    public final static String NAMESPACE = "jakarta.faces.core";
+    public final static String JCP_NAMESPACE = "http://xmlns.jcp.org/jsf/core";
+    public final static String SUN_NAMESPACE = "http://java.sun.com/jsf/core";
 
     public final static CoreLibrary INSTANCE = new CoreLibrary();
 
     public CoreLibrary()
     {
-        super(NAMESPACE, ALIAS_NAMESPACE);
+        super(NAMESPACE, JCP_NAMESPACE, SUN_NAMESPACE);
 
         this.addTagHandler("actionListener", ActionListenerHandler.class);
 
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/faces/html/AbstractHtmlLibrary.java b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/faces/html/AbstractHtmlLibrary.java
index cbfa6b1..a54fd2d 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/faces/html/AbstractHtmlLibrary.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/faces/html/AbstractHtmlLibrary.java
@@ -32,11 +32,16 @@ public abstract class AbstractHtmlLibrary extends AbstractTagLibrary
         super(namespace);
     }
     
-    public AbstractHtmlLibrary(String namespace, String aliasNamespace)
+    public AbstractHtmlLibrary(String namespace, String jcpNamespace)
     {
-        super(namespace, aliasNamespace);
+        super(namespace, jcpNamespace);
     }    
 
+    public AbstractHtmlLibrary(String namespace, String jcpNamespace, String sunNamespace)
+    {
+        super(namespace, jcpNamespace, sunNamespace);
+    }   
+    
     public void addHtmlComponent(String name, String componentType, String rendererType)
     {
         super.addComponent(name, componentType, rendererType, HtmlComponentHandler.class);
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/faces/html/DefaultTagDecorator.java b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/faces/html/DefaultTagDecorator.java
index fc3754e..3556ae3 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/faces/html/DefaultTagDecorator.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/faces/html/DefaultTagDecorator.java
@@ -41,13 +41,9 @@ import org.apache.myfaces.view.facelets.tag.faces.core.CoreLibrary;
 public class DefaultTagDecorator implements TagDecorator
 {
     public final static String XHTML_NAMESPACE = "http://www.w3.org/1999/xhtml";
-    public final static String JSF_NAMESPACE = JsfLibrary.NAMESPACE;
-    public final static String JSF_ALIAS_NAMESPACE = JsfLibrary.ALIAS_NAMESPACE;
-    public final static String PASS_THROUGH_NAMESPACE = PassThroughLibrary.NAMESPACE;
-    public final static String PASS_THROUGH_ALIAS_NAMESPACE = PassThroughLibrary.ALIAS_NAMESPACE;
     private final static String EMPTY_NAMESPACE = "";
     
-    private final static String P_ELEMENTNAME = "p:"+Renderer.PASSTHROUGH_RENDERER_LOCALNAME_KEY;
+    private final static String P_ELEMENTNAME = "p:" + Renderer.PASSTHROUGH_RENDERER_LOCALNAME_KEY;
     
     /**
      * Fast array for lookup of local names to be inspected. 
@@ -166,7 +162,9 @@ public class DefaultTagDecorator implements TagDecorator
 
         for (String namespace : tag.getAttributes().getNamespaces())
         {
-            if (JSF_NAMESPACE.equals(namespace) || JSF_ALIAS_NAMESPACE.equals(namespace))
+            if (JsfLibrary.NAMESPACE.equals(namespace)
+                    || JsfLibrary.JCP_NAMESPACE.equals(namespace)
+                    || JsfLibrary.SUN_NAMESPACE.equals(namespace))
             {
                 jsfNamespaceFound = true;
                 break;
@@ -224,8 +222,8 @@ public class DefaultTagDecorator implements TagDecorator
         }
         else
         {
-            throw new FaceletException("Attributes under "+JSF_NAMESPACE+
-                " can only be used for tags under "+ XHTML_NAMESPACE +" or tags with no namespace defined" );
+            throw new FaceletException("Attributes under " +JsfLibrary.NAMESPACE +
+                " can only be used for tags under " + XHTML_NAMESPACE + " or tags with no namespace defined" );
         }
     }
     
@@ -236,7 +234,7 @@ public class DefaultTagDecorator implements TagDecorator
         String elementNameTagLocalName = tag.getLocalName();
 
         TagAttribute elementNameTagAttribute = new TagAttributeImpl(
-            tag.getLocation(), PASS_THROUGH_NAMESPACE , Renderer.PASSTHROUGH_RENDERER_LOCALNAME_KEY,
+            tag.getLocation(), PassThroughLibrary.NAMESPACE , Renderer.PASSTHROUGH_RENDERER_LOCALNAME_KEY,
             P_ELEMENTNAME, elementNameTagLocalName );
         
         // 1. Count how many attributes requires to be duplicated
@@ -286,7 +284,9 @@ public class DefaultTagDecorator implements TagDecorator
                         component.
                 ..."        
             */            
-            if (JSF_NAMESPACE.equals(namespace) || JSF_ALIAS_NAMESPACE.equals(namespace))
+            if (JsfLibrary.NAMESPACE.equals(namespace)
+                    || JsfLibrary.JCP_NAMESPACE.equals(namespace)
+                    || JsfLibrary.SUN_NAMESPACE.equals(namespace))
             {
                 // "... If the current attribute's namespace is http://xmlns.jcp.org/jsf, convertedTagAttribute's 
                 //  qualified name must be the current attribute's local name and convertedTagAttribute's 
@@ -306,8 +306,8 @@ public class DefaultTagDecorator implements TagDecorator
                 // attribute to the passthrough attribute map, so there is an error in the spec documentation.
                 //convertedTagAttributes[j] = tagAttribute;
                 
-                convertedNamespace = PASS_THROUGH_NAMESPACE;
-                qname = "p:"+tagAttribute.getLocalName();
+                convertedNamespace = PassThroughLibrary.NAMESPACE;
+                qname = "p:" + tagAttribute.getLocalName();
                 
                 convertedTagAttributes[j] = new TagAttributeImpl(tagAttribute.getLocation(), 
                     convertedNamespace, tagAttribute.getLocalName(), qname, tagAttribute.getValue());
@@ -321,7 +321,7 @@ public class DefaultTagDecorator implements TagDecorator
                 // attribute to the passthrough attribute map, so there is an error in the spec documentation.
                 //convertedTagAttributes[j] = tagAttribute;
                 
-                convertedNamespace = PASS_THROUGH_NAMESPACE;
+                convertedNamespace = PassThroughLibrary.NAMESPACE;
                 qname = "p:" + tagAttribute.getLocalName();
                 
                 convertedTagAttributes[j] = new TagAttributeImpl(tagAttribute.getLocation(), 
@@ -334,9 +334,10 @@ public class DefaultTagDecorator implements TagDecorator
                 convertedTagAttributes[j] = tagAttribute;
             }
             
-            if (Renderer.PASSTHROUGH_RENDERER_LOCALNAME_KEY.equals(convertedTagAttributes[j].getLocalName()) && (
-                PASS_THROUGH_NAMESPACE.equals(convertedTagAttributes[j].getNamespace()) || 
-                PASS_THROUGH_ALIAS_NAMESPACE.equals(convertedTagAttributes[j].getNamespace()) ) )
+            if (Renderer.PASSTHROUGH_RENDERER_LOCALNAME_KEY.equals(convertedTagAttributes[j].getLocalName())
+                    && (PassThroughLibrary.NAMESPACE.equals(convertedTagAttributes[j].getNamespace())
+                        || PassThroughLibrary.JCP_NAMESPACE.equals(convertedTagAttributes[j].getNamespace())
+                        || PassThroughLibrary.SUN_NAMESPACE.equals(convertedTagAttributes[j].getNamespace())))
             {
                 elementNameTagAttributeSet = true;
             }
@@ -387,7 +388,8 @@ public class DefaultTagDecorator implements TagDecorator
         private String attributeLocalName;
         private String attributePrefix;
         private final String attributeNamespace;
-        private final String attributeAliasNamespace;
+        private final String attributeJcpNamespace;
+        private final String attributeSunNamespace;
         private String matchValue;
         
         private String targetQName;
@@ -427,7 +429,8 @@ public class DefaultTagDecorator implements TagDecorator
                 this.attributeLocalName = (j >= 0) ? attributeQName.substring(j+1) : attributeQName;
                 this.attributePrefix = (j >= 0) ? attributeQName.substring(0, j) : null;
                 this.attributeNamespace = resolveSelectorNamespace(this.attributePrefix);
-                this.attributeAliasNamespace = resolveAliasSelectorNamespace(this.attributePrefix);
+                this.attributeJcpNamespace = resolveJcpSelectorNamespace(this.attributePrefix);
+                this.attributeSunNamespace = resolveSunSelectorNamespace(this.attributePrefix);
             }
             else
             {
@@ -436,7 +439,8 @@ public class DefaultTagDecorator implements TagDecorator
                 this.attributeLocalName = null;
                 this.attributePrefix = null;
                 this.attributeNamespace = "";
-                this.attributeAliasNamespace = null;
+                this.attributeJcpNamespace = null;
+                this.attributeSunNamespace = null;
             }
             
             this.targetQName = targetQName;
@@ -453,7 +457,7 @@ public class DefaultTagDecorator implements TagDecorator
                     }
                     else if (j == 3 && targetQName.startsWith("jsf"))
                     {
-                        this.targetNamespace = JsfLibrary.ALIAS_NAMESPACE;
+                        this.targetNamespace = JsfLibrary.SUN_NAMESPACE;
                         this.targetLocalName = targetQName.substring(j+1);
                     }
                 }
@@ -473,11 +477,17 @@ public class DefaultTagDecorator implements TagDecorator
                  {
                      String attributeNS = attributeNamespace;
                      TagAttribute attr = tag.getAttributes().get(attributeNS, attributeLocalName);
-                     if (attr == null && attributeAliasNamespace.length() > 0)
+                     if (attr == null && attributeJcpNamespace.length() > 0)
+                     {
+                         attributeNS = attributeJcpNamespace;
+                         attr = tag.getAttributes().get(attributeNS, attributeLocalName);
+                     }
+                     if (attr == null && attributeSunNamespace.length() > 0)
                      {
-                         attributeNS = attributeAliasNamespace;
-                         attr = tag.getAttributes().get(attributeAliasNamespace, attributeLocalName);
+                         attributeNS = attributeSunNamespace;
+                         attr = tag.getAttributes().get(attributeNS, attributeLocalName);
                      }
+
                      if (attr != null)
                      {
                          if (attributeNS.equals(attr.getNamespace()) )
@@ -492,7 +502,7 @@ public class DefaultTagDecorator implements TagDecorator
                                  return this;
                              }
                          }
-                         else if (attributeNS == "" && attr.getNamespace() == null)
+                         else if ("".equals(attributeNS) && attr.getNamespace() == null)
                          {
                              // if namespace is empty match
                              if (matchValue.equals(attr.getValue()))
@@ -512,9 +522,15 @@ public class DefaultTagDecorator implements TagDecorator
                      TagAttribute attr = tag.getAttributes().get(attributeNS, attributeLocalName);
                      if (attr == null)
                      {
-                         attributeNS = attributeAliasNamespace;
+                         attributeNS = attributeJcpNamespace;
+                         attr = tag.getAttributes().get(attributeNS, attributeLocalName);
+                     }
+                     if (attr == null)
+                     {
+                         attributeNS = attributeSunNamespace;
                          attr = tag.getAttributes().get(attributeNS, attributeLocalName);
                      }
+                     
                      if (attr != null)
                      {
                          if (attributeNS.equals(attr.getNamespace()))
@@ -562,19 +578,36 @@ public class DefaultTagDecorator implements TagDecorator
         return "";
     }
 
-    private static String resolveAliasSelectorNamespace(String prefix)
+    private static String resolveJcpSelectorNamespace(String prefix)
+    {
+        if ("jsf".equals(prefix))
+        {
+            return JsfLibrary.JCP_NAMESPACE;
+        }
+        else if ("h".equals(prefix))
+        {
+            return HtmlLibrary.JCP_NAMESPACE;
+        }
+        else if ("f".equals(prefix))
+        {
+            return CoreLibrary.JCP_NAMESPACE;
+        }
+        return "";
+    }
+    
+    private static String resolveSunSelectorNamespace(String prefix)
     {
         if ("jsf".equals(prefix))
         {
-            return JsfLibrary.ALIAS_NAMESPACE;
+            return JsfLibrary.SUN_NAMESPACE;
         }
         else if ("h".equals(prefix))
         {
-            return HtmlLibrary.ALIAS_NAMESPACE;
+            return HtmlLibrary.SUN_NAMESPACE;
         }
         else if ("f".equals(prefix))
         {
-            return CoreLibrary.ALIAS_NAMESPACE;
+            return CoreLibrary.SUN_NAMESPACE;
         }
         return "";
     }
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/faces/html/HtmlLibrary.java b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/faces/html/HtmlLibrary.java
index 1ff9bf1..aa61536 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/faces/html/HtmlLibrary.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/faces/html/HtmlLibrary.java
@@ -24,15 +24,15 @@ package org.apache.myfaces.view.facelets.tag.faces.html;
  */
 public final class HtmlLibrary extends AbstractHtmlLibrary
 {
-
-    public final static String NAMESPACE = "http://xmlns.jcp.org/jsf/html";
-    public final static String ALIAS_NAMESPACE = "http://java.sun.com/jsf/html";
+    public final static String NAMESPACE = "jakarta.faces.html";
+    public final static String JCP_NAMESPACE = "http://xmlns.jcp.org/jsf/html";
+    public final static String SUN_NAMESPACE = "http://java.sun.com/jsf/html";
 
     public final static HtmlLibrary INSTANCE = new HtmlLibrary();
 
     public HtmlLibrary()
     {
-        super(NAMESPACE, ALIAS_NAMESPACE);
+        super(NAMESPACE, JCP_NAMESPACE, SUN_NAMESPACE);
         
         this.addHtmlComponent("body", "jakarta.faces.OutputBody", "jakarta.faces.Body");
         
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/ui/RepeatHandler.java b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/ui/RepeatHandler.java
index 81ee11e..300d414 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/ui/RepeatHandler.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/ui/RepeatHandler.java
@@ -49,8 +49,9 @@ public class RepeatHandler extends ComponentHandler
     {
         MetaRuleset meta = super.createMetaRuleset(type);
 
-        if (!UILibrary.NAMESPACE.equals(this.tag.getNamespace()) &&
-            !UILibrary.ALIAS_NAMESPACE.equals(this.tag.getNamespace()))
+        if (!UILibrary.NAMESPACE.equals(this.tag.getNamespace())
+                && !UILibrary.JCP_NAMESPACE.equals(this.tag.getNamespace())
+                && !UILibrary.SUN_NAMESPACE.equals(this.tag.getNamespace()))
         {
             meta.add(new TagMetaData(type));
         }
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/ui/UILibrary.java b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/ui/UILibrary.java
index 48f4f09..c5dea1c 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/ui/UILibrary.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/ui/UILibrary.java
@@ -32,15 +32,15 @@ import org.apache.myfaces.view.facelets.tag.AbstractTagLibrary;
  */
 public final class UILibrary extends AbstractTagLibrary
 {
-
-    public final static String NAMESPACE = "http://xmlns.jcp.org/jsf/facelets";
-    public final static String ALIAS_NAMESPACE = "http://java.sun.com/jsf/facelets";
+    public final static String NAMESPACE = "jakarta.faces.facelets";
+    public final static String JCP_NAMESPACE = "http://xmlns.jcp.org/jsf/facelets";
+    public final static String SUN_NAMESPACE = "http://java.sun.com/jsf/facelets";
 
     public final static UILibrary INSTANCE = new UILibrary();
 
     public UILibrary()
     {
-        super(NAMESPACE, ALIAS_NAMESPACE);
+        super(NAMESPACE, JCP_NAMESPACE, SUN_NAMESPACE);
 
         this.addTagHandler("include", IncludeHandler.class);
 
diff --git a/impl/src/test/java/org/apache/myfaces/view/facelets/tag/faces/html/DataTableTestCaseUrn.java b/impl/src/test/java/org/apache/myfaces/view/facelets/tag/faces/html/DataTableTestCaseUrn.java
new file mode 100644
index 0000000..004f2a3
--- /dev/null
+++ b/impl/src/test/java/org/apache/myfaces/view/facelets/tag/faces/html/DataTableTestCaseUrn.java
@@ -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.
+ */
+
+package org.apache.myfaces.view.facelets.tag.faces.html;
+
+import jakarta.faces.component.UIColumn;
+import jakarta.faces.component.UIData;
+import jakarta.faces.component.UIOutput;
+import jakarta.faces.component.UIPanel;
+import jakarta.faces.component.UIViewRoot;
+import jakarta.faces.component.html.HtmlColumn;
+import jakarta.faces.component.html.HtmlDataTable;
+import jakarta.faces.component.html.HtmlOutputText;
+import jakarta.faces.context.ResponseWriter;
+
+import org.apache.myfaces.renderkit.html.HtmlTableRenderer;
+import org.apache.myfaces.renderkit.html.HtmlTextRenderer;
+import org.apache.myfaces.view.facelets.FaceletTestCase;
+import org.apache.myfaces.view.facelets.bean.Example;
+import org.apache.myfaces.util.lang.FastWriter;
+import org.junit.Test;
+
+public class DataTableTestCaseUrn extends FaceletTestCase
+{
+
+    @Override
+    protected void setupComponents() throws Exception
+    {
+        application.addComponent(UIViewRoot.COMPONENT_TYPE, UIViewRoot.class
+                .getName());
+        application.addComponent(UIPanel.COMPONENT_TYPE,
+                UIPanel.class.getName());        
+        application.addComponent(HtmlDataTable.COMPONENT_TYPE,
+                HtmlDataTable.class.getName());
+        application.addComponent(UIColumn.COMPONENT_TYPE,
+                UIColumn.class.getName());        
+        application.addComponent(HtmlColumn.COMPONENT_TYPE,
+                HtmlColumn.class.getName());
+        application.addComponent(HtmlOutputText.COMPONENT_TYPE,
+                HtmlOutputText.class.getName());
+    }
+
+    @Override
+    protected void setupConvertersAndValidators() throws Exception
+    {
+    }
+
+    @Override
+    protected void setupRenderers() throws Exception
+    {
+        renderKit.addRenderer(UIOutput.COMPONENT_FAMILY,
+                "jakarta.faces.Text", new HtmlTextRenderer());
+        renderKit.addRenderer(UIData.COMPONENT_FAMILY,
+                "jakarta.faces.Table", new HtmlTableRenderer());
+    }
+
+    @Test
+    public void testDataTable() throws Exception
+    {
+        facesContext.getExternalContext().getRequestMap().put("company",
+                Example.createCompany());
+
+        UIViewRoot root = facesContext.getViewRoot();
+        vdl.buildView(facesContext, root, "dataTableUrn.xml");
+
+        FastWriter fw = new FastWriter();
+        ResponseWriter rw = facesContext.getResponseWriter();
+        rw = rw.cloneWithWriter(fw);
+        facesContext.setResponseWriter(rw);
+        root.encodeAll(facesContext);
+        //System.out.println(fw);
+    }
+
+}
diff --git a/impl/src/test/java/org/apache/myfaces/view/facelets/tag/faces/html/DefaultHtmlDecoratorTestCase.java b/impl/src/test/java/org/apache/myfaces/view/facelets/tag/faces/html/DefaultHtmlDecoratorTestCase.java
index 30ff14f..e86c520 100644
--- a/impl/src/test/java/org/apache/myfaces/view/facelets/tag/faces/html/DefaultHtmlDecoratorTestCase.java
+++ b/impl/src/test/java/org/apache/myfaces/view/facelets/tag/faces/html/DefaultHtmlDecoratorTestCase.java
@@ -18,7 +18,6 @@
  */
 package org.apache.myfaces.view.facelets.tag.faces.html;
 
-import org.apache.myfaces.view.facelets.tag.faces.html.DefaultTagDecorator;
 import java.io.StringWriter;
 import jakarta.faces.component.UIComponent;
 import jakarta.faces.component.UIForm;
@@ -55,6 +54,7 @@ import org.apache.myfaces.test.utils.HtmlRenderedAttr;
 import org.apache.myfaces.view.facelets.FaceletTestCase;
 import org.apache.myfaces.view.facelets.tag.TagAttributeImpl;
 import org.apache.myfaces.view.facelets.tag.TagAttributesImpl;
+import org.apache.myfaces.view.facelets.tag.faces.JsfLibrary;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -256,7 +256,7 @@ public class DefaultHtmlDecoratorTestCase extends FaceletTestCase
         Tag tag = new Tag(location, DefaultTagDecorator.XHTML_NAMESPACE, "body", "body", 
             new TagAttributesImpl(new TagAttribute[]
                 {
-                    new TagAttributeImpl(location, DefaultTagDecorator.JSF_NAMESPACE, "id", "jsf:id", "idBody")
+                    new TagAttributeImpl(location, JsfLibrary.NAMESPACE, "id", "jsf:id", "idBody")
                 }
             ));
         
@@ -273,7 +273,7 @@ public class DefaultHtmlDecoratorTestCase extends FaceletTestCase
         Tag tag = new Tag(location, DefaultTagDecorator.XHTML_NAMESPACE, "a", "a", 
             new TagAttributesImpl(new TagAttribute[]
                 {
-                    new TagAttributeImpl(location, DefaultTagDecorator.JSF_NAMESPACE, "action", "jsf:action", "#{test.testAction}")
+                    new TagAttributeImpl(location, JsfLibrary.NAMESPACE, "action", "jsf:action", "#{test.testAction}")
                 }
             ));
         
@@ -290,7 +290,7 @@ public class DefaultHtmlDecoratorTestCase extends FaceletTestCase
         Tag tag = new Tag(location, DefaultTagDecorator.XHTML_NAMESPACE, "body", "body", 
             new TagAttributesImpl(new TagAttribute[]
                 {
-                    new TagAttributeImpl(location, DefaultTagDecorator.JSF_ALIAS_NAMESPACE, "id", "jsf:id", "idBody")
+                    new TagAttributeImpl(location, JsfLibrary.SUN_NAMESPACE, "id", "jsf:id", "idBody")
                 }
             ));
         
@@ -307,7 +307,7 @@ public class DefaultHtmlDecoratorTestCase extends FaceletTestCase
         Tag tag = new Tag(location, DefaultTagDecorator.XHTML_NAMESPACE, "a", "a", 
             new TagAttributesImpl(new TagAttribute[]
                 {
-                    new TagAttributeImpl(location, DefaultTagDecorator.JSF_ALIAS_NAMESPACE, "action", "jsf:action", "#{test.testAction}")
+                    new TagAttributeImpl(location, JsfLibrary.SUN_NAMESPACE, "action", "jsf:action", "#{test.testAction}")
                 }
             ));
         
diff --git a/impl/src/test/java/org/apache/myfaces/view/facelets/tag/faces/html/DefaultHtmlDecoratorTestCase.java b/impl/src/test/java/org/apache/myfaces/view/facelets/tag/faces/html/DefaultHtmlDecoratorTestCaseUrn.java
similarity index 97%
copy from impl/src/test/java/org/apache/myfaces/view/facelets/tag/faces/html/DefaultHtmlDecoratorTestCase.java
copy to impl/src/test/java/org/apache/myfaces/view/facelets/tag/faces/html/DefaultHtmlDecoratorTestCaseUrn.java
index 30ff14f..da3a2ea 100644
--- a/impl/src/test/java/org/apache/myfaces/view/facelets/tag/faces/html/DefaultHtmlDecoratorTestCase.java
+++ b/impl/src/test/java/org/apache/myfaces/view/facelets/tag/faces/html/DefaultHtmlDecoratorTestCaseUrn.java
@@ -18,7 +18,6 @@
  */
 package org.apache.myfaces.view.facelets.tag.faces.html;
 
-import org.apache.myfaces.view.facelets.tag.faces.html.DefaultTagDecorator;
 import java.io.StringWriter;
 import jakarta.faces.component.UIComponent;
 import jakarta.faces.component.UIForm;
@@ -55,6 +54,7 @@ import org.apache.myfaces.test.utils.HtmlRenderedAttr;
 import org.apache.myfaces.view.facelets.FaceletTestCase;
 import org.apache.myfaces.view.facelets.tag.TagAttributeImpl;
 import org.apache.myfaces.view.facelets.tag.TagAttributesImpl;
+import org.apache.myfaces.view.facelets.tag.faces.JsfLibrary;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -62,7 +62,7 @@ import org.junit.Test;
  *
  * @author Leonardo Uribe
  */
-public class DefaultHtmlDecoratorTestCase extends FaceletTestCase
+public class DefaultHtmlDecoratorTestCaseUrn extends FaceletTestCase
 {
     
     @Override
@@ -81,7 +81,7 @@ public class DefaultHtmlDecoratorTestCase extends FaceletTestCase
         request.getSession().setAttribute("test", new MockBean());
         
         UIViewRoot root = facesContext.getViewRoot();
-        vdl.buildView(facesContext, root, "testHtmlPassthrough1.xhtml");
+        vdl.buildView(facesContext, root, "testHtmlPassthrough1urn.xhtml");
 
         checkTags();
         
@@ -97,7 +97,7 @@ public class DefaultHtmlDecoratorTestCase extends FaceletTestCase
         request.getSession().setAttribute("test", new MockBean());
         
         UIViewRoot root = facesContext.getViewRoot();
-        vdl.buildView(facesContext, root, "testHtmlPassthrough2.xhtml");
+        vdl.buildView(facesContext, root, "testHtmlPassthrough2urn.xhtml");
         
         checkTags();
 
@@ -256,7 +256,7 @@ public class DefaultHtmlDecoratorTestCase extends FaceletTestCase
         Tag tag = new Tag(location, DefaultTagDecorator.XHTML_NAMESPACE, "body", "body", 
             new TagAttributesImpl(new TagAttribute[]
                 {
-                    new TagAttributeImpl(location, DefaultTagDecorator.JSF_NAMESPACE, "id", "jsf:id", "idBody")
+                    new TagAttributeImpl(location, JsfLibrary.NAMESPACE, "id", "jsf:id", "idBody")
                 }
             ));
         
@@ -273,7 +273,7 @@ public class DefaultHtmlDecoratorTestCase extends FaceletTestCase
         Tag tag = new Tag(location, DefaultTagDecorator.XHTML_NAMESPACE, "a", "a", 
             new TagAttributesImpl(new TagAttribute[]
                 {
-                    new TagAttributeImpl(location, DefaultTagDecorator.JSF_NAMESPACE, "action", "jsf:action", "#{test.testAction}")
+                    new TagAttributeImpl(location, JsfLibrary.NAMESPACE, "action", "jsf:action", "#{test.testAction}")
                 }
             ));
         
@@ -290,7 +290,7 @@ public class DefaultHtmlDecoratorTestCase extends FaceletTestCase
         Tag tag = new Tag(location, DefaultTagDecorator.XHTML_NAMESPACE, "body", "body", 
             new TagAttributesImpl(new TagAttribute[]
                 {
-                    new TagAttributeImpl(location, DefaultTagDecorator.JSF_ALIAS_NAMESPACE, "id", "jsf:id", "idBody")
+                    new TagAttributeImpl(location, JsfLibrary.SUN_NAMESPACE, "id", "jsf:id", "idBody")
                 }
             ));
         
@@ -307,7 +307,7 @@ public class DefaultHtmlDecoratorTestCase extends FaceletTestCase
         Tag tag = new Tag(location, DefaultTagDecorator.XHTML_NAMESPACE, "a", "a", 
             new TagAttributesImpl(new TagAttribute[]
                 {
-                    new TagAttributeImpl(location, DefaultTagDecorator.JSF_ALIAS_NAMESPACE, "action", "jsf:action", "#{test.testAction}")
+                    new TagAttributeImpl(location, JsfLibrary.SUN_NAMESPACE, "action", "jsf:action", "#{test.testAction}")
                 }
             ));
         
diff --git a/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/faces/html/dataTable.xml b/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/faces/html/dataTable.xml
index 72c22ed..27d7b77 100644
--- a/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/faces/html/dataTable.xml
+++ b/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/faces/html/dataTable.xml
@@ -15,9 +15,9 @@
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
-      xmlns:ui="http://java.sun.com/jsf/facelets"
-      xmlns:h="http://java.sun.com/jsf/html"
-      xmlns:f="http://java.sun.com/jsf/core">
+      xmlns:ui="jakarta.faces.facelets"
+      xmlns:h="jakarta.faces.html"
+      xmlns:f="jakarta.faces.core">
 <body>
 
 <ui:composition>
diff --git a/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/faces/html/dataTable.xml b/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/faces/html/dataTableUrn.xml
similarity index 100%
copy from impl/src/test/resources/org/apache/myfaces/view/facelets/tag/faces/html/dataTable.xml
copy to impl/src/test/resources/org/apache/myfaces/view/facelets/tag/faces/html/dataTableUrn.xml
diff --git a/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/faces/html/testHtmlPassthrough1urn.xhtml b/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/faces/html/testHtmlPassthrough1urn.xhtml
new file mode 100644
index 0000000..beb6d75
--- /dev/null
+++ b/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/faces/html/testHtmlPassthrough1urn.xhtml
@@ -0,0 +1,75 @@
+<!--
+ Licensed 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.
+
+ $Id: defineInclude.xml 804043 2009-08-13 22:08:44Z lu4242 $
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:h="jakarta.faces.html"
+	xmlns:f="jakarta.faces.core"
+        xmlns:faces="jakarta.faces">
+<head faces:id="idHead">
+    <link rel="stylesheet" type="text/css" href="custom.css"/>
+    <script type="text/javascript">
+        function hello(){
+            alert("Hello");
+        }
+    </script>
+    <link faces:id="osh" rel="stylesheet" type="text/css" faces:library="mylib" faces:name="resource.css"/>
+    <script faces:id="osc" type="text/javascript">
+        function hello(){
+            alert("Hello");
+        }
+    </script>
+</head>
+<body faces:id="idBody">
+    <form faces:id="myForm">
+        <a faces:id="link1" faces:action="#{test.testAction}"/>
+        <a faces:id="link2" faces:actionListener="#{test.testActionListener}"/>
+        <a faces:id="link3" faces:value="/my/new/location.txt"/>
+        <a faces:id="link4" faces:outcome="rollback"/>
+        <button faces:id="button1" faces:action="#{test.testAction}"/>
+        <button faces:id="button2" faces:outcome="rollback"/>
+        <img faces:id="img1" faces:url="/my/image.png"/>
+        <input faces:id="input1" type="button"/>
+        <input faces:id="input2" type="checkbox"/>
+        <input faces:id="input3" type="color"/>
+        <input faces:id="input4" type="date"/>
+        <input faces:id="input5" type="datetime"/>
+        <input faces:id="input6" type="datetime-local"/>
+        <input faces:id="input7" type="email"/>
+        <input faces:id="input8" type="month"/>
+        <input faces:id="input9" type="number"/>
+        <input faces:id="input10" type="range"/>
+        <input faces:id="input11" type="search"/>
+        <input faces:id="input12" type="time"/>
+        <input faces:id="input13" type="url"/>
+        <input faces:id="input14" type="week"/>
+        <input faces:id="input15" type="file"/>
+        <input faces:id="input16" type="hidden"/>
+        <input faces:id="input17" type="password"/>
+        <input faces:id="input18" type="reset"/>
+        <input faces:id="input19" type="submit"/>
+        <input faces:id="input20" type="anything"/>
+        <label faces:id="label1" />
+        <select faces:id="select1">
+            <f:selectItem itemValue="option1"/>
+        </select>
+        <select faces:id="select2" multiple="multiple">
+            <f:selectItem itemValue="option1"/>
+            <f:selectItem itemValue="option2"/>
+        </select>
+        <textarea faces:id="textarea1"/>
+    </form>
+</body>
+</html>
\ No newline at end of file
diff --git a/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/faces/html/testHtmlPassthrough2urn.xhtml b/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/faces/html/testHtmlPassthrough2urn.xhtml
new file mode 100644
index 0000000..d0e0d2d
--- /dev/null
+++ b/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/faces/html/testHtmlPassthrough2urn.xhtml
@@ -0,0 +1,75 @@
+<!--
+ Licensed 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.
+
+ $Id: defineInclude.xml 804043 2009-08-13 22:08:44Z lu4242 $
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:h="jakarta.faces.html"
+	xmlns:f="jakarta.faces.core"
+        xmlns:my="jakarta.faces">
+<head my:id="idHead">
+    <link rel="stylesheet" type="text/css" href="custom.css"/>
+    <script type="text/javascript">
+        function hello(){
+            alert("Hello");
+        }
+    </script>
+    <link my:id="osh" rel="stylesheet" type="text/css" my:library="mylib" my:name="resource.css"/>
+    <script my:id="osc" type="text/javascript">
+        function hello(){
+            alert("Hello");
+        }
+    </script>
+</head>
+<body my:id="idBody">
+    <form my:id="myForm">
+        <a my:id="link1" my:action="#{test.testAction}"/>
+        <a my:id="link2" my:actionListener="#{test.testActionListener}"/>
+        <a my:id="link3" my:value="/my/new/location.txt"/>
+        <a my:id="link4" my:outcome="rollback"/>
+        <button my:id="button1" my:action="#{test.testAction}"/>
+        <button my:id="button2" my:outcome="rollback"/>
+        <img my:id="img1" my:url="/my/image.png"/>
+        <input my:id="input1" type="button"/>
+        <input my:id="input2" type="checkbox"/>
+        <input my:id="input3" type="color"/>
+        <input my:id="input4" type="date"/>
+        <input my:id="input5" type="datetime"/>
+        <input my:id="input6" type="datetime-local"/>
+        <input my:id="input7" type="email"/>
+        <input my:id="input8" type="month"/>
+        <input my:id="input9" type="number"/>
+        <input my:id="input10" type="range"/>
+        <input my:id="input11" type="search"/>
+        <input my:id="input12" type="time"/>
+        <input my:id="input13" type="url"/>
+        <input my:id="input14" type="week"/>
+        <input my:id="input15" type="file"/>
+        <input my:id="input16" type="hidden"/>
+        <input my:id="input17" type="password"/>
+        <input my:id="input18" type="reset"/>
+        <input my:id="input19" type="submit"/>
+        <input my:id="input20" type="anything"/>
+        <label my:id="label1" />
+        <select my:id="select1">
+            <f:selectItem itemValue="option1"/>
+        </select>
+        <select my:id="select2" multiple="multiple">
+            <f:selectItem itemValue="option1"/>
+            <f:selectItem itemValue="option2"/>
+        </select>
+        <textarea my:id="textarea1"/>
+    </form>
+</body>
+</html>
\ No newline at end of file