aboutsummaryrefslogtreecommitdiff
path: root/src/share/classes/com/sun/org/apache/xml/internal/resolver/helpers/Namespaces.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/share/classes/com/sun/org/apache/xml/internal/resolver/helpers/Namespaces.java')
-rw-r--r--src/share/classes/com/sun/org/apache/xml/internal/resolver/helpers/Namespaces.java114
1 files changed, 114 insertions, 0 deletions
diff --git a/src/share/classes/com/sun/org/apache/xml/internal/resolver/helpers/Namespaces.java b/src/share/classes/com/sun/org/apache/xml/internal/resolver/helpers/Namespaces.java
new file mode 100644
index 0000000..02624a6
--- /dev/null
+++ b/src/share/classes/com/sun/org/apache/xml/internal/resolver/helpers/Namespaces.java
@@ -0,0 +1,114 @@
+/*
+ * reserved comment block
+ * DO NOT REMOVE OR ALTER!
+ */
+// Namespaces.java - Analyze namespace nodes in a DOM tree
+
+/*
+ * Copyright 2001-2004 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * 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.
+ */
+
+package com.sun.org.apache.xml.internal.resolver.helpers;
+
+import org.w3c.dom.*;
+
+/**
+ * Static Namespace query methods.
+ *
+ * <p>This class defines a set of static methods that can be called
+ * to analyze the namespace properties of DOM nodes.</p>
+ *
+ * @author Norman Walsh
+ * <a href="mailto:Norman.Walsh@Sun.COM">Norman.Walsh@Sun.COM</a>
+ *
+ */
+public class Namespaces {
+ /**
+ * Returns the "prefix" part of a QName or the empty string (not
+ * null) if the name has no prefix.
+ *
+ * @param element The QName of an element.
+ * @return The prefix part of the element name.
+ */
+ public static String getPrefix(Element element) {
+ String name = element.getTagName();
+ String prefix = "";
+
+ if (name.indexOf(':') > 0) {
+ prefix = name.substring(0, name.indexOf(':'));
+ }
+
+ return prefix;
+ }
+
+ /**
+ * Returns the "localname" part of a QName, which is the whole
+ * name if it has no prefix.
+ *
+ * @param element The QName of an element.
+ * @return The local part of a QName.
+ */
+ public static String getLocalName(Element element) {
+ String name = element.getTagName();
+
+ if (name.indexOf(':') > 0) {
+ name = name.substring(name.indexOf(':')+1);
+ }
+
+ return name;
+ }
+
+ /**
+ * Returns the namespace URI for the specified prefix at the
+ * specified context node.
+ *
+ * @param node The context node.
+ * @param prefix The prefix.
+ * @return The namespace URI associated with the prefix, or
+ * null if no namespace declaration exists for the prefix.
+ */
+ public static String getNamespaceURI(Node node, String prefix) {
+ if (node == null || node.getNodeType() != Node.ELEMENT_NODE) {
+ return null;
+ }
+
+ if (prefix.equals("")) {
+ if (((Element) node).hasAttribute("xmlns")) {
+ return ((Element) node).getAttribute("xmlns");
+ }
+ } else {
+ String nsattr = "xmlns:" + prefix;
+ if (((Element) node).hasAttribute(nsattr)) {
+ return ((Element) node).getAttribute(nsattr);
+ }
+ }
+
+ return getNamespaceURI(node.getParentNode(), prefix);
+ }
+
+ /**
+ * Returns the namespace URI for the namespace to which the
+ * element belongs.
+ *
+ * @param element The element.
+ * @return The namespace URI associated with the namespace of the
+ * element, or null if no namespace declaration exists for it.
+ */
+ public static String getNamespaceURI(Element element) {
+ String prefix = getPrefix(element);
+ return getNamespaceURI(element, prefix);
+ }
+}