docs » cp.web.xml
Functions for Generating XML markup.
This library allows the creation of 'safe' XML using via code.
Examples:
local xml = require "cp.web.xml"
print xml.Root "Hello world!" -- "<Root>Hello world!</Root>"
print xml.Root { class = "custom" } "Hello world!" -- "<Root class='custom'>Hello world!</Root>"
print xml.Root { class = "custom" } (
xml.Child "One" .. " and " .. xml.Child "Two" .. "."
)
-- "<Root class='custom'><Child>One</Child> and <Child>Two</Child>.</Root>"
print xml("1 < 2") -- "1 < 2" (escaped)
print xml("1 < 2", true) -- "1 < 2" (unescaped)
print xml.Root ("<Child>One</Child>", true) -- "<Root><Child>One</Child></Root>"
Be aware that concatonating with ".." can behave unexpectedly in some cases. For example:
local name = "world!"
print xml.Root "Hello " .. name -- "<Root>Hello </Root>world!"
The "Hello"
gets inserted into the Root
tag, but the name
gets concatonated after the closing tag.
To get the name
inside the Root
tag, we need to put brackets around the content:
print xml.Root ("Hello " .. name) -- "<Root>Hello world!</Root>"
Any tag name can be generated, along with any attribute. The results are correctly escaped. There are two 'special' tag names:
CDATA
- will generate a<![CDATA[ ... ]]>
section with the content contained.__
- (double underscore) will generate a<!-- ... -->
comment block.
- Functions - API calls offered directly by the extension
- is
Signature | cp.web.xml.is(value) -> boolean |
---|---|
Type | Function |
Description | Checks if the value is an cp.web.xml block. |
Parameters |
|
Returns |
|