- QName q1 = o1.getQName();
- QName q2 = o2.getQName();
- int result = q1.getLocalName().compareTo(q2.getLocalName());
- if (result == 0) {
- URI ns1 = q1.getNamespace();
- URI ns2 = q2.getNamespace();
- if (ns1 == null && ns2 == null) {
- Date rev1 = q1.getRevision();
- Date rev2 = q2.getRevision();
-
- if (rev1 == null && rev2 == null) {
- String p1 = q1.getPrefix();
- String p2 = q2.getPrefix();
- if (p1 == null && p2 == null) {
- throw new IllegalArgumentException("Failed to sort nodes: " + o1 + ", " + o2);
- }
- if (p1 == null || p2 == null) {
- if (p1 == null) {
- return -1;
- } else {
- return 1;
- }
- }
- return p1.compareTo(p2);
- }
- if (rev1 == null || rev2 == null) {
- if (rev1 == null) {
- return -1;
- } else {
- return -2;
- }
- }
- return rev1.compareTo(rev2);
- }
- if (ns1 == null || ns2 == null) {
- if (ns1 == null) {
- return -1;
- } else {
- return 1;
- }
- }
- return ns1.toString().compareTo(ns2.toString());
- } else {
- return result;
- }