我有一段XML数据需要转换为WML.
是这样的:
<root>
<category name="music"/>
<subcategory name="classic"/>
<subcategory name="rock"/>
<subcategory name="Techno"/>
<node type="music" subtype="classic" name="beethoven"/>
<node type="music" subtype="classic" name="chopin"/>
<record author="beethoven" name="moonlight sonata"/>
…
</root>
我无法更改文件结构。
一些Nokia移动浏览器无法将大量<card>' 加载到内存中。
因此,根据移动浏览器,WML页面应该是一整套<card>',或者是<card>' 的某个子集。
例如,如果我用普通浏览器下载一个页面,它应该是这样的:
<wml>
<card id="TOC">
<p><a href="#contents">Contents</a></p>
<p><a href="#az">A-Z</a></p>
</card>
<card id="contents">
<p><a href="#music">music</a></p>
<p><a href="#video">video</a></p>
<p><a href="#java">java</a></p>
</card>
<card id="az">
<p><a href="#beethoven">beethoven</a></p>
<p><a href="#chopin">chopin</a></p>
</card>
<card id="music">
<p><a href="#classic">classic</a></p>
<p><a href="#rock">rock</a></p>
<p><a href="#Techno">Techno</a></p>
</card>
<card id="classic">
<p><a href="#beethoven">beethoven</a></p>
<p><a href="#chopin">chopin</a></p>
</card>
…
</wml>
,以便用户无需额外往返服务器即可浏览。
但是,当我使用Nokia并访问起始页时,页面应如下所示:
http://example.com/
<wml>
<card id="TOC">
<p><a href="#contents">Contents</a></p>
<p><a href="#az">A-Z</a></p>
</card>
<card id="contents">
<p><a href="#music">music</a></p>
<p><a href="#video">video</a></p>
<p><a href="#java">java</a></p>
</card>
<card id="az">
<p><a href="/beethoven">beethoven</a></p>
<p><a href="/chopin">chopin</a></p>
</card>
<card id="music">
<p><a href="/classic">classic</a></p>
<p><a href="/rock">rock</a></p>
<p><a href="/Techno">Techno</a></p>
</card>
<card id="video">
<p><a href="/movies">Movies</a></p>
</card>
<card id="java">
<p><a href="/games">Games</a></p>
</card>
</wml>
,当我访问 时href,它应该显示内部内容:
http://example.com/classic
<wml>
<card id="TOC">
<p><a href="#contents">Contents</a></p>
<p><a href="#az">A-Z</a></p>
</card>
<card id="contents">
<p><a href="/music">music</a></p>
<p><a href="/video">video</a></p>
<p><a href="/java">java</a></p>
</card>
<card id="az">
<p><a href="#beethoven">beethoven</a></p>
<p><a href="#chopin">chopin</a></p>
</card>
<card id="classic">
<p><a href="#beethoven">beethoven</a></p>
<p><a href="#chopin">chopin</a></p>
</card>
…
</wml>
基本上,XSLT应该做以下事情:
接受某种要显示的参数:类别、子类别等。
计算
<card>将显示的 '。- 如果我们只加载类型和目录,我们会得到
2卡片(我们总是显示它们)- 如果我们只加载类型和子类型,我们会得到
10卡片。 - 如果我们加载类型、子类型和标题,我们会显示
100卡片。 - 如果我们加载所有内容,我们会显示
300卡片。
- 如果我们只加载类型和子类型,我们会得到
Nokia只能处理120卡片,所以我们就停在 level 上3。如果
XML更改和级别3需要130卡,我们应该停止在级别2。- 如果我们只加载类型和目录,我们会得到
<card>如果低于特定水平,则不显示如果不显示卡片,将
#(inner links)替换为(outer links)。/
是否可以在单个XSL文件中执行?