-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi,
I posted more details on guile-devel. Perhaps this was the wrong list? When transforming SXML to XML, namespaces don't seem to be handled properly: #!/usr/bin/guile -s !# (use-modules (sxml simple)) ;; An XML with two namespaces (one default) (define the-svg "<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'> <rect x='5' y='5' width='20' height='20' stroke-width='2' stroke='purple' fill='yellow' id='rect1' /> <rect x='30' y='5' width='20' height='20' ry='5' rx='8' stroke-width='2' stroke='purple' fill='blue' xlink:href='#rect1' /> </svg>") ;; Note how SXML handles QNames (just concatenating NS and ;; local-name with a colon): (define the-sxml (with-input-from-string the-svg xml->sxml)) (format #t "~A\n" the-sxml) ;; If we try to serialize this: kaboom! (sxml->xml the-sxml) The parsing into SXML goes well, the (format ...) outputs what I'd expect. But the (sxml->xml ...) dies with: ERROR: In procedure scm-error: ERROR: Invalid QName: more than one colon http://www.w3.org/2000/svg:svg The problem is that SXML used the concatenated (full) namespace with the name as tag (and attribute) names for namespaced items. When serializing to XML it should try to find abbreviations for those namespaces and issue the corresponding namespace declarations. Instead, sxml->xml tries to split the (namespace:name) combination at the first colon and to check the name -- and fails miserably at (namespace:name) combinations à la "http://www.w3.org/1999/xlink:href" (procedure check-name). Since there are two colons, the name part has now a colon. There are more details at: http://lists.gnu.org/archive/html/guile-devel/2015-04/msg00000.html with a first attempt at a patch against guile (GNU Guile) 2.0.5-deb+1-3. I'm more than willing to beat the patch into shape, but will possibly need some guidance. Perhaps I'd need to sign papers with the FSF, which I'd gladly do. Regards - -- tomás -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iEYEARECAAYFAlUuwEIACgkQBcgs9XrR2kbJWQCfQ/ALFQrf0crOK47SbaOlJlMv MwAAn3fxDBWOhgNF0L7E35k0skol2T0V =FIId -----END PGP SIGNATURE-----