级别: 初级 Jimmy Thrasher (jjthrash@us.ibm.com), WebSphere Transcoding Publisher 小组, IBM Raleigh Lab
2002 年 11 月 01 日 WebSphere Everyplace Access 使开发者和管理员能够构建无线应用程序。代码转换技术(Transcoding Technology)? WebSphere Everyplace Access 的一个组件 ? 使您能够使 Web 上的信息对于多种类型的设备(例如 PDA、蜂窝电话等等)来说是可用的。简而言之,转换技术将内容从一种格式转换成另一种格式。本文讨论了转换技术的功能,并且还专门重点介绍了这个工具提供了什么以及开发者如何在普及门户中有效地使用该工具。本文还提供了代码转换技术的体系结构的概述,以及对开发者可以用 Everyplace Access 中的代码转换技术所能完成的各种任务的描述。
© Copyright International Business Machines Corporation 2002.All rights reserved.
介绍
WebSphere® Everyplace Access(以下称为 Everyplace Access)使开发者和管理员能够快速有效地构建无线应用程序。代码转换技术(Transcoding Technology)? WebSphere Everyplace Access 的一个组件 ? 使您能够使 Web 上的信息对于多种类型的设备(例如 PDA、蜂窝电话等等)来说都可用。简而言之,代码转换技术将内容从一种格式转换成另一种格式。代码转换技术包括从一种标记语言到另一种标记语言的转换以及 HTML 的内容注释。该技术还是可插的并且包括一种用于开发专门的转换的强大体系结构。
本文讨论了代码转换技术的功能,并且还专门重点介绍了这个工具提供什么以及开发者如何在普及门户中有效地使用该工具。本文还概述了代码转换技术体系结构,并描述了开发者用 Everyplace Access 中的代码转换技术可以完成的各种任务。本文假定您对企业门户如何工作有一些了解。如果您需要入门材料,请参考
相关参考资料部分。
本文还提供了一个样式表示例。请参阅下面的
下载部分。
什么是代码转换?
代码转换是根据请求设备的特征和用户首选项动态地修改和定制文档的过程。代码转换技术是 WebSphere Everyplace Access 的组件,它为 portlet 开发者和门户管理员提供代码转换能力。代码转换技术组件提供两个基本功能:Web 裁剪(clipping)portlet 使用的 deck 片段和注释。本文将讨论 deck 片段和注释,但并不讨论 Web 裁剪 portlet。如果需要关于 Web 裁剪 portlet 的详细信息,请参考 Scott DeWitt 发表在 2002 年 6 月的 WebSphere 开发者园地上的文章
使用 WebSphere Portal 版本 4.1 的基本 Web 裁剪。
本文将讨论许多代码转换技术功能。
体系结构
为了使您最大程度地利用本文,我建议您参考下面的
相关参考资料部分中所列出的各项内容来熟悉基本的 WebSphere Portal(以下称为 Portal)体系结构。
WebSphere Portal 在两个不同的级别调用代码转换技术:个别 portlet 级别和整个页面级别。图 1 阐明了请求流程:
图 1. WebSphere Portal 和代码转换技术请求流程
上面的示意图可以理解如下:
- 客户机设备向门户发出请求,门户过滤器(Portal Filter)接收该请求。
- 门户过滤器调用 WebSphere Portal 接收它的内容,然后 WebSphere Portal 调用聚集器(Aggregator)聚集页面。
- 聚集器根据值的组合选择 portlet。如果一个 portlet 被配置成要进行代码转换的,并且它提供代码转换技术可以使用的标记,那么将选择这个 portlet。例如,如果这个 portlet 提供 HTML 并且客户机需要 WML,那么聚集器将选择这个 portlet,因为这个 portlet 是可以进行代码转换的。如果一个 portlet 被配置成使用代码转换技术的,那么 Portlet 过滤器(Portlet Filter)将被放在 portlet 的前面。
- Portlet 过滤器调用 portlet 来接收它的内容。
- portlet 返回它的内容。
- Portlet 过滤器将 portlet 的内容发送给代码转换技术以进行处理,如无其它指定则将 portlet 的内容与缺省的 URI 相关联(请参阅 Portlet 级别代码转换部分)。请注意:portlet 认为它正在和聚集器直接交谈,所以不需要用专门的编程风格来编写一个已被过滤的 portlet。
- 代码转换技术把处理过的内容返回给 Portlet 过滤器。
- Portlet 过滤器返回处理过的内容,就好像它是一个正常返回内容的适当的 portlet。
- 已经完成了聚集页面的聚集器将页面返回。
- 门户过滤器将门户的聚集在一起的内容发送给代码处理技术以进行处理。
- 代码转换技术返回处理过的内容。
- 门户过滤器将处理过的内容返回给客户机。
一般的代码转换概念
代码转换技术的某些方面既适用于 portlet 级别的代码转换,也适用于门户级别的代码转换,所以我们首先要介绍这些方面:
设备概要文件
WebSphere Portal 有一个用来确定设备特征的简单有效的方法。一个正则表达式 ? 用来匹配一个特定的 User-Agent 字符串 ? 被映射到一个客户机,该正则表达式有一个相关联的聚集器以及一组特征。这个相关联的聚集器指定一个特殊的标记。例如,HTML 聚集器指定
text/html 作为它的标记。代码转换技术有一个独立的设备概要文件系统,该系统自带了一组按如下方式被绑定到门户的独立设备概要文件:
- 具体的客户机由 HTTP 请求头中的 User-Agent 字段确定。客户机有一个制造商(Manufacturer)属性,可能还有模型(Model)属性和版本(Version)属性。例如,Microsoft® Internet Explorer 的这些属性是
Microsoft 、
Internet Explorer 和
6.0 。
- 制造商、模型和版本组合起来形成一个独一无二的设备概要文件名,这个名称被传送给代码转换技术。例如,
Microsoft 、
Internet Explorer 和
6.0 组合起来形成
Microsoft!Internet+Explorer!6.0 。
- 代码转换技术用一个预定义的设备概要文件匹配这个独一无二的名称。
在 Portal 中创建和修改客户机时,客户机被自动传送到代码转换技术的设备概要文件中;这意味着用户不必为如何使它们保持同步担心。不过,代码转换技术概要文件有一些 Portal 不能共享的属性,因为这些属性是特定于代码转换的。一些更重要的属性包括:
-
WMLMaximumDeckSizeWML 文档的最大 deck 大小。片段的大小将小于或等于这个大小。
-
HTMLMaximumPageSizeHTML 文档的最大页面大小。请注意:这是对 i-mode 设备或 cHTML 设备而言的。
-
TextLinksPreferredToImages这个属性指导代码转换技术将嵌入式图像转换成指向那个图像的链接,以减少图像在设备上占用的宝贵空间的大小。
-
supportedImages设备支持的图像类型列表。
-
imageScalingValue它是一个分数,指定图像伸缩比例。
-
colorSupported指出设备是否支持彩色。
-
colorDesired指出设备是否需要彩色。
-
screenCapability指出屏幕的分辨率是高、中还是低。
-
colorDepth设备所支持的颜色数量的位深度。
您必须使用 XML 配置工具才能修改这些设置之一。
XML 配置
Everyplace Access 自带的代码转换技术 XML 配置工具与随 WebSphere Application Server 提供的 XMLConfig 实用程序非常相似。有两个主要的批处理文件
ExportResources.bat 和
ImportResources.bat ;它们都位于代码转换技术安装目录下(在 Windows 上,这个目录是
c:\Program Files\IBMTrans ,在 Linux 上,这个目录是
/opt/IBMTrans ,在 AIX 上是
/usr/IBMTrans )。
要做任何更改都必须首先运行
ExportResources.bat 。缺省选项(即,没有参数)将导致所有的配置都被转储到
WTPResources.xml 文件中。由于该文件是 XML 格式的,您可以使用任何文本编辑器编辑它。例如,我们假设您有一部 Alcatel?WAP电话,并且想将 WMLMaximumDeckSize 值增加到 5K(在此请注意:我仅仅是出于举例说明的目的而设了一个限制)。根据 Everyplace Access 中的管理客户机(Manage Client)的 portlet 形式的管理程序,这个客户机的制造商值是
Alcatel 。然而,这个客户机没有模型属性也没有版本属性,因此将代码转换技术要使用的设备概要文件命名为
Alcatel 即可。
因此,在打开
WTPResources.xml 文件并搜索
Alcatel 之后,您将找到一个带有
SelectorName 子元素的
Device 元素,
SelectorName 子元素中包含
Alcatel 。这个
Device 元素大致如下所示:
<Device>
<SelectorName>Alcatel</SelectorName>
<UserAgent>(User_Agent=*Alcatel*)</UserAgent>
<DesiredMimeType order="0">text/vnd.wap.wml<DesiredMimeType>
<SupportsJavaApplets>false</SupportsJavaApplets>
<SupportsJavaScripts>false</SupportsJavaScripts>
<SupportsFrames>false</SupportsFrames>
<CreateCHTML>false</CreateCHTML>
<IsPortalClient>true</IsPortalClient>
<PortalOrdinal>40</PortalClient>
<PortalParent>WML-Device</PortalParent>
<Enable>true</Enable>
</Device>
|
这个
Device 元素是对应于 Portal 中的 Alcatel 客户机的条目。遗憾的是,我们在这个设备概要文件中找不到一个
WMLMaximumDeckSize 条目,因此我们必须查找
PortalParent 子元素。这是 Alcatel 条目中的设备。我们知道它就是
WML-Device 条目,在查看了
WML-Device 条目之后,我们知道缺省
WMLMaximumDeckSize 是 2880 字节。要为 Alcatel 电话修改这一条目,我们需要将下列内容添加到 Alcatel
Device 元素中:
<Keys>
<Key Name="WMLMaximumDeckSize">5120</Key>
</Keys>
|
接着,请保存文件并运行
ImportResources.bat ,
ImportResources.bat 缺省情况下使用
WTPResources.xml 文件。现在,将把 Alcatel 电话的 deck 分成 5K 大小的片段,而不是 2880 字节。
代码转换器(Transcoder)
代码转换技术的主要功能是围绕一组被称为代码转换器的插件构建的。这些功能包括注释、标记语言转换等等。代码转换技术旨在使其他人能够为代码转换技术编写插件。我将向您简要介绍如何使用 XML 配置工具注册一个您已构建的代码转换器。如需关于编写代码转换器的更多详细信息,请参考下面的
相关参考资料部分。
我们假设您将代码转换器包含在
myUsefulTranscoder.jar 中。您需要创建一个 XML 文件来注册它:
<Resources>
<Plugin>
<Location>c:/mydirectory/myUsefulTranscoder.jar</Location>
<Force>true</Force><!-- optional parameter -->
<Enable>true</Enable><!-- optional parameter -->
<Plugin>
</Resources>
|
现在,请用这个命令运行
ImportResources :
ImportResources -File myFile.xml 。XML 文件中的 Location 元素将告诉 XML 配置工具到哪里查找代码转换器。
Portlet 级别的代码转换
Portlet 级别的代码转换用于 portlet 级别的内容转换。它包括标记转换、注释、样式表应用程序以及影响个别 portlet 的任何其它转换。我们在上面的
体系结构部分的第 6 步中已经提到过,当通过代码转换技术传送 portlet 的内容时,这些内容与 URI 相关联。缺省情况下,这个 URI 为
http://<host name><hostname>/%%WPS/Portlet 。不过,可以通过设置 portlet 配置中的
PortletURI 参数来修改 URI。这个 URI 可以与使用该 URI 的其它资源一道用于代码转换器。
配置 portlet 以使用代码转换
在最基本的情况下,要配置 portlet 以使用代码转换技术,您可以采用以下做法之一:
- 将一个参数添加到 portlet 描述符
portlet.xml 中,作为具体的 portlet 定义中的 <config-param>
<config-param> ,或者
- 使用 Modify Parameters 选项通过一个 portlet 形式的用于管理 portlet 的管理程序添加参数。
一般来说,您很有可能不得不在以下两种情况中作出选择:
- 您希望 portlet 在所有的标记中都是可用的。要这样配置,请将参数
FilterChain=Transcoding 添加到 portlet,或者
- 您只希望将 portlet 代码转换为某些标记。例如,如果 portlet 仅提供 HTML,并且您希望将其代码转换为 WML 而非 cHTML,那么请执行下列步骤:
在文本编辑器中打开文件 <appserver>
<AppServer>/lib/app/config/services/PortletFilterService.properties 。您将看到下列条目:
filtername1=Transcoding
Transcoding.classname =
com.ibm.transform.wps.portletfilter.TranscodingPortletFilter
Transcoding.transcodeMarkup.1 = html->wml
Transcoding.transcodeMarkup.2 = html->chtml
Transcoding.transcodeMarkup.3 = html->vxml
这是缺省的 Portlet 过滤器。它被配置成支持从 HTML 到 WML、从 HTML 到 cHTML(用于日本 I-mode 电话的压缩格式的 HTML)以及从 HTML 到 VXML(用于语音服务器的语音 XML)的转换。
添加下列条目:
filtername2 = wmlTranscoding
wmlTranscoding.classname =
com.ibm.transform.wps.portletfilter.TranscodingPortletFilter
wmlTranscoding.transcodeMarkup.1 = html->wml
这样就创建了一个 Portlet 过滤器,它只执行从 HTML 到 WML 以及从 HTML 到 HTML 的代码转换。当您配置 portlet 时,请使用
FilterChain=wmlTranscoding 而不要使用
FilterChain=Transcoding 。假设该 portlet 提供 HTML,那么只有当客户机设备需要 HTML 或 WML 时,才会选择这个 portlet。
每次当您想限制何时选择某个 portlet 时,都请使用这项技术。对于更复杂的情况,例如当您想要为 WML 和 cHTML 而非 VXML 选择 portlet 时,那么您将不得不创建一个带有两个
transcodeMarkup 条目的
wmlChtmlTranscoding 过滤器,两个条目分别用于 WML 和 cHTML。
注释
代码转换技术注释(Transcoding Technology Annotation)功能使您能够通过一种基于 XML 的注释语言(Annotation Language)来修改 HTML 文档的结构。下面的内容简单概述了该功能如何工作以及您可以使用该功能做什么事。关于注释器(annotator)以及如何构建注释器的信息的链接,请参阅
相关参考资料部分。
注释如何工作
注释通过将注释应用到 XPath 语句所选择的文档对象模型(Document Object Model,DOM)元素上在一个已解析的 HTML 文档的 DOM 版本上工作。例如,语句:
<description take-effect="before" target="/descendant::TABLE[2]">
<remove />
</description>
|
将在紧靠文档中第二个表的前面应用
remove 注释。注释引擎(Annotation Engine)通过添加注释节点(XPath 语句匹配的地方)来扩展 DOM。
用注释语句扩展了 DOM 之后,注释引擎通过 DOM 进行另一次传送,然后处理这些注释。在
<keep/> 和
<remove/> 情况中,注释引擎分别打开和关闭元素删除,这意味着引擎在遇到
<keep/> 注释之前将抛出它在
<remove/> 注释之后找到的所有元素。
其它注释包含标记替换、标记插入以及分割点(splitpoint)。
以下是对更有用的注释的简单概述:
-
<remove>打开 remove 状态。
-
<keep>关闭 remove 状态。
-
<table>用于注释表。
-
<column>用在表注释器内以选择一整列。
-
<row>用于选择一整行。
-
<field>用于修改表单中的域。
-
<option>用在域注释器中以指定一个可选择的选项。
-
<insertattribute>在 HTML 标记中插入一个属性。
-
<inserthtml>在 HTML 标记中插入一个属性。
-
<replace>用于将您文档中已选择的元素替换为指定的内容。
-
<replacewithhtml>用于将已选择的元素替换为 HTML 标记。
-
<setpreference>用于设置代码转换技术在进行代码转换时使用的首选项。
-
<splitpoint>在 HTML 文档中为片段指定一个片段提示。
注释的各种用途
通常,使用 JSP 文件和条件语句而不是通过编写需要被应用的注释来编写 portlet 源代码看起来要更容易更快。因此,理解何时何处可以使用注释对于有效地使用注释是非常重要的。
- 如果为 portlet 生成标记的人不喜欢通过编写 Java 代码来创建或修改文档结构,注释是很有用的。
- 注释对于处理并非由 portlet 本身直接生成的内容或您无法控制的内容是很有用的。
- 注释对于通过使用 XPath 语句添加标记是很有用的。
- 注释对于特定于设备的注释是很有用的。
配置 portlet 以使用注释
要将注释应用于 portlet,您首先必须指定该 portlet 要进行代码转换(请参阅上面的
Portlet 级别的代码转换这一部分)。这样,您就有下列选择:
- 通过 portlet 的配置中的 URL 指定注释文件。为此,您可以把
config-param 添加到
portlet.xml 文件中,或者使用一个 portlet 形式的用于管理 portlet 的管理程序添加参数
AnnotationFile=<url> (此处的
<url> <url> 是注释器的 URL)。这个 URL 可以是服务器可访问的任何 URL。要注意的重要一点是就对于文件 URL(例如:
file:c:/path/file.ann )这种情况,文件必须在服务器本身上。
- 用 XML 配置工具将注释文件注册到代码转换技术本身。现在,为了使这种特殊情况能够进行,您需要使用上文提到的
PortletURI 以便让已注册的注释器知道该注释哪个 portlet,这样它就不会不加区别地注释所有的 portlet。
- 使用内部注释。这使您能够将如下所示的注释语句嵌入到文档中:
<p>Here is some HTML content that might have been removed by a prior <remove/> tag</p>
<!--
<?xml version="1.0" encoding="ISO-8859-1"?>
<annot version="1.0">
<keep/>
</annot>
-->
<p>Here is some more HTML that will get kept, since we found a <keep/> tag</p>
请注意,这里没有 XPath 条目。当您直接把语句嵌入 HTML 源代码时,注释引擎已经知道要注释哪里了,因此 XPath 条目就变得多余了。
多页面 portlet 的注释
如果您的 portlet 有多个页面并且您想对它们应用注释,那么您将被局限于或者使用内部注释,或者确保每个页面都有相同的结构(这样,您可以将同一个注释器应用于每个页面)。保持相同的结构很重要,因为组成注释器的 XPath 语句对文档结构的依赖性很大;如果结构不同,那么就不能按照期望的那样应用注释器了。
样式表
从 XML 转换到任何标记语言的一种普遍采用的做法是使用 XSL 样式表。诸如 Xalan 这样的工具根据样式表中包括的说明来使用样式表处理 XML 内容。代码转换技术使您能够将样式表应用于生成 XML 内容的 portlet。
代码转换技术的 XSL 处理的一些特性使得它对于多设备情况来说很有用。例如,它给 XSLT 引擎提供设备属性,该引擎使您能够根据设备特征(例如屏幕分辨率、是否支持彩色等等)为样式表设置参数。这使您能够定制您的转换,当您只想创建一个样式表以根据您的 XML 生成 HTML,但同时您还想支持 WML 时,这一点变得尤为有用。在这种情况下,您可以为样式表设置参数以便为 WML 设备生成较小的 HTML 文档,然后代码转换技术将该样式表代码转换成 WML(请参阅 Alan Booth 和 Kathryn Britton 发表在 IBM developerWorks上的文章
Spinningyour XML for screens of all sizes)。
配置 WebSphere Portal 以支持使用样式表
在配置 portlet 之前,您必须配置门户。不过,您只需要这样做一次就可以了。请完成下列步骤:
- 在文本编辑器中打开文件 <appserver>
<AppServer>/lib/app/config/services/PortletFilterService.properties 。
- 查找下列条目:
Transcoding.transcodeMarkup.1 = html->wml
Transcoding.transcodeMarkup.2 = html->chtml
Transcoding.transcodeMarkup.3 = html->vxml
- 添加下列条目:
Transcoding.transcodeMarkup.4 = xml->html
Transcoding.transcodeMarkup.5 = xml->wml
- 保存并关闭该文件。
- 以管理员身份登录到您的门户,选择
PortalAdministration => Portal Settings => Manage Markups。
- 单击
Add new markup。
- 在标记名域、MIME 类型域和缺省字符集域中分别输入
xml 、
text/xml 和
UTF-8 。
- 重新启动门户。
配置 portlet 以使用样式表
- 当您为 XML portlet 创建
portlet.xml 时,在 <supports>
<supports> 元素中指定下列内容:
<supports>
<markup name="xml">
<view output="fragment"/>
</markup>
</supports>
- 安装了 portlet 之后,选择
Portal Administration=> Portlets => Manage Portlets。
- 请从列表中选择您的 portlet,然后单击
Modify Parameters。
- 添加
FilterChain=Transcoding 和
StylesheetFile=<url_to_file> <url_to_file>。确保 WebSphere Portal 本身可以访问您为
StylesheetFile 指定的 URL,因为 Portal 将提示您输入该文件的名称。如果该文件位于 Portal 所在的机器上,那么您可以使用文件 URL,例如,
file:c:/mydirectory/myfile.xsl 。
简单示例
RSS(丰富站点摘要(Rich Site Summary))是辛迪加新闻馈送、Web 日志等的公共格式。它是 XML,因此也是这种文章中的示例的主要目标。我不想在此讨论 XSL 和 XML 的细节;如需我所使用的文件,请参阅
相关参考资料部分。
我使用了 Everyplace Access 中包括的
ServletInvokerPortlet ,并且按照上面所述将它打包,指定它提供 XML。然后,我创建了 JSP 文件以获得 URL 的内容并输出它们。这个 URL ?
http://www.xmlhack.com/rsscat.php ? 是 XMLHack 的 RSS 馈送;它是关于 XML 信息的流行新闻站点。我建立了 portlet 以使用这些 JSP 源代码。这样,我现在便拥有了一个输出 RSS 的 portlet。
然后,我编写了一个 XSL 样式表将 RSS 转换成有意义的 HTML。我使用了参数化功能来切断
textLinksPreferredToImages 设备属性。这样,如果设备不首选图像的话,它将获得标题的文本而非图像。
因为这个 XSL 还可以应用于我的特定 XML 页面之外的页面,所以我决定向代码转换技术注册它而不使用
StylesheetFile 属性。如果已经向代码转换技术注册了一个样式表,将可以将此样式表应用于每个指定了确定的 DTD 的 XML 或匹配特定的 URL 模式的 XML。为此,我首先调用了
ExportResources 批处理文件以导出所有的首选项。我这么做是为了获得这个代码转换技术安装的
ServerModel 值以及版本值。然后,我将不必要的项去掉,最终获得以下 XML 文件:
<?xml version="1.0" encoding="UTF-8"?>
<Resources ServerModel="testOne" Version="magic411srv">
</Resources>
|
然后,我为样式表添加信息,并将文件保存为
myStylesheetResource.xml :
<?xml version="1.0 encoding="UTF-8"?>
<Resources ServerModel="testOne" Version="magic411srv">
<Stylesheet>
<SelectorName>RSS to HTML</SelectorName>
<Name>RSS to HTML</Name>
<Description>Converts an RSS feed into HTML</Description>
<OutputMimeType Enable="true" order="0">text/vnd.wap.wml</OutputMimeType><OutputMimeType Enable="true" order="1">text/html</OutputMimeType>
<Location>file:/C:/rss2html.xsl</Location>
<InputDTD>http://my.netscape.com/publish/formats/rss-0.91.dtd</InputDTD>
<Enable>true</Enable>
</Stylesheet>
</Resources>
|
请注意:Location 元素中指定的是代码转换技术在服务器上的安装位置。
然后,我运行了
ImportResources.bat -FilemyStylesheetResource.xml 命令来注册它。重新启动 WebSphere Portal 之后,Web 浏览器显示下列内容:
图 2. 到 Web 浏览器的输出
Web 裁剪 portlet
Web 裁剪 portlet 使门户管理员能够创建 portlet,该 portlet 使用 Web 页面上现有的内容并且只保留必需的内容。创建 Web 裁剪器(clipper)的过程非常简单。要看关于 Web 裁剪的文档,请参阅
WebSphere Portal 信息中心的 Web clipping 页面。还要参考 Scott DeWitt 的文章
使用 WebSphere Portal 版本 4.1 的基本 Web 裁剪。
门户级别的代码转换
门户级别的代码转换用于修改整个页面。按照设计,到此为止整个页面使用的输出标记语言都是正确的,所以在这个级别不应该发生任何标记转换。门户级别的代码转换的主要目的是提供 deck 片段。
Deck 片段
许多无线设备(尤其是蜂窝电话)只能支持有限的页面(或者 deck,WML 中这样称呼)大小,如果它们接收的页面过大,就会出错,或者甚者可能崩溃。装配了门户页面之后,代码转换技术将把页面分割成适当大小的片段并且提供第一个片段,将其余的片段高速缓存以便在设备请求这些片段时提供。这就产生了问题,片段合适的大小是多大?代码转换技术允许您修改这些值以使其最适合您的设备。请参见
设备概要文件这一部分的示例。
片段有时会导致文档中奇怪的分割。为了解决这个问题,代码转换技术允许您插入片段提示,以便您可以指明要对文档分段的适当位置。如果您正在自己生成 WML 或 cHTML 源代码,就将下面的注释作为片段提示插入到您的文档中:
不然,如果您正在编辑可以被代码转换为 WML 的 HTML,那么您可以使用
<splitpoint/> 注释,或者在外部或内部使用 XPath 语句。请参阅
注释这一部分以获得关于如何执行各个任务的详细信息。当您想把这个注释添加到文档中时,请确保避免注释中出现空白。
结束语
对于那些有兴趣把普及门户变得更普及的开发者或管理员来说,代码转换技术是一个优秀的工具。既然您对代码转换技术的工作方式以及如何开发自己的代码转换器已经有了基本的了解,您就可以利用这一功能构建更强大的门户。
下载 | 名字 | 大小 | 下载方法 |
|---|
| stylesheetExample.zip | 2 KB | HTTP |
参考资料
文档:
文章:
关于作者  | |  |
Jimmy Thrasher是位于北卡罗莱纳州罗利市的 IBM Research Triangle Park 研究室的一名软件工程师,他从事普及计算(Pervasive Computing)。您可以通过
jjthrash@us.ibm.com与 Jimmy 联系。
|
对本文的评价
|