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