XSLT将输出加倍,并具有用于切换的HTML视图的方差

时间:2018-10-21 17:32:37

标签: html xslt xslt-2.0

XSLT 2.0

我项目的最终目标是输出一个网页,该网页根据两个学术标准向用户提供同一中世纪文档的两个视图,用户可以在两个视图之间使用按钮进行切换(请参见18个月的概念证明)以及here之前的许多迭代)。

这要求我经常从单个XSLT模板调用中输出两个HTML段,以它们的@class来区分,它们的值为'inter'或'diplo'。这开始对要使用多个模板的“命名实体”(人物和地点)产生负面影响。

例如,在https://xsltfiddle.liberty-development.net/3NzcBtW,有人发现我对待<persName>的第一个实例:

 <persName nymRef="#Bernard_Cogota_MSP-AU" role="dep">B<supplied reason="expname">ernardus</supplied> Cogata</persName>

以便输出:

 <a href="http://foo.com/person/Bernard_Cogota_MSP-AU" class="inter">Bernardus Cogata</a>
 <span class="diplo">Bernardus Cogata</span>

但是,如果我添加此模板(见https://xsltfiddle.liberty-development.net/3NzcBtW/1):

<xsl:template match="tei:supplied">
    <span class="supplied inter"><xsl:apply-templates/></span>
    <span class="supplied diplo">[<xsl:apply-templates/>]</span>
</xsl:template>

它将两个范围输出到两个<persName>输出,这将导致javascript和css产生不正确的显示结果:

<a href="http://foo.com/person/Bernard_Cogota_MSP-AU" class="inter">B<span class="supplied inter">ernardus</span><span class="supplied diplo">[ernardus]</span> Cogata</a>
<span class="diplo">B<span class="supplied inter">ernardus</span><span class="supplied diplo">[ernardus]</span> Cogata</span>

我想知道XSLT中是否有一种方法可以输出:

<a href="http://foo.com/person/Bernard_Cogota_MSP-AU" class="inter">B<span class="supplied inter">ernardus</span> Cogata</a>
<span class="diplo">B<span class="supplied diplo">[ernardus]</span> Cogata</span>

我是否应该考虑将文档正文(当前为)转储到两个单独的<div class="inter"><div class="diplo">中?可能使用modes来构建单独的<div>吗?

备用方法是为每个离散的模板输出设置唯一的类,然后使用大量类而不是整个组来管理切换效果。但令我惊讶的是,这是一种不雅的解决方案,可向浏览器输出更多的内容。

非常感谢。

0 个答案:

没有答案