< prev index next >

src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/runtime/BasisLibrary.java

Print this page
rev 1019 : 8168664: [JAXP] XALAN: xsl:element generates namespace prefixes if namespace is given as URI only

@@ -15,13 +15,10 @@
  * 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: BasisLibrary.java,v 1.6 2006/06/20 21:51:58 spericas Exp $
- */
 
 package com.sun.org.apache.xalan.internal.xsltc.runtime;
 
 import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
 import java.text.DecimalFormat;

@@ -1159,49 +1156,10 @@
 
         return nodeList2Iterator(nodelist, translet, dom);
     }
 
     /**
-     * In a perfect world, this would be the implementation for
-     * nodeList2Iterator. In reality, though, this causes a
-     * ClassCastException in getDTMHandleFromNode because SAXImpl is
-     * not an instance of DOM2DTM. So we use the more lengthy
-     * implementation below until this issue has been addressed.
-     *
-     * @see org.apache.xml.dtm.ref.DTMManagerDefault#getDTMHandleFromNode
-     */
-    private static DTMAxisIterator nodeList2IteratorUsingHandleFromNode(
-                                        org.w3c.dom.NodeList nodeList,
-                                        Translet translet, DOM dom)
-    {
-        final int n = nodeList.getLength();
-        final int[] dtmHandles = new int[n];
-        DTMManager dtmManager = null;
-        if (dom instanceof MultiDOM)
-            dtmManager = ((MultiDOM) dom).getDTMManager();
-        for (int i = 0; i < n; ++i) {
-            org.w3c.dom.Node node = nodeList.item(i);
-            int handle;
-            if (dtmManager != null) {
-                handle = dtmManager.getDTMHandleFromNode(node);
-            }
-            else if (node instanceof DTMNodeProxy
-                     && ((DTMNodeProxy) node).getDTM() == dom) {
-                handle = ((DTMNodeProxy) node).getDTMNodeNumber();
-            }
-            else {
-                runTimeError(RUN_TIME_INTERNAL_ERR, "need MultiDOM");
-                return null;
-            }
-            dtmHandles[i] = handle;
-            System.out.println("Node " + i + " has handle 0x" +
-                               Integer.toString(handle, 16));
-        }
-        return new ArrayNodeListIterator(dtmHandles);
-    }
-
-    /**
      * Utility function used to convert a w3c NodeList into a internal
      * DOM iterator.
      */
     public static DTMAxisIterator nodeList2Iterator(
                                         org.w3c.dom.NodeList nodeList,

@@ -1465,62 +1423,54 @@
      * Utility function to check if a name is a valid qname
      * This method should only be invoked if the attribute value is an AVT
      */
     public static void checkQName(String name) {
         if (!XML11Char.isXML11ValidQName(name)) {
-            runTimeError(INVALID_QNAME_ERR,name);
+            runTimeError(INVALID_QNAME_ERR, name);
         }
     }
 
     /**
      * Utility function for the implementation of xsl:element.
      */
     public static String startXslElement(String qname, String namespace,
         SerializationHandler handler, DOM dom, int node)
     {
         try {
-            // Get prefix from qname
-            String prefix;
             final int index = qname.indexOf(':');
-
             if (index > 0) {
-                prefix = qname.substring(0, index);
+                // qname has a prefix
+                String prefix = qname.substring(0, index);
 
-                // Handle case when prefix is not known at compile time
+                // handle case when prefix is not known at compile time
                 if (namespace == null || namespace.length() == 0) {
                     try {
                         // not sure if this line of code ever works
                         namespace = dom.lookupNamespace(node, prefix);
-                    }
-                    catch(RuntimeException e) {
-                        handler.flushPending();  // need to flush or else can't get namespacemappings
+                    } catch (RuntimeException e) {
+                        // need to flush or else can't get namespacemappings
+                        handler.flushPending();
                         NamespaceMappings nm = handler.getNamespaceMappings();
                         namespace = nm.lookupNamespace(prefix);
                         if (namespace == null) {
-                            runTimeError(NAMESPACE_PREFIX_ERR,prefix);
+                            runTimeError(NAMESPACE_PREFIX_ERR, prefix);
                         }
                     }
                 }
 
-                handler.startElement(namespace, qname.substring(index+1),
-                                         qname);
+                handler.startElement(namespace, qname.substring(index + 1),
+                                     qname);
                 handler.namespaceAfterStartElement(prefix, namespace);
-            }
-            else {
-                // Need to generate a prefix?
+            } else {
+                // qname has no prefix
                 if (namespace != null && namespace.length() > 0) {
-                    prefix = generatePrefix();
-                    qname = prefix + ':' + qname;
                     handler.startElement(namespace, qname, qname);
-                    handler.namespaceAfterStartElement(prefix, namespace);
-                }
-                else {
+                } else {
                     handler.startElement(null, null, qname);
                 }
             }
-        }
-        catch (SAXException e) {
+        } catch (SAXException e) {
             throw new RuntimeException(e.getMessage());
         }
 
         return qname;
     }
< prev index next >