XSLT 2.0
Конечной целью моего проекта является вывод веб-страницы, которая предоставляет пользователю два представления одного и того же средневекового документа в соответствии с двумя академическими стандартами, между которыми пользователь может переключаться с помощью кнопки (см. подтверждение концепции от 18 месяцев и многих итераций назад здесь ).
Для этого требуется, чтобы я часто выводил два сегмента HTML из одного вызова шаблона XSLT, различая их @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>
?
Альтернативой является установка уникального класса для каждого дискретного вывода шаблона, а затем управление эффектом переключения с большим списком классов вместо всей группы.Но меня поражает, что это будет не элегантное решение, которое выводит в браузер больше, чем необходимо.
Большое спасибо заранее.