面向协作的网站需要一个友好的标记语言来简化对论坛帖子、Wiki页面、博客(Blog)、评论等等格式化文本的处理。 Seam提供了 <s:formattedText/> 控件来显示符合 Seam Text 语言的格式化文本。 Seam Text是用一个基于ANTLR的语法分析器来实现的。但你不需要知道ANTLR就能方便地使用它了。
下面是个简单的例子:
It's easy to make *bold text*, /italic text/, |monospace|, ~deleted text~, super^scripts^ or _underlines_.
如果我们用 <s:formattedText/> 来显示它,会产生下面的HTML:
<p> It's easy to make <b>bold text</b>, <i>italic text</i>, <tt>monospace</tt> <del>deleted text</del>, super<sup>scripts</sup> or <u>underlines</u>. </p>
可以用一个空行来表示新的段落,用 + 来表示一个标题:
+This is a big heading You /must/ have some text following a heading! ++This is a smaller heading This is the first paragraph. We can split it across multiple lines, but we must end it with a blank line. This is the second paragraph.
(请注意简单的换行是被忽略的,你需要一个额外的空行把文本换行到一个新的段落中。)下面就是HTML的结果:
<h1>This is a big heading</h1> <p> You <i>must</i> have some text following a heading! </p> <h2>This is a smaller heading</h2> <p> This is the first paragraph. We can split it across multiple lines, but we must end it with a blank line. </p> <p> This is the second paragraph. </p>
用 # 字符来建立有序的列表。至于无序的列表就用 = 字符:
An ordered list: #first item #second item #and even the /third/ item An unordered list: =an item =another item
<p> An ordered list: </p> <ol> <li>first item</li> <li>second item</li> <li>and even the <i>third</i> item</li> </ol> <p> An unordered list: </p> <ul> <li>an item</li> <li>another item</li> </ul>
引用的部分应该用双引号括起来:
The other guy said: "Nyeah nyeah-nee /nyeah/ nyeah!" But what do you think he means by "nyeah-nee"?
<p> The other guy said: </p> <q>Nyeah nyeah-nee <i>nyeah</i> nyeah!</q> <p> But what do you think he means by <q>nyeah-nee</q>? </p>
像 *、| 和 # 这样的特殊字符, 和诸如 <、> 和 & 之类的HTML字符可以用来 \ 来转义:
You can write down equations like 2\*3\=6 and HTML tags like \<body\> using the escape character: \\.
<p> You can write down equations like 2*3=6 and HTML tags like <body> using the escape character: \. </p>
代码段可以用倒单引号(`)括起来:
My code doesn't work: `for (int i=0; i<100; i--) { doSomething(); }` Any ideas?
<p> My code doesn't work: </p> <pre>for (int i=0; i<100; i--) { doSomething(); }</pre> <p> Any ideas? </p>
请注意行间的空格会转码(大部分的空格都会被格式化成文本形式,实际上有很多的特定字符都是代码或者标签)。因此你可以写成:
This is a |<tag attribute="value"/>| example.
在这里面的空格没有转换成任何的字符。下面你不能通过任何方式来格式化行间的空格文本(斜体字,下划线等等)。
可以用下面的语法来建立一个链接:
Go to the Seam website at [=>http://jboss.com/products/seam].
如果你想指定链接的文本,也可以这样:
Go to [the Seam website=>http://jboss.com/products/seam].
对于高级用户,甚至可以自定义Seam Text解析器,让它诠释这个语法书写的Wiki词汇。
文本可能会包含一个HTML的有限子集(不用担心,这个子集可以抵御跨站脚本攻击)。这在建立链接时很有用:
You might want to link to <a href="http://jboss.com/products/seam">something cool</a>, or even include an image: <img src="/logo.jpg"/>
建立表格时也一样:
<table> <tr><td>First name:</td><td>Gavin</td></tr> <tr><td>Last name:</td><td>King</td></tr> </table>
如果你想的话你还能做得更多!