Словарь TEI-XML для простой таблицы HTML с использованием XSL
Нужно поместить слова "entryFree" в первый столбец (оставляя <form>
содержание для второго), и "смысл" и другие, как второй, каждая пара в одном ряду, с границами. Пример таблицы стилей XSL содержит только форматирование.
Пример XML: https://drive.google.com/file/d/1sNAbWw5xo1pgwK2QfQwPrbZtZt8uV48T/view?usp=sharing
модный XSL (изменение разрешений лицензии): https://github.com/michmech/tei-dictionary.xsl
1 ответ
Если вы хотите отобразить все entryFree
элементы в строках таблицы HTML (т.е. HTML tr
элементы в HTML table
) затем настройте table
по мере необходимости и в tbody
обработать все entryFree
элементы, сопоставляя их с шаблоном tr
:
<xsl:output method="html" doctype-system="about:legacy-doctype"/>
<xsl:template match="/">
<html>
<head>
<title>Test</title>
</head>
<body>
<h1>Table</h1>
<table>
<thead>
<tr>
<th>free entry</th>
<th>forms/senses</th>
</tr>
</thead>
<tbody>
<xsl:apply-templates select="//tei:entryFree"/>
</tbody>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="tei:entryFree">
<tr>
<td>
<xsl:value-of select="@sortKey"/>
</td>
<td>
<xsl:apply-templates/>
</td>
</tr>
</xsl:template>
Вам нужно будет удалить соответствующий шаблон tei:entryFree
очевидно.
Что касается форматирования таблицы, это проблема HTML/CSS, HTML 4 https://www.w3.org/TR/html401/struct/tables.html позволяет, например,
<table rules="all" frame="border">
<thead>
<tr>
<th>free entry</th>
<th>forms/senses</th>
</tr>
</thead>
<tbody>
<xsl:apply-templates select="//tei:entryFree"/>
</tbody>
</table>
в HTML5 я думаю, что использование CSS является предпочтительным:
<xsl:template match="/">
<html>
<head>
<title>Test</title>
<style>
table.dict {
border: 1px solid black;
border-collapse: collapse;
}
table.dict th, table.dict td {
border: 1px solid black;
}
</style>
</head>
<body>
<h1>Table</h1>
<table class="dict">
<thead>
<tr>
<th>free entry</th>
<th>forms/senses</th>
</tr>
</thead>
<tbody>
<xsl:apply-templates select="//tei:entryFree"/>
</tbody>
</table>
</body>
</html>
</xsl:template>