Re: Removing/Ignoring xmlns when using xml->sxml
Luis Felipe <[email protected]>
| Newsgroups | gmane.lisp.guile.user |
|---|---|
| Message-ID | <[email protected]> |
Hi Richard,
El 22/07/24 a las 3:11, Richard Sent escribió:
> Hi all,
>
> I have some XML created by a tool called latexml that can convert LaTeX
> equations to MathML. I am processing the output of this tool as part of
> a Guile program and will be using it in a website.
>
> The output looks something like this:
>
> --8<---------------cut here---------------start------------->8---
> <math xmlns=\"http://www.w3.org/1998/Math/MathML\" alttext=\"\\frac{1}{2}\" display=\"block\">
> <mfrac>
> <mn>1</mn>
> <mn>2</mn>
> </mfrac>
> </math>
> --8<---------------cut here---------------end--------------->8---
>
> I need to convert this output to SXML to integrate it with the rest of
> the toolchain.
>
> Annoyingly, when using xml->sxml, the xmlns attribute is prepended to
> every non-default element. For example,
> '(http://www.w3.org/1998/Math/MathML:math ...) [1].
>
> This behavior is undesirable when splicing the MathML into HTML, since
> HTML doesn't support namespaces and web browsers don't seem to handle
> elements with colons. The intended conversion is to simply splice the
> MathML into HTML, sans namespace [2].
>
> xml->sxml has a #:namespaces argument that allows me to alias the URL
> namespace to something else in the SXML, but it doesn't look like I can
> alias it to a "nil" namespace that isn't prepended at all.
The following seems to work (where xml-string is the example you provided):
(define namespaces '((#false . "http://www.w3.org/1998/Math/MathML")))
(xml->sxml xml-string #:namespaces namespaces)
$7 = (*TOP* (math (@ (display "block") (alttext "\\frac{1}{2}")) "\n "
(mfrac "\n " (mn "1") "\n " (mn "2") "\n ") "\n"))
OpenPGP_0x0AB0D067012F08C3.asc
(application/pgp-keys, 2.8 KB)
-----BEGIN PGP PUBLIC KEY BLOCK----- xsBNBGQLfUoBCADXXtq7q0B515koc28OwplQF3XrLOcHzn7DW2HL8WnRfSJp2Yra Ko6HyfbPmkjkfoRXpXyJBPvRE7f3O5RWkcEoTEXo5Ll2QEtYfangcoTxImcfwsdK mRl6saEPNhIykrYNM6gcLHxiL//NZZJwO+9uD2R4JRIQfJ7gJ4/e2m8SlA/0Xw1J KqClOOewnwUcb+cYtZSQo4r0ujYdDcFYlG3I7F+/DwTZfqCnixL0fSXEUOVQ5dUp u2lK3wMRHE9H60QEM96t6RPiQFA2uan8fX4eT1Igmdq69QUOAQBP5AHW91E+1eMT qcOa8VmCtJjcY9AMW65LVIzegwkQE4H0vC8DABEBAAHNOEx1aXMgRmVsaXBlIEzD s3BleiBBY2V2ZWRvIDxsdWlzLmZlbGlwZS5sYUB6b2hvbWFpbC5jb20+wsCOBBMB CAA4FiEECRCCei4GHmFsBqw9CrDQZwEvCMMFAmQLfUoCGwMFCwkIBwIGFQoJCAsC BBYCAwECHgECF4AACgkQCrDQZwEvCMO+oQf/bZt7NOgQw96RJSM32wTQhqj6C1dK jgtKmFecjxxXM5EiYQZPvBDrmjnzVu1mw70eE1N5DFNpCu0qp2vSqvly+PIa7z5F UOTivVpV6lDDc07BpW4J8/HNZu/GFmvZ2QtzPlr2rcGcRcwYlK9E+WKxT6lPINWN t2Ca9v+0Kz0OIAj4gEiJZNWQ41tIAHwNm9NKvBgtLxWB3UPteLnHSwRm7gptWF8I qkjyxNygj3vE+SSVYoilcQsljmCV4zbp7kGUFK9pIxwy85e4VmOehyKLxDqiIGKs 42PydPTFQc1KpmNpbrnadYyXEI8ZchMHbFI6YCduqv1aJ0Q2LmXxItikMc0uTHVp cyBGZWxpcGUgTMOzcGV6IEFjZXZlZG8gPHNpcmdhemlsQHpvaG8uY29tPsLAjgQT AQgAOBYhBAkQgnouBh5hbAasPQqw0GcBLwjDBQJkC345AhsDBQsJCAcCBhUKCQgL AgQWAgMBAh4BAheAAAoJEAqw0GcBLwjDSMMIALPFm3V9/KkzyEjoEYgtK7MNl8ce fER0K650rbenTX30/5lYwON4EFubf2cYUYwRSs8d+7Le6h035Mi13FGwwRhrDXyv zn1ifQbxBWkB4BgoIrAKvpjwOatC8+8D9zSi1giZhaoc4hggG6vkBhBB3mGx9lSL DZlghPIetNJkq4FHTFDqoFQt0ZgAZIGh46jjy4X+kSdhiNqnFSeZGFazQemdWZXS aipVx1se88aioXWlG8t6Ypr3r8vs+nAgWBYMdazymuIS4bxctSlM47zPt3E3lBwJ pdso0VjnTKfwKiWofCvTkHNO17OJegVGUQqMx6HeyinhY3nqZZaCzDIqkzfNOkx1 aXMgRmVsaXBlIEzDs3BleiBBY2V2ZWRvIDxsdWlzLmZlbGlwZS5sYUBwcm90b25t YWlsLmNvbT7CwI4EEwEIADgWIQQJEIJ6LgYeYWwGrD0KsNBnAS8IwwUCZAuABAIb AwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRAKsNBnAS8Iw3z9B/9TKed3eCaW vvPeMTeFAUcoqAiV39680Y0ppVdXTQmSBbs4QdIuABhgA7ZP9w1D8QOz8PKFCXN0 W7O2uFwuz/ZIh5yoLfY9ngtUibsjRjnLLEbRQnIAIBcwOVjTQnDC42WaZbiXqaPt WLeT48TULTMOKELc3B2mcLtrVyeDrjGe1f5nvpBb9m1JE7KtNfkPNNcQTpdsP1ru 4tg7EYWUM/oET6N2nq0Md6x/C1FPAF6l/Kskp9AmXTT01HRpjLFmnZYKiK5cuxv4 VgIkixHCuC4Y36AxnnpZ+BNS+Va9SSWBs4tvTqw6OR+ZV6DIJLRfHPoZYK5c62T8 bPNv/BQFa8IVzsBNBGQLfUoBCAC4OLfpwb7JTzA9nOrZmJHw7AljZYq9mK+GgZzp fwWwo2YyfjmAqkCa0r80Fv1Z7ypE3CVWkAvxb9OkRWKbnMpMw24o62MoGXnRszHw 8C65H5fagE1JpOoBXFZ5IM7ddsiWcOHEbFAgEDPgq8CpZORpa6Gqd850xvXZpIBN eM+Dz4BJK8LqICpO2IJHlW7T5F1IOA6MwJPCS8E3HyIt9QHFoyk+sDDGfAgWN2oe 8G6OE0m1qY8QI2bDd7Z/1m3fG1DKVacZAPuumjTdRIopiVQIZgKAOrzQQc+eiXtb mNLsbDam6TxE2m2HererWGRQw2y113jCwC2dQNJlauNWT7wBABEBAAHCwHYEGAEI ACAWIQQJEIJ6LgYeYWwGrD0KsNBnAS8IwwUCZAt9SgIbDAAKCRAKsNBnAS8Iw6gb CACQCVdwmXBqIxnqUJZ3ZYX837RFYqGmsXYn7K1QWZOSTz/TwxMWvm32DaCYAEtz XV+jAPE+ZygBUuOAT0SA4Wjsd/5gS8iqP01dhbPaKhlE+Y7hCp7Tud9uAd8OWhs7 EqEjCZyeJkFqcfq5sF5TKdpBWQ/qQrG//loAwDIOej4ayzmWDPP+wyKpBz7NV1ou P2DgZRsuSXobS5j4onVaUKRIWiflYLqTzkxysQ/Tt4ArfewjtbmDhkD4UevWXbJ1 h/YtwktCvD3EHai1w4xx+jtzS+Z1jiVW1AXNANeJP8MFC4VGu5/zdt5jUG0raFrx EjgnzKnuavTaZZVhOUYVUKv9 =IxoS -----END PGP PUBLIC KEY BLOCK-----
OpenPGP_signature
(application/pgp-signature, 495 B) - not displayed