XSLT удваивает выходные данные с отклонениями для переключенного представления HTML - PullRequest
0 голосов
/ 21 октября 2018

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>?

Альтернативой является установка уникального класса для каждого дискретного вывода шаблона, а затем управление эффектом переключения с большим списком классов вместо всей группы.Но меня поражает, что это будет не элегантное решение, которое выводит в браузер больше, чем необходимо.

Большое спасибо заранее.

...