2006-06-23

学习XSP 2


  • xsp:page — XSP 文档的根元素,它必须只包含一个用户元素

  • xsp:structure、xsp:include — 允许将附加的 Java 类导入到 XSP 的已编译版本中

  • xsp:logic — 允许在 XSP 的已编译版本中包含附加的编程代码块;这可以包含成员变量、方法或应用程序逻辑

  • xsp:expr — 允许对 Java 表达式求值,并将它们的值添加到文档

  • xsp:element — 允许 XSP 动态创建元素;这些元素可以用任意名称创建,并且可以与任何名称空间和前缀关联

  • xsp:attribute — 允许将属性动态地添加到元素;这些属性可以用任意名称和值创建,并且可以与任何名称空间关联

  • xsp:comment — 允许将注释添加到已生成的文档

  • xsp:pi — 允许动态创建处理指令,并将之添加到已生成的文档

  • xsp:parameter -- 允许为元素或属性生成名称



通过使用 xsp:element,还可以动态地创建元素,如:


<xsp:element>
<xsp:param name="name"><xsp:expr>"myElementName"</xsp:expr></xsp:param>
Element content
</xsp:element>


这个示例显示了用动态生成名称创建元素涉及使用 xsp:element 和 xsp:param 元素。xsp:param定义了一个参数,在本例中是元素的名称,其值是一个用于计算元素名称的表达式。


上面的代码将生成 XML 输出


<myElementName>Element content</myElementName>

用这种方式创建的元素还可以与一个特定的名称空间和前缀关联,如下例所示。请注意:这两个名称空间和前缀参数都是必需的;否则将产生错误。


<xsp:element prefix="my" uri="http://www.examples.org">
<xsp:param name="name"><xsp:expr>"myElementName"</xsp:expr></xsp:param>
Element content
</xsp:element>

这个示例生成了以下 XML 输出:


<my:myElementName xmlns:my="http://www.examples.org">Element content</my:myElementName>


如同元素一样,可以在 XSP 页面中动态创建属性。xsp:attribute 元素的工作原理类似于 xsp:element,它允许动态创建属性的名称及其值:



<xsp:element>
<xsp:param name="name"><xsp:expr>"myElementName"</xsp:expr></xsp:param>
<xsp:attribute name="myAttribute">myAttributeValue</xsp:attribute>
Element content
</xsp:element>



这个属性的名称定义在 name 属性内,尽管是用与 xsp:element 类似的方法定义的,但它还能通过使用 xsp:param 子元素来定义。属性值被指定成元素内容。这可以是一个简单文本值或更有效地由 xsp:expr 元素生成。


而 xsp:attribute 标记不必与 xsp:element 结合使用。它可以被放置在任何用户元素内,而且可以用相同的方法添加属性。例如,可以通过使用调用定义在 XSP 页面别处的方法的表达式来动态创建 image 元素的 URL。


<image>
<xsp:attribute name="href"><xsp:expr>calculateImageURL()</xsp:expr></xsp:attribute>
</image>


如果生成的属性与特定的名称空间关联,那么这可以通过使用附加的 prefix 和 uri 属性或 xsp:param 元素来表示,它类似于用于 xsp:element 的方法。同样,如果只定义了其中的一个,则是一个错误。



创建注释和处理指令


xsp:comment 和 xsp:pi 元素用于创建注释和处理指令。


创建注释十分简单。任何作为 xsp:comment 元素的子元素而提供的文本都变成了 XML 注释:


<xsp:comment>This is a comment</xsp:comment>

然后这个注释变成:



<!-- This is a comment -->

创建处理指令类似于创建动态元素或属性。xsp:pi 元素应该有一个标识处理指令目标的嵌套参数。照例对 xsp:pi 元素的剩余内容求值。这里是一个简单示例:


<xsp:pi target="myApplication">
<xsp:expr>"param1=value, param2=value, generatorTimestamp=" +
System.currentTimeMillis()</xsp:expr>
</xsp:pi>

输出如下:



<?myApplication param1=value, param2=value, generatorTimestamp=1017407796870?>

还可以通过在 xsp:param 元素内创建处理指令的目标来自动生成它,如同以下示例演示的那样:



<xsp:pi>
<xsp:param name="target"><xsp:expr>"myApplication"</xsp:expr></xsp:param>
<xsp:expr>"param1=value, param2=value, generatorTimestamp=" +
System.currentTimeMillis()</xsp:expr>
</xsp:pi>

没有评论:

发表评论