Export predicates for some key data structures. Allow use of wide
authorChris Hanson <org/chris-hanson/cph>
Sun, 13 Jul 2003 03:41:29 +0000 (03:41 +0000)
committerChris Hanson <org/chris-hanson/cph>
Sun, 13 Jul 2003 03:41:29 +0000 (03:41 +0000)
strings wherever they make sense.

v7/src/xml/xml-struct.scm
v7/src/xml/xml.pkg

index 9f0ae88063a892cae7e4ae3adcc8e538bf4cac78..9730d0ff3e98efe4d7f5c787f70aa11e4a4fad57 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: xml-struct.scm,v 1.13 2003/07/12 04:34:43 cph Exp $
+$Id: xml-struct.scm,v 1.14 2003/07/13 03:41:29 cph Exp $
 
 Copyright 2001,2002,2003 Massachusetts Institute of Technology
 
@@ -156,43 +156,50 @@ USA.
 (define char-set:xml-encoding
   (char-set-union char-set:alphanumeric
                  (string->char-set "_.-")))
-
+\f
 (define-xml-type element
   (name xml-name?)
-  (attributes
-   (lambda (object)
-     (list-of-type? object
-       (lambda (object)
-        (and (pair? object)
-             (xml-name? (car object))
-             (attribute-value? (cdr object)))))))
-  (contents
-   (lambda (object)
-     (list-of-type? object
-       (lambda (object)
-        (or (string? object)
-            (wide-string? object)
-            (xml-comment? object)
-            (xml-element? object)
-            (xml-processing-instructions? object)
-            (xml-entity-ref? object)))))))
-
-(define (attribute-value? object)
+  (attributes xml-attribute-list?)
+  (contents xml-content?))
+
+(define (xml-attribute-list? object)
+  (list-of-type? object xml-attribute?))
+
+(define (xml-attribute? object)
+  (and (pair? object)
+       (xml-name? (car object))
+       (xml-attribute-value? (cdr object))))
+
+(define (xml-attribute-value? object)
   (and (pair? object)
        (list-of-type? object
         (lambda (object)
-          (or (string? object)
+          (or (xml-char-data? object)
               (xml-entity-ref? object))))))
 
+(define (xml-content? object)
+  (list-of-type? object xml-content-item?))
+
+(define (xml-content-item? object)
+  (or (xml-char-data? object)
+      (xml-comment? object)
+      (xml-element? object)
+      (xml-processing-instructions? object)
+      (xml-entity-ref? object)))
+
+(define (xml-char-data? object)
+  (or (string? object)
+      (wide-string? object)))
+
 (define-xml-type comment
-  (text string?))
+  (text xml-char-data?))
 
 (define-xml-type processing-instructions
   (name
    (lambda (object)
      (and (xml-name? object)
          (not (string-ci=? "xml" (symbol-name object))))))
-  (text string?))
+  (text xml-char-data?))
 \f
 (define-xml-type dtd
   (root xml-name?)
@@ -221,7 +228,7 @@ USA.
   (uri
    (lambda (object)
      (or (not object)
-        (string? object)))))
+        (xml-char-data? object)))))
 
 (define (public-id? object)
   (string-composed-of? object char-set:xml-public-id))
@@ -299,10 +306,10 @@ USA.
       (eq? object 'IMPLIED)
       (and (pair? object)
           (eq? 'FIXED (car object))
-          (attribute-value? (cdr object)))
+          (xml-attribute-value? (cdr object)))
       (and (pair? object)
           (eq? 'DEFAULT (car object))
-          (attribute-value? (cdr object)))))
+          (xml-attribute-value? (cdr object)))))
 
 (define-xml-type !entity
   (name xml-name?)
@@ -321,7 +328,7 @@ USA.
   (or (and (pair? object)
           (list-of-type? object
             (lambda (object)
-              (or (string? object)
+              (or (xml-char-data? object)
                   (xml-entity-ref? object)
                   (xml-parameter-entity-ref? object)))))
       (xml-external-id? object)))
index a6fcb2eae5365ec3758f3bf2113350a4247d2497..0864ec89a626c1678ac414c8753eb0b5d471b7b4 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: xml.pkg,v 1.19 2003/03/08 02:14:11 cph Exp $
+$Id: xml.pkg,v 1.20 2003/07/13 03:41:25 cph Exp $
 
 Copyright 2001,2002,2003 Massachusetts Institute of Technology
 
@@ -113,8 +113,14 @@ USA.
          xml-!notation-id
          xml-!notation-name
          xml-!notation?
+         xml-attribute-list?
+         xml-attribute-value?
+         xml-attribute?
+         xml-char-data?
          xml-comment-text
          xml-comment?
+         xml-content-item?
+         xml-content?
          xml-declaration-encoding
          xml-declaration-standalone
          xml-declaration-version