Change representation of namespace URIs to use the URI data
authorChris Hanson <org/chris-hanson/cph>
Mon, 30 Jan 2006 21:05:54 +0000 (21:05 +0000)
committerChris Hanson <org/chris-hanson/cph>
Mon, 30 Jan 2006 21:05:54 +0000 (21:05 +0000)
abstraction.

v7/doc/ref-manual/io.texi
v7/src/xdoc/xdoc.scm
v7/src/xml/xhtml.scm
v7/src/xml/xml-names.scm
v7/src/xml/xml-parser.scm
v7/src/xml/xml-struct.scm
v7/src/xml/xml.pkg

index deab818c04f7dba28830813cbe2bbce05876cd35..7f6d3edb691a1722d85303db5772eb96f564bf92 100644 (file)
@@ -1,5 +1,5 @@
 @c This file is part of the MIT/GNU Scheme Reference Manual.
-@c $Id: io.texi,v 1.12 2006/01/30 20:22:41 cph Exp $
+@c $Id: io.texi,v 1.13 2006/01/30 21:05:54 cph Exp $
 
 @c Copyright 1991,1992,1993,1994,1995 Massachusetts Institute of Technology
 @c Copyright 1996,1997,1999,2000,2001 Massachusetts Institute of Technology
@@ -3052,7 +3052,7 @@ identifies an optional namespace.
 @deffn procedure make-xml-name qname uri
 Creates and returns an @acronym{XML} name.  @var{Qname} must be a symbol
 whose name satisfies @code{string-is-xml-name?}.  @var{Uri} must be an
-@code{xml-namespace-uri} record.  The returned value is an @acronym{XML}
+absolute @acronym{URI} record.  The returned value is an @acronym{XML}
 name that satisfies @code{xml-name?}.
 
 If @var{uri} is the @dfn{null} namespace (satisfies
@@ -3064,8 +3064,8 @@ For convenience, @var{qname} may be a string, in which case it is
 converted to a symbol using @code{make-xml-qname}.
 
 For convenience, @var{uri} may be a string, in which case it is
-converted to an @code{xml-namespace-uri} record using
-@code{make-xml-namespace-uri}.
+converted to an absolute @acronym{URI} record using
+@code{->absolute-uri}.
 @end deffn
 
 @deffn procedure xml-name? object
@@ -3078,7 +3078,7 @@ Returns the @dfn{qname} of @var{xml-name} as a symbol.
 @end deffn
 
 @deffn procedure xml-name-uri xml-name
-Returns the @dfn{URI} of @var{xml-name} as an @code{xml-namespace-uri}
+Returns the @dfn{URI} of @var{xml-name} as an absolute @acronym{URI}
 record.
 @end deffn
 
@@ -3170,26 +3170,6 @@ particular syntax, but this implementation uses an abstract
 representation that speeds up type and equality testing.  Two
 @acronym{URI}s are tested for equality using @code{eq?}.
 
-@deffn procedure make-xml-namespace-uri string
-@var{String} must be a syntactically valid @acronym{URI} encoded in
-@acronym{UTF-8}.  Returns the corresponding @acronym{URI}.
-@end deffn
-
-@deffn procedure xml-namespace-uri? object
-Returns @code{#t} if @var{object} is an @acronym{URI} record, otherwise
-returns @code{#f}.
-@end deffn
-
-@deffn procedure xml-namespace-uri-string uri
-@var{Uri} must satisfy @code{xml-namespace-uri?}.  Returns a newly
-allocated string that is a copy of the string used to create @var{uri}.
-@end deffn
-
-The @acronym{URI} of an @acronym{XML} name may be null if there is no
-namespace associated with the name.  The null @acronym{URI} is
-abstracted by the following two procedures.  Note that the null
-@acronym{URI} satisfies the predicate @code{xml-namespace-uri?}.
-
 @deffn procedure null-xml-namespace-uri
 Returns the null @acronym{URI} record.
 @end deffn
index d5b285feb34c1466df7f69e924ea9fdeac1cbf9e..3512cb04521836e2c8ae7a897b2ea0b74f099d6d 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: xdoc.scm,v 1.3 2006/01/30 20:23:05 cph Exp $
+$Id: xdoc.scm,v 1.4 2006/01/30 21:05:45 cph Exp $
 
 Copyright 2003,2004,2006 Massachusetts Institute of Technology
 
@@ -1291,7 +1291,7 @@ USA.
        (xml-name=? name 'style)
        (and (xml-name-prefix=? name 'xmlns)
             (not (string=? (xml-attribute-value attr)
-                           (xml-namespace-uri-string xdoc-uri)))))))
+                           (uri->string xdoc-uri)))))))
 
 (define (merged-attribute? attr)
   (let ((name (xml-attribute-name attr)))
@@ -1405,7 +1405,7 @@ USA.
 ;;;; XDOC element data types
 
 (define xdoc-uri
-  (make-xml-namespace-uri "http://mit.edu/2003/XDOC"))
+  (->absolute-uri "http://mit.edu/2003/XDOC"))
 
 (define (xdoc-name? name)
   (xml-name-uri=? name xdoc-uri))
index 271a365440907624e0979d32ea0357f6b0819540..186c854b7d782ce1eba536925bb1ef9e3a4c9669 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: xhtml.scm,v 1.20 2006/01/30 20:20:40 cph Exp $
+$Id: xhtml.scm,v 1.21 2006/01/30 21:05:29 cph Exp $
 
 Copyright 2002,2003,2004,2005,2006 Massachusetts Institute of Technology
 
@@ -28,7 +28,7 @@ USA.
 (declare (usual-integrations))
 \f
 (define html-uri-string "http://www.w3.org/1999/xhtml")
-(define html-uri (make-xml-namespace-uri html-uri-string))
+(define html-uri (->absolute-uri html-uri-string))
 
 (define (html-element? object)
   (and (xml-element? object)
index de08fefdc82b3b36daa13b8664c769b1dbe91bdb..0749f90fc33f19a6db19979ad3cbfb14bcc8c921 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: xml-names.scm,v 1.10 2006/01/30 20:20:42 cph Exp $
+$Id: xml-names.scm,v 1.11 2006/01/30 21:05:31 cph Exp $
 
 Copyright 2003,2004,2005,2006 Massachusetts Institute of Technology
 
@@ -29,7 +29,7 @@ USA.
 \f
 (define (make-xml-name qname uri)
   (let ((qname (make-xml-qname qname))
-       (uri (make-xml-namespace-uri uri)))
+       (uri (->absolute-uri uri)))
     (if (null-xml-namespace-uri? uri)
        qname
        (begin
@@ -274,37 +274,6 @@ USA.
 \f
 ;;;; Namespace URI
 
-(define (make-xml-namespace-uri object)
-  (if (string? object)
-      (begin
-       (if (not (string-is-namespace-uri? object))
-           (error:bad-range-argument object 'MAKE-XML-NAMESPACE-URI))
-       (hash-table/intern! namespace-uris object
-         (lambda ()
-           (%make-xml-namespace-uri object))))
-      (begin
-       (guarantee-xml-namespace-uri object 'MAKE-XML-NAMESPACE-URI)
-       object)))
-
-(define (string-is-namespace-uri? object)
-  ;; See RFC 1630 for correct syntax.
-  (utf8-string-valid? object))
-
-(define namespace-uris
-  (make-string-hash-table))
-
-(define-record-type <xml-namespace-uri>
-    (%make-xml-namespace-uri string)
-    xml-namespace-uri?
-  (string %xml-namespace-uri-string))
-
-(define (guarantee-xml-namespace-uri object caller)
-  (if (not (xml-namespace-uri? object))
-      (error:not-xml-namespace-uri object caller)))
-
-(define (xml-namespace-uri-string uri)
-  (string-copy (%xml-namespace-uri-string uri)))
-
 (define (null-xml-namespace-uri? object)
   (eq? object null-namespace-uri))
 
@@ -312,13 +281,10 @@ USA.
   null-namespace-uri)
 
 (define null-namespace-uri
-  (make-xml-namespace-uri ""))
-
-(define (error:not-xml-namespace-uri object caller)
-  (error:wrong-type-argument object "an XML namespace URI" caller))
+  (->relative-uri ""))
 
 (define xml-uri
-  (make-xml-namespace-uri "http://www.w3.org/XML/1998/namespace"))
+  (->absolute-uri "http://www.w3.org/XML/1998/namespace"))
 
 (define xmlns-uri
-  (make-xml-namespace-uri "http://www.w3.org/2000/xmlns/"))
\ No newline at end of file
+  (->absolute-uri "http://www.w3.org/2000/xmlns/"))
\ No newline at end of file
index 4f1e1da5652e46ec4d50acc30e491abbaf77ffd1..31e5afd3cce149f75204b3fbbf5c23a48ec6c184 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: xml-parser.scm,v 1.66 2006/01/30 20:20:44 cph Exp $
+$Id: xml-parser.scm,v 1.67 2006/01/30 21:05:32 cph Exp $
 
 Copyright 2001,2002,2003,2004,2005,2006 Massachusetts Institute of Technology
 
@@ -566,7 +566,11 @@ USA.
                    (tail (loop (cdr attrs))))
                (let ((qname (car uname))
                      (p (cdr uname)))
-                 (let ((get-uri (lambda () (make-xml-namespace-uri value)))
+                 (let ((get-uri
+                        (lambda ()
+                          (if (string-null? value)
+                              (null-xml-namespace-uri)
+                              (->absolute-uri value))))
                        (forbidden-uri
                         (lambda (uri)
                           (perror p "Forbidden namespace URI" uri))))
index 12964d4ecdf17f44a7cdf9eb8add97e82d3a2ac5..cc0013d87aefe5b7cd01eb107cc08903733034e7 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: xml-struct.scm,v 1.51 2006/01/30 20:20:46 cph Exp $
+$Id: xml-struct.scm,v 1.52 2006/01/30 21:05:33 cph Exp $
 
 Copyright 2001,2002,2003,2004,2005,2006 Massachusetts Institute of Technology
 
@@ -437,10 +437,12 @@ USA.
                            (symbol-append 'xmlns: prefix))
                        elt)))
     (and value
-        (make-xml-namespace-uri value))))
+        (if (string-null? value)
+            (null-xml-namespace-uri)
+            (->absolute-uri value)))))
 
 (define (xml-element-namespace-prefix elt uri)
-  (let ((uri (xml-namespace-uri-string uri)))
+  (let ((uri (uri->string uri)))
     (let ((attr
           (find-matching-item (xml-element-attributes elt)
             (lambda (attr)
@@ -569,7 +571,7 @@ USA.
   (cond ((xml-content-item? value) value)
        ((symbol? value) (symbol-name value))
        ((number? value) (number->string value))
-       ((xml-namespace-uri? value) (xml-namespace-uri-string value))
+       ((uri? value) (uri->string value))
        ((list-of-type? value xml-nmtoken?) (nmtokens->string value))
        (else (error:wrong-type-datum value "XML string value"))))
 
index 7e5f1566c65ceccd68cea59d37ea62e695bc2785..aabc20d73076af5ec59b819791dc4a9fa32c5a65 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: xml.pkg,v 1.62 2006/01/30 20:20:41 cph Exp $
+$Id: xml.pkg,v 1.63 2006/01/30 21:05:30 cph Exp $
 
 Copyright 2001,2002,2003,2004,2005,2006 Massachusetts Institute of Technology
 
@@ -36,18 +36,14 @@ USA.
   (files "xml-names")
   (parent (runtime xml))
   (export ()
-         <xml-namespace-uri>
          error:not-xml-name
-         error:not-xml-namespace-uri
          error:not-xml-nmtoken
          error:not-xml-qname
          guarantee-xml-name
-         guarantee-xml-namespace-uri
          guarantee-xml-nmtoken
          guarantee-xml-qname
          make-xml-name
          make-xml-name-hash-table
-         make-xml-namespace-uri
          make-xml-nmtoken
          make-xml-qname
          null-xml-name-prefix
@@ -68,8 +64,6 @@ USA.
          xml-name-uri=?
          xml-name=?
          xml-name?
-         xml-namespace-uri-string
-         xml-namespace-uri?
          xml-nmtoken-string
          xml-nmtoken?
          xml-qname-local