--- /dev/null
+package mir.util.xml;\r
+\r
+/**\r
+ * Class to encapsulate an XML-style name (either for tagnames,\r
+ * or attribute names).\r
+ *\r
+ * <p>\r
+ * Usage requirements:\r
+ * <ul>\r
+ * <li> Namespace aware parsers must supply a local name\r
+ * and a namespace URI\r
+ * <li> Non-namespace aware parsers should supply a local name,\r
+ * and, if present and applicable, also a prefix\r
+ * </ul>\r
+ */\r
+\r
+public class XMLName {\r
+ private String namespaceURI;\r
+ private String localName;\r
+ private String prefix;\r
+\r
+ public XMLName(String aLocalName) {\r
+ this(null, null, aLocalName);\r
+ }\r
+\r
+ public XMLName(String aNamespaceURI, String aPrefix, String aLocalName) {\r
+ localName="";\r
+ prefix="";\r
+ namespaceURI="";\r
+\r
+ if (aLocalName!=null)\r
+ localName = aLocalName;\r
+ if (aPrefix!=null)\r
+ prefix = aPrefix;\r
+ if (aNamespaceURI!=null)\r
+ namespaceURI = aNamespaceURI;\r
+ }\r
+\r
+ public XMLName(String aNamespaceURI, String aLocalName) {\r
+ this (aNamespaceURI, null, aLocalName);\r
+ }\r
+\r
+ /**\r
+ * Returns the namespace URI if available\r
+ */\r
+ public String getNamespaceURI() {\r
+ return namespaceURI;\r
+ }\r
+\r
+ /**\r
+ * Returns the name of the tag, stripped from prefix\r
+ */\r
+ public String getLocalName() {\r
+ return localName;\r
+ }\r
+\r
+ /**\r
+ * Returns the prefix of the tag, if present\r
+ */\r
+ public String getPrefix() {\r
+ return prefix;\r
+ }\r
+\r
+ public int hashCode() {\r
+ if (namespaceURI == null)\r
+ return localName.hashCode() + 3*prefix.hashCode();\r
+ else\r
+ return localName.hashCode() + 3*namespaceURI.hashCode();\r
+ }\r
+\r
+ public String toString() {\r
+ return ((namespaceURI.length()>0)? "["+namespaceURI+"]":"")+((prefix.length()>0)?prefix+":":"")+localName;\r
+ }\r
+\r
+ public boolean equals(Object anObject) {\r
+ if (anObject instanceof mir.util.xml.XMLName) {\r
+ if (namespaceURI==null)\r
+ return (((mir.util.xml.XMLName) anObject).namespaceURI == null) &&\r
+ prefix.equals(((mir.util.xml.XMLName) anObject).prefix) &&\r
+ localName.equals(((mir.util.xml.XMLName) anObject).localName);\r
+ else\r
+ return namespaceURI.equals(((mir.util.xml.XMLName) anObject).namespaceURI) &&\r
+ localName.equals(((mir.util.xml.XMLName) anObject).localName);\r
+ }\r
+ else\r
+ return false;\r
+ }\r
+}\r