AttrComparepublic class AttrCompare extends Object implements ComparatorCompares two attributes based on the C14n specification.
- Namespace nodes have a lesser document order position than attribute nodes.
- An element's namespace nodes are sorted lexicographically by
local name (the default namespace node, if one exists, has no
local name and is therefore lexicographically least).
- An element's attribute nodes are sorted lexicographically with
namespace URI as the primary key and local name as the secondary
key (an empty namespace URI is lexicographically least).
$todo$ Should we implement java.util.Comparator and import java.util.Arrays to use Arrays.sort(intarray); |
Fields Summary |
---|
private final int | ATTR0_BEFORE_ATTR1 | private final int | ATTR1_BEFORE_ATTR0 | private static final String | XMLNS |
Methods Summary |
---|
public int | compare(java.lang.Object obj0, java.lang.Object obj1)Compares two attributes based on the C14n specification.
- Namespace nodes have a lesser document order position than attribute nodes.
- An element's namespace nodes are sorted lexicographically by
local name (the default namespace node, if one exists, has no
local name and is therefore lexicographically least).
- An element's attribute nodes are sorted lexicographically with
namespace URI as the primary key and local name as the secondary
key (an empty namespace URI is lexicographically least).
Attr attr0 = (Attr) obj0;
Attr attr1 = (Attr) obj1;
String namespaceURI0 = attr0.getNamespaceURI();
String namespaceURI1 = attr1.getNamespaceURI();
boolean isNamespaceAttr0 =
XMLNS.equals(namespaceURI0);
boolean isNamespaceAttr1 =
XMLNS.equals(namespaceURI1);
if (isNamespaceAttr0) {
if (isNamespaceAttr1) {
// both are namespaces
String localname0 = attr0.getLocalName();
String localname1 = attr1.getLocalName();
if (localname0.equals("xmlns")) {
localname0 = "";
}
if (localname1.equals("xmlns")) {
localname1 = "";
}
return localname0.compareTo(localname1);
}
// attr0 is a namespace, attr1 is not
return ATTR0_BEFORE_ATTR1;
}
if (isNamespaceAttr1) {
// attr1 is a namespace, attr0 is not
return ATTR1_BEFORE_ATTR0;
}
// none is a namespae
if (namespaceURI0 == null) {
if (namespaceURI1 == null) {
/*
String localName0 = attr0.getLocalName();
String localName1 = attr1.getLocalName();
return localName0.compareTo(localName1);
*/
String name0 = attr0.getName();
String name1 = attr1.getName();
return name0.compareTo(name1);
}
return ATTR0_BEFORE_ATTR1;
}
if (namespaceURI1 == null) {
return ATTR1_BEFORE_ATTR0;
}
int a = namespaceURI0.compareTo(namespaceURI1);
if (a != 0) {
return a;
}
/*
String localName0 = ;
String localName1 =;*/
return (attr0.getLocalName())
.compareTo( attr1.getLocalName());
|
|