Re: Namespaces

Eric Jain wrote:

> I have long wondered what is the correct way to extract a namespace and
> local name from arbitrary resources. This is what I am doing, currently:
> 
...
> I suspect this approach is broken (for example, there is no requirement
> that the last part of a path be a valid QName etc.). So how are other
> people handling this? 
> 

      * The algorithm tries to find the longest NCName at the end
      * of the uri, not immediately preceeded by the first colon
      * in the string.
(Note complexities to do with NCName chars being a bigger set than 
NCNameStart chars)

     public static int splitNamespace(String uri) {
         char ch;
         int lg = uri.length();
         if (lg == 0)
             return 0;
         int j;
         int i;
         for (i = lg - 1; i >= 1; i--) {
             ch = uri.charAt(i);
             if (!XMLChar.isNCName(ch))
                 break;
         }
         for (j = i + 1; j < lg; j++) {
             ch = uri.charAt(j);
             if (XMLChar.isNCNameStart(ch)) {
                 if (uri.charAt(j - 1) == ':'
                     && uri.lastIndexOf(':', j - 2) == -1)
                     continue; // split "mailto:me" as "mailto:m" and "e" !
                 else
                     break;
             }
         }
         return j;
     }


http://cvs.sourceforge.net/viewcvs.py/jena/jena2/src/com/hp/hpl/jena/rdf/model/impl/Util.java?view=markup

Received on Friday, 26 March 2004 12:23:15 UTC