USING: help.markup help.syntax present multiline ; IN: xml.interpolate ABOUT: "xml.interpolate" ARTICLE: "xml.interpolate" "XML literal interpolation" "The " { $vocab-link "xml.interpolate" } " vocabulary provides a convenient syntax for generating XML documents and chunks. It defines the following parsing words:" { $subsection POSTPONE: ... XML>" } { $description "This syntax allows the interpolation of XML documents. When evaluated, there is an XML document on the stack. For more information about XML interpolation, see " { $link { "xml.interpolate" "in-depth" } } "." } ; HELP: [XML { $syntax "[XML foo ... bar ... baz XML]" } { $description "This syntax allows the interpolation of XML chunks. When evaluated, there is a sequence of XML elements (tags, strings, comments, etc) on the stack. For more information about XML interpolation, see " { $link { "xml.interpolate" "in-depth" } } "." } ; ARTICLE: { "xml.interpolate" "in-depth" } "XML interpolation syntax" "XML interpolation has two forms for each of the words " { $link POSTPONE: " } ". To splice something in from the stack, in the style of " { $vocab-link "fry" } ", use the syntax " { $snippet "<->" } ". An XML interpolation form may only use one of these styles." $nl "These forms can be used where a tag might go, as in " { $snippet "[XML <-> XML]" } " or where an attribute might go, as in " { $snippet "[XML /> XML]" } ". When an attribute is spliced in, it is not included if the value is " { $snippet "f" } " and if the value is not a string, the value is put through " { $link present } ". Here is an example of the fry style of XML interpolation:" { $example {" "one two three" " " split [ [XML <-> XML] ] map <-> XML> pprint-xml>string "} {" <' one two three '> "} } "Here is an example of the locals version:" { $example {" [let | number [ 3 ] false [ f ] url [ URL" http://factorcode.org/" ] string [ "hello" ] word [ \ drop ] | false=<-false-> url=<-url-> string=<-string-> word=<-word-> /> XML> pprint-xml>string ] "} {" <' '> "} } ;