Package net.sf.saxon.om

## Class DocumentKey

- java.lang.Object
- - net.sf.saxon.om.DocumentKey

-     public class DocumentKey
      extends java.lang.Object

  This class encapsulates a string used as the value of the document-uri() property of a document, together with a normalized representation of the string used for equality comparisons. The idea is that on Windows systems, document URIs are compared using case-blind comparison, but the original case is retained for display purposes.

  The package name and version of the document reference are retained, because calls of doc() in different packages, using the same absolute URI, may return different documents, as a result of the treatment of whitespace and type annotations varying.

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static boolean` | `CASE_BLIND_FILES` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `DocumentKey​(java.lang.String uri)` | Create a DocumentURI object that wraps a given URI
    `DocumentKey​(java.lang.String uri, java.lang.String packageName, PackageVersion version)` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `boolean` | `equals​(java.lang.Object obj)` |
    `java.lang.String` | `getAbsoluteURI()` |
    `int` | `hashCode()` |
    `static java.lang.String` | `normalizeURI​(java.lang.String uri)` | Normalize the representation of file: URIs to give better equality matching than straight string comparison.
    `java.lang.String` | `toString()` |

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### CASE_BLIND_FILES

          public static final boolean CASE_BLIND_FILES

  - ### Constructor Detail

    - #### DocumentKey

          public DocumentKey​(java.lang.String uri)

      Create a DocumentURI object that wraps a given URI
      Parameters:
        `uri` - the URI to be wrapped. Must not be null
      Throws:
        `java.lang.NullPointerException` - if uri is null

    - #### DocumentKey

          public DocumentKey​(java.lang.String uri,
                             java.lang.String packageName,
                             PackageVersion version)

  - ### Method Detail

    - #### getAbsoluteURI

          public java.lang.String getAbsoluteURI()

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`

    - #### equals

          public boolean equals​(java.lang.Object obj)

      Overrides:
        `equals` in class `java.lang.Object`

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `java.lang.Object`

    - #### normalizeURI

          public static java.lang.String normalizeURI​(java.lang.String uri)

      Normalize the representation of file: URIs to give better equality matching than straight string comparison. The main purpose is (a) to eliminate the distinction between "file:/" and "file:///", and (b) to normalize case in the case of Windows filenames: especially the distinction between "file:/C:" and "file:/c:".
      Parameters:
        `uri` - the URI to be normalized
      Returns:
        the normalized URI.