Most often I use a single Curl outer element, e.g., {poem }
{poemto wrap the entire text of a poem.
|| poem text goes here
}
Each stanza is then wrapped by a {stanza } element as follows, e.g.,
{poemBecause Curl allows both user-defined tags such as {poem } and {stanza } and permits macros, on any given page these elements not only have the style that you choose, but the behaviour that you choose.
{stanza
|| lines here
}
{stanza
|| second here
}
} || end of poem markup
For example:
{poemWhat the {pg } element does depends on your own definition for either that document or for that web page. It might be merely an invisible target for a link anchor.
{stanza
|| lines here
}
{pg 2}
{stanza
|| second here
}
} || end of poem markup
Note that there are no closing tags as required for XML elements.
What becomes more interesting are annotations and glosses, which can be visible on one web page and not on another - but for the very same markup !
I know of nothing for markup which is more elegant, effective and mature (now in version 7.0.)
Curl was developed at MIT is now licensed by Sumisho but with open-source projects at sourceforge.
For more of my notes on my hobby, poetry markup, see developers.curl.com
For other approaches to poetry markup for web pages, see LML or Literature Markup Language by Prof. Hoffman. There are several university sites devoted to e-texts for poetry, ancient texts (often in rhyme or metre) and other source texts in the humanities.
A string-processing language for the humanities was the first inadvertant open-source project: SNOBOL (which escaped the lawyers at Bell Labs and was followed by ICON from U. AZ, Tucson as a replacement for SNOBOL and SPITBOL.) ObjectIcon is now available at code.goggle and Converge is a pythonic variant available at the convergepl site.