Я не могу понять очень простую вещь!XSLT - преобразование списков определений (TEI)
Я пытаюсь написать шаблон для преобразования списков определений.
<list type="gloss">
<head>Slovníček pojmů</head>
<label xml:lang="cs">Pojem</label>
<item>Dojem!</item>
<label xml:lang="cs">Stavba</label>
<item>Stavení</item>
</list>
текущий шаблон:
<xsl:template match="tei:list[@type='gloss']">
<div class="glossary">
<p>
<b>
<xsl:apply-templates select="tei:head"/>
</b>
</p>
<dl>
<xsl:choose>
<xsl:when test="tei:label">
<dt>
<xsl:apply-templates select="tei:label"/>
</dt>
</xsl:when>
<xsl:otherwise>
<dd>
<xsl:apply-templates select="tei:item"/>
</dd>
</xsl:otherwise>
</xsl:choose>
</dl>
</div>
</xsl:template>
Ничего не работает. Я пробовал цикл for-each
, что создает проблемы из-за применения шаблонов к атомным значениям. Внешние шаблоны (за пределами этого) обычно отображают тег head
неправильным образом (дважды). Есть ли простой способ, как это сделать?
В приведенном выше шаблоне указанная ошибка указывает, что слишком много вложенных вызовов для шаблонов (таблица стилей может быть циклической).
Вы можете показать больше ваш XML и XSLT, пожалуйста? Ваш XSLT ссылается на префикс пространства имен 'tei', но для этого вы не указали объявление пространства имен. Кроме того, ваш XML не имеет каких-либо пространств имен, поэтому он не будет соответствовать «tei: list». Вероятно, вы также должны показать шаблоны, которые соответствуют «head», «label» и «item», чтобы мы могли воспроизвести ошибку. Благодаря! –