Я создаю HTML-адрес электронной почты для кампании с использованием XML и XSLT. У меня почти есть то, что я хочу, но я получаю несколько повторяющихся материалов, и я не могу понять, как устранить дублирующие элементы.Создайте таблицу HTML с помощью XSLT 1.0
Есть одно дополнительное требование, которое я забыл добавить изначально: мне нужно добавить настраиваемые шаблоны для каждого элемента контента, чтобы применить другое форматирование на основе элемента. Кроме того, есть случайные изображения в содержании, которые должны быть смоделированы
Вот некоторые примеры XML:
<?xml version="1.0" encoding="UTF-8"?>
<job>
<surface>
<preheader><preheader_p>Click for more information</preheader_p></preheader>
<preheader><preheader_p>Questions? Call 877-555-1212</preheader_p></preheader>
<preheader><preheader_p>Click to unsubscribe</preheader_p></preheader>
<brand href="Images/logo.jpeg" />
<headline>Headline goes here</headline>
<subhead>Subhead goes here</subhead>
<body_copy>First paragraph goes here</body_copy>
<body_copy>Second paragraph goes here</body_copy>
<chart href="Images/graph.jpeg" />
<body_copy>Third paragraph goes here</body_copy>
</surface>
</job>
Использование XSLT Мне нужно построить таблицу, которая вставляет содержимое Preheader в левой колонке таблица с двумя столбцами. В правой колонке мне нужно вставить логотип продукта.
После отображения содержимого заголовка и логотипа оставшийся контент вставляется последовательно, каждый в своей собственной строке таблицы.
Вот мой XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:output method="html" encoding="UTF-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<table width="600" border="1">
<tr><td>
<table width="100%" border="1">
<tr>
<td width="60%">
<table width="100%" border="1">
<xsl:apply-templates select="job/surface/preheader" />
</table>
</td>
<td width="40%"><xsl:apply-templates select="job/surface/brand"/></td>
</tr>
</table>
</td></tr>
<xsl:apply-templates select="job/surface" />
</table>
</body>
</html>
</xsl:template>
<xsl:template match="preheader"><tr><td style="font-size:11pt;"><xsl:value-of select="."/></td></tr>
</xsl:template>
<xsl:template match="brand"><img style="max-width:100%" src="{@href}" />
</xsl:template>
<xsl:template match="headline"><tr><td style="font-size:20pt;"><xsl:value-of select="."/></td></tr>
</xsl:template>
<xsl:template match="subhead"><tr><td style="font-size:16pt;"><xsl:value-of select="."/></td></tr>
</xsl:template>
<xsl:template match="body_copy"><tr><td style="font-size:12pt;"><xsl:value-of select="."/></td></tr>
</xsl:stylesheet>
Проблема заключается в том, что Preheader и логотип элементы двойного повторения.
Цель состоит в том, чтобы создать следующий HTML:
<html>
<body>
<table width="600" border="1">
<tr><td>
<table width="100%" border="1">
<tr><td width="60%"><table width="100%" border="1">
<tr><td>Click for more information</td></tr>
<tr><td>Questions? Call 877-555-1212</td></tr>
<tr><td>Click to unsubscribe</td></tr>
</table></td>
<td width="40%"><img style="max-width:100%" src="Images/logo.jpeg"></td</tr>
</table></td></tr>
<tr><td style="font-size:20pt;">Headline goes here</td></tr>
<tr><td style="font-size:16pt;">Subhead goes here</td></tr>
<tr><td style="font-size:12pt;">First paragraph goes here</td></tr>
<tr><td style="font-size:12pt;">Second paragraph goes here</td></tr>
<tr><td><img style="max-width:100%" src="Images/graph.jpeg" /></td></tr>
<tr><td style="font-size:12pt;">Third paragraph goes here</td></tr>
</table>
</body>
</html>
Я не могу использовать атрибуты colspan или rowspan. Из-за характера клиентов электронной почты мы должны использовать вложенные таблицы, как в моем первоначальном примере. Я попытался пересмотреть решение, чтобы создать таблицу с двумя столбцами с вложенными элементами, но я не могу заставить ее правильно генерировать вложенность. –
Боюсь, что вы потеряли меня в этот момент. Если вы не можете использовать colspan/rowspan, то игнорируйте мое предложение перезаписи. Не меняет выражение 'xsl: apply-templates'' select' решить проблему дублированных строк? –
Да, повторяющиеся строки больше не являются проблемой. Но я понял, что мне нужно применять специальные шаблоны для каждого элемента, потому что нам нужно применять стиль к различным элементам. Если вы видите ответ ниже, я изменил ваш код, чтобы создать правильный тип таблиц вложенности. –