function
| Library: URI handling (OMURI) Import : omuri.xmd | Returns: the resolved relative-uri | 
export string function
   extend      value string base-uri
          with value string relative-uri
  
Argument definitions
 The function uri.extend resolves relative URI references. If base-uri is an absolute URI and
        relative-uri is a relative one, the result will be an absolute URI reference. If they are both
        relative, the result of uri.extend will be a relative URI. You can use uri.relative to perform
        the opposite operation and convert an absolute URI into a relative form.
      
 There are two exceptional cases. If relative-uri is an absolute URI itself, uri.extend
        throws uri.already-absolute to indicate that. Alternatively, if relative-uri consists only of
        a URI fragment (e.g. "#section1"), uri.extend throws uri.current-document-reference.
        Neither exception has any parameters.
      
 In the following example, the function fetch-fresh-page uses uri.extend to resolve HTTP
        redirections and access the content of an HTML page even if it has been moved to a new location.
import "omuri.xmd" prefixed by uri. import "omvfs.xmd" prefixed by vfs. define string source function fetch-fresh-page value string url as local vfs.file html-page initial { vfs.open-http url } do scan vfs.reader of html-page match ul '<html>' white-space* '<meta' white-space+ 'http-equiv="refresh"' white-space+ 'content="0; url=' any ** => new-url '"' white-space* '>' output fetch-fresh-page uri.extend url with new-url ; uri.current-document-reference cannot be handled here catch uri.already-absolute output fetch-fresh-page new-url else output #current-input done