конвертировать td в dt и dd
87
13
Я пытаюсь преобразовать таблицы. Я хотел бы преобразовать первую ячейку "td" в "dt", а вторую ячейку - в "dd" каждой строки. Я пробовал это, но не знаю, как отличить первую и вторую ячейки.
Источник
<table>
<tr>
<td class="dl"></td>
<td class="dl"></td>
</tr>
</table>
цель
<table>
<tr>
<dt></td>
<dd></dd>
</tr>
</table>
XSL
<xsl:when test="@class='dl'">
<dt><xsl:apply-templates select="*|text()"/></dt>
</xsl:when>
<xsl:when test="@class='?'">
<dd><xsl:apply-templates select="*|text()"/></dd>
</xsl:when>
Может ли кто-нибудь помочь мне здесь?
спросил(а)
2016-03-03T15:41:00+03:00
4 года, 11 месяцев назад
добавить комментарий
пожаловаться
Решение
95
Добавьте еще один <xsl:choose>
в котором вы проверяете позицию td
. Если это 1, выведите dt
, иначе выведите dd
:
<xsl:choose>
<xsl:when test="@class='dl'">
<xsl:choose>
<xsl:when test="position()=1">
<dt><xsl:apply-templates select="*|text()"/></dt>
</xsl:when>
<xsl:otherwise>
<dd><xsl:apply-templates select="*|text()"/></dd>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="@class='?'">
<dd><xsl:apply-templates select="*|text()"/></dd>
</xsl:when>
</xsl:choose>
Функция: позиция номера ()
Функция position возвращает число, равное позиции контекста, из контекста оценки выражения. (https://www.w3.org/TR/xpath/#function-position)
Немного более читаемый без вложенных xsl:choose
(и более логичный, так как вы все равно хотите обрабатывать td class="dl"
):
<xsl:template match="td[@class='dl']">
<xsl:choose>
<xsl:when test="position()=1">
<dt><xsl:apply-templates select="*|text()"/></dt>
</xsl:when>
<xsl:otherwise>
<dd><xsl:apply-templates select="*|text()"/></dd>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
ответил(а)
2016-03-03T15:54:00+03:00
4 года, 11 месяцев назад
добавить комментарий
пожаловаться
Ваш ответ
Еще в рубрике
60
Как идентифицировать/проверить узел существует или нет в xml с помощью XSLT, если существует изменение xml и печать?
74
Преобразование начинающих с использованием шаблонов apply и шаблонов в дочернем node
62
Используйте XSLT для объединения коллекции файлов XML и фильтрации данных
61
Как объединить два элемента в XML