11 releases

0.3.2 May 18, 2023
0.3.1 Apr 8, 2023
0.2.5 Apr 6, 2023
0.2.3 Mar 7, 2023
0.1.2 Mar 6, 2023

#2568 in Parser implementations


Used in inline-css

LGPL-3.0-or-later

30KB
678 lines

inline-xml

Inline XML data directly into your Rust code.

Example

use inline_xml::xml;

fn main() {
    let value = 42;
    let html = xml! {
        <html>
            <head>
                <title>Example</title>
            </head>
            <body>
                <h1>Example</h1>
                <p>Hello World</p>
                <p>Value: {value}</p>
            </body>
        </html>
    };
    
    println!("{html}");
}

Syntax issues

Since Rust will tokenize the input and proc_macro_span is not stabilized, whitespace will be discarded and therefore inline_xml has to guess about where to put whitespace when printing.

TODO

  • Eliminate usage of Content::Nested completely
  • More documentation
  • Mention, in the docs, that struct Xml can take multiple tags
  • Make struct Tag an instance of trait ToXml
  • Arg -> Attr, args -> attrs
  • Fix XML injection for attributes
  • Fix interpretation of floating point literals
  • Somehow produce XML & DTD declarations (probably as a format arg)
  • Namespaces (eg. <a:x>asdf</a:x>)

Dependencies

~1.5MB
~36K SLoC