id,summary,reporter,owner,description,type,status,priority,milestone,component,version,resolution,keywords,cc,difficulty 1291,lowdown: markdown->sxml produces unnormalised SXML,Norman Gray,Moritz Heidkamp,"{{{ % csi CHICKEN (c) 2008-2015, The CHICKEN Team (c) 2000-2007, Felix L. Winkelmann Version 4.10.0 (rev b259631) macosx-unix-clang-x86-64 [ 64bit manyargs dload ptables ] compiled 2015-08-04 on yves.more-magic.net (Linux) #;1> (use lowdown sxpath) ; loading /Data/tools/chicken-4.10.0/lib/chicken/7/lowdown.import.so ... [...] #;2> (define testdoc ""Title\n=====\n\n * [link](uri)\n"") #;3> (define sx-test (with-input-from-string testdoc (lambda () (markdown->sxml (current-input-port))))) #;4> sx-test ((h1 (""Title"")) (ul (li ((a (@ (href ""uri"")) ""link""))))) #;5> ((sxpath '(// a)) sx-test) () #;6> (define (tidy-sxml sx) (cond ((not (list? sx)) sx) ((and (= (length sx) 1) (list? (car sx))) ;; turn ((node ...)) into (node ...) (tidy-sxml (car sx))) (else (map tidy-sxml sx)))) #;7> ((sxpath '(// a)) (tidy-sxml sx-test)) ((a (@ (href ""uri"")) ""link"")) #;8> }}} I think the parsed `sx-test` is not invalid, but it does appear to be sufficiently unnormalised that it confuses `sxpath`. See http://okmij.org/ftp/Scheme/SXML.html#Normalized%20SXML The function `tidy-sxml` works in this case, but is probably too simple-minded to work in general.",defect,assigned,major,someday,extensions,4.10.x,,lowdown,,medium