/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
package lux.xml;
import org.apache.commons.lang.StringUtils;
public final class QName extends javax.xml.namespace.QName {
public QName(String localPart) {
super(localPart);
}
public QName(String namespace, String localName) {
super (namespace, localName);
}
public QName(String namespace, String localName, String prefix) {
super (namespace, localName, prefix);
}
public void toString (StringBuilder buf) {
if (! getPrefix ().equals ("")) {
buf.append (getPrefix()).append(':');
}
buf.append (getLocalPart());
}
@Override public String toString () {
StringBuilder buf = new StringBuilder ();
toString (buf);
return buf.toString();
}
/**
* The Clark name is named after James Clark. It has the namespace surrounded by {},
* followed by the local name. We omit the {} when the namespace is empty.
* @return the Clark name
*/
public String getClarkName () {
if (getNamespaceURI().isEmpty())
return getLocalPart();
StringBuilder buf = new StringBuilder ();
buf.append ('{').append(getNamespaceURI()).append('}').append(getLocalPart());
return buf.toString();
}
/**
* @return the name encoded in a suitable form for indexing. The namespace uri, if any,
* is wrapped in {} and appended to the local-name.
*/
public String getEncodedName() {
return encode (getLocalPart(), getNamespaceURI());
}
/**
* @param localPart the local part of the QName to encode
* @param namespaceURI the namespace (URI) of the QName to encode (may be null)
* @return the QName encoded in a suitable form for indexing. The namespace uri, if any,
* is wrapped in {} and appended to the local-name.
*/
public static String encode (String localPart, String namespaceURI) {
if (StringUtils.isEmpty(namespaceURI)) {
return localPart;
}
StringBuilder buf = new StringBuilder ();
buf.append(localPart).append ('{').append(namespaceURI).append("}");
return buf.toString();
}
}
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */