Hex Artifact Content
Not logged in

Artifact 5697c1e5311b5a6babc994dc1ae7bc5d2cae5ba9:


0000: 0a 28 6c 69 62 72 61 72 79 20 28 73 78 6d 6c 29  .(library (sxml)
0010: 0a 20 20 28 65 78 70 6f 72 74 20 6d 61 6b 65 2d  .  (export make-
0020: 78 6d 6c 2d 74 6f 6b 65 6e 0a 20 20 20 20 20 20  xml-token.      
0030: 20 20 20 20 78 6d 6c 2d 74 6f 6b 65 6e 3f 0a 20      xml-token?. 
0040: 20 20 20 20 20 20 20 20 20 78 6d 6c 2d 74 6f 6b           xml-tok
0050: 65 6e 2d 6b 69 6e 64 0a 20 20 20 20 20 20 20 20  en-kind.        
0060: 20 20 78 6d 6c 2d 74 6f 6b 65 6e 2d 68 65 61 64    xml-token-head
0070: 0a 0a 20 20 20 20 20 20 20 20 20 20 73 73 61 78  ..          ssax
0080: 3a 73 6b 69 70 2d 53 0a 20 20 20 20 20 20 20 20  :skip-S.        
0090: 20 20 73 73 61 78 3a 6e 63 6e 61 6d 65 2d 73 74    ssax:ncname-st
00a0: 61 72 74 69 6e 67 2d 63 68 61 72 3f 0a 20 20 20  arting-char?.   
00b0: 20 20 20 20 20 20 20 73 73 61 78 3a 72 65 61 64         ssax:read
00c0: 2d 4e 43 4e 61 6d 65 0a 20 20 20 20 20 20 20 20  -NCName.        
00d0: 20 20 73 73 61 78 3a 72 65 61 64 2d 51 4e 61 6d    ssax:read-QNam
00e0: 65 0a 20 20 20 20 20 20 20 20 20 20 73 73 61 78  e.          ssax
00f0: 3a 50 72 65 66 69 78 2d 58 4d 4c 0a 0a 20 20 20  :Prefix-XML..   
0100: 20 20 20 20 20 20 20 6e 61 6d 65 2d 63 6f 6d 70         name-comp
0110: 61 72 65 0a 0a 20 20 20 20 20 20 20 20 20 20 73  are..          s
0120: 73 61 78 3a 6c 61 72 67 65 73 74 2d 75 6e 72 65  sax:largest-unre
0130: 73 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20  s-name.         
0140: 20 73 73 61 78 3a 72 65 61 64 2d 6d 61 72 6b 75   ssax:read-marku
0150: 70 2d 74 6f 6b 65 6e 0a 20 20 20 20 20 20 20 20  p-token.        
0160: 20 20 73 73 61 78 3a 73 6b 69 70 2d 70 69 0a 20    ssax:skip-pi. 
0170: 20 20 20 20 20 20 20 20 20 73 73 61 78 3a 72 65           ssax:re
0180: 61 64 2d 70 69 2d 62 6f 64 79 2d 61 73 2d 73 74  ad-pi-body-as-st
0190: 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 73  ring.          s
01a0: 73 61 78 3a 73 6b 69 70 2d 69 6e 74 65 72 6e 61  sax:skip-interna
01b0: 6c 2d 64 74 64 0a 20 20 20 20 20 20 20 20 20 20  l-dtd.          
01c0: 73 73 61 78 3a 72 65 61 64 2d 63 64 61 74 61 2d  ssax:read-cdata-
01d0: 62 6f 64 79 0a 20 20 20 20 20 20 20 20 20 20 73  body.          s
01e0: 73 61 78 3a 72 65 61 64 2d 63 68 61 72 2d 72 65  sax:read-char-re
01f0: 66 0a 20 20 20 20 20 20 20 20 20 20 73 73 61 78  f.          ssax
0200: 3a 70 72 65 64 65 66 69 6e 65 64 2d 70 61 72 73  :predefined-pars
0210: 65 64 2d 65 6e 74 69 74 69 65 73 0a 20 20 20 20  ed-entities.    
0220: 20 20 20 20 20 20 73 73 61 78 3a 68 61 6e 64 6c        ssax:handl
0230: 65 2d 70 61 72 73 65 64 2d 65 6e 74 69 74 79 0a  e-parsed-entity.
0240: 0a 20 20 20 20 20 20 20 20 20 20 6d 61 6b 65 2d  .          make-
0250: 65 6d 70 74 79 2d 61 74 74 6c 69 73 74 0a 20 20  empty-attlist.  
0260: 20 20 20 20 20 20 20 20 61 74 74 6c 69 73 74 2d          attlist-
0270: 61 64 64 0a 20 20 20 20 20 20 20 20 20 20 61 74  add.          at
0280: 74 6c 69 73 74 2d 6e 75 6c 6c 3f 0a 20 20 20 20  tlist-null?.    
0290: 20 20 20 20 20 20 61 74 74 6c 69 73 74 2d 72 65        attlist-re
02a0: 6d 6f 76 65 2d 74 6f 70 0a 20 20 20 20 20 20 20  move-top.       
02b0: 20 20 20 61 74 74 6c 69 73 74 2d 3e 61 6c 69 73     attlist->alis
02c0: 74 0a 20 20 20 20 20 20 20 20 20 20 61 74 74 6c  t.          attl
02d0: 69 73 74 2d 66 6f 6c 64 0a 20 20 20 20 20 20 20  ist-fold.       
02e0: 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 73 73     .          ss
02f0: 61 78 3a 72 65 61 64 2d 61 74 74 72 69 62 75 74  ax:read-attribut
0300: 65 73 0a 20 20 20 20 20 20 20 20 20 20 73 73 61  es.          ssa
0310: 78 3a 72 65 73 6f 6c 76 65 2d 6e 61 6d 65 0a 20  x:resolve-name. 
0320: 20 20 20 20 20 20 20 20 20 73 73 61 78 3a 75 72           ssax:ur
0330: 69 2d 73 74 72 69 6e 67 2d 3e 73 79 6d 62 6f 6c  i-string->symbol
0340: 0a 20 20 20 20 20 20 20 20 20 20 73 73 61 78 3a  .          ssax:
0350: 63 6f 6d 70 6c 65 74 65 2d 73 74 61 72 74 2d 74  complete-start-t
0360: 61 67 0a 20 20 20 20 20 20 20 20 20 20 73 73 61  ag.          ssa
0370: 78 3a 72 65 61 64 2d 65 78 74 65 72 6e 61 6c 2d  x:read-external-
0380: 69 64 0a 20 20 20 20 20 20 20 20 20 20 73 73 61  id.          ssa
0390: 78 3a 73 63 61 6e 2d 4d 69 73 63 0a 20 20 20 20  x:scan-Misc.    
03a0: 20 20 20 20 20 20 73 73 61 78 3a 72 65 61 64 2d        ssax:read-
03b0: 63 68 61 72 2d 64 61 74 61 0a 20 20 20 20 20 20  char-data.      
03c0: 20 20 20 20 73 73 61 78 3a 61 73 73 65 72 74 2d      ssax:assert-
03d0: 74 6f 6b 65 6e 0a 20 20 20 20 20 20 20 20 20 20  token.          
03e0: 73 73 61 78 3a 6d 61 6b 65 2d 70 61 72 73 65 72  ssax:make-parser
03f0: 0a 20 20 20 20 20 20 20 20 20 20 73 73 61 78 3a  .          ssax:
0400: 6d 61 6b 65 2d 70 69 2d 70 61 72 73 65 72 0a 20  make-pi-parser. 
0410: 20 20 20 20 20 20 20 20 20 73 73 61 78 3a 6d 61           ssax:ma
0420: 6b 65 2d 65 6c 65 6d 2d 70 61 72 73 65 72 0a 20  ke-elem-parser. 
0430: 20 20 20 20 20 20 20 20 20 73 73 61 78 3a 6d 61           ssax:ma
0440: 6b 65 2d 70 61 72 73 65 72 2f 70 6f 73 69 74 69  ke-parser/positi
0450: 6f 6e 61 6c 2d 61 72 67 73 0a 20 20 20 20 20 20  onal-args.      
0460: 20 20 20 20 73 73 61 78 3a 64 65 66 69 6e 65 2d      ssax:define-
0470: 6c 61 62 65 6c 65 64 2d 61 72 67 2d 6d 61 63 72  labeled-arg-macr
0480: 6f 0a 20 20 20 20 20 20 20 20 20 20 73 73 61 78  o.          ssax
0490: 3a 72 65 76 65 72 73 65 2d 63 6f 6c 6c 65 63 74  :reverse-collect
04a0: 2d 73 74 72 0a 20 20 20 20 20 20 20 20 20 20 73  -str.          s
04b0: 73 61 78 3a 72 65 76 65 72 73 65 2d 63 6f 6c 6c  sax:reverse-coll
04c0: 65 63 74 2d 73 74 72 2d 64 72 6f 70 2d 77 73 0a  ect-str-drop-ws.
04d0: 20 20 20 20 20 20 20 20 20 20 73 73 61 78 3a 78            ssax:x
04e0: 6d 6c 2d 3e 73 78 6d 6c 0a 0a 20 20 20 20 20 20  ml->sxml..      
04f0: 20 20 20 20 6e 6f 64 65 73 65 74 3f 0a 20 20 20      nodeset?.   
0500: 20 20 20 20 20 20 20 6e 6f 64 65 2d 74 79 70 65         node-type
0510: 6f 66 3f 0a 20 20 20 20 20 20 20 20 20 20 6e 6f  of?.          no
0520: 64 65 2d 65 71 3f 0a 20 20 20 20 20 20 20 20 20  de-eq?.         
0530: 20 6e 6f 64 65 2d 65 71 75 61 6c 3f 0a 20 20 20   node-equal?.   
0540: 20 20 20 20 20 20 20 6e 6f 64 65 2d 70 6f 73 0a         node-pos.
0550: 20 20 20 20 20 20 20 20 20 20 74 61 6b 65 2d 75            take-u
0560: 6e 74 69 6c 0a 20 20 20 20 20 20 20 20 20 20 74  ntil.          t
0570: 61 6b 65 2d 61 66 74 65 72 0a 20 20 20 20 20 20  ake-after.      
0580: 20 20 20 20 6d 61 70 2d 75 6e 69 6f 6e 0a 20 20      map-union.  
0590: 20 20 20 20 20 20 20 20 6e 6f 64 65 2d 72 65 76          node-rev
05a0: 65 72 73 65 0a 20 20 20 20 20 20 20 20 20 20 6e  erse.          n
05b0: 6f 64 65 2d 74 72 61 63 65 0a 20 20 20 20 20 20  ode-trace.      
05c0: 20 20 20 20 73 65 6c 65 63 74 2d 6b 69 64 73 0a      select-kids.
05d0: 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 2d 73            node-s
05e0: 65 6c 66 0a 20 20 20 20 20 20 20 20 20 20 6e 6f  elf.          no
05f0: 64 65 2d 6a 6f 69 6e 0a 20 20 20 20 20 20 20 20  de-join.        
0600: 20 20 6e 6f 64 65 2d 72 65 64 75 63 65 0a 20 20    node-reduce.  
0610: 20 20 20 20 20 20 20 20 6e 6f 64 65 2d 6f 72 0a          node-or.
0620: 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 2d 63            node-c
0630: 6c 6f 73 75 72 65 0a 20 20 20 20 20 20 20 20 20  losure.         
0640: 20 6e 6f 64 65 2d 70 61 72 65 6e 74 0a 20 20 20   node-parent.   
0650: 20 20 20 20 20 20 20 73 78 70 61 74 68 29 0a 20         sxpath). 
0660: 20 28 69 6d 70 6f 72 74 20 28 65 78 63 65 70 74   (import (except
0670: 20 28 73 63 68 65 6d 65 29 0a 20 20 20 20 20 20   (scheme).      
0680: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
0690: 6e 67 2d 63 6f 70 79 20 73 74 72 69 6e 67 2d 66  ng-copy string-f
06a0: 6f 72 2d 65 61 63 68 20 73 74 72 69 6e 67 2d 3e  or-each string->
06b0: 6c 69 73 74 20 73 74 72 69 6e 67 2d 75 70 63 61  list string-upca
06c0: 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  se.             
06d0: 20 20 20 20 20 73 74 72 69 6e 67 2d 64 6f 77 6e       string-down
06e0: 63 61 73 65 20 73 74 72 69 6e 67 2d 74 69 74 6c  case string-titl
06f0: 65 63 61 73 65 20 73 74 72 69 6e 67 2d 68 61 73  ecase string-has
0700: 68 20 73 74 72 69 6e 67 2d 63 6f 70 79 21 20 73  h string-copy! s
0710: 74 72 69 6e 67 2d 66 69 6c 6c 21 0a 20 20 20 20  tring-fill!.    
0720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f                fo
0730: 6c 64 2d 72 69 67 68 74 20 65 72 72 6f 72 20 66  ld-right error f
0740: 69 6c 74 65 72 29 0a 20 20 20 20 20 20 20 20 20  ilter).         
0750: 20 28 70 72 65 66 69 78 20 28 6f 6e 6c 79 20 28   (prefix (only (
0760: 73 63 68 65 6d 65 29 20 65 72 72 6f 72 29 20 73  scheme) error) s
0770: 63 68 65 6d 65 3a 29 0a 20 20 20 20 20 20 20 20  cheme:).        
0780: 20 20 28 73 72 66 69 20 73 31 33 20 73 74 72 69    (srfi s13 stri
0790: 6e 67 73 29 0a 20 20 20 20 20 20 20 20 20 20 28  ngs).          (
07a0: 73 78 6d 6c 20 73 73 61 78 29 0a 20 20 20 20 20  sxml ssax).     
07b0: 20 20 20 20 20 28 73 78 6d 6c 20 73 78 70 61 74       (sxml sxpat
07c0: 68 29 29 29 0a                                   h))).