Проблема
В настоящее время я работаю над функцией преобразования, чтобы взять заданный файл HTML и преобразовать его в пользовательский XML с помощью XSLT 2.0. Мне удалось преобразовать все, кроме атрибута align для тегов внутри таблицы.
HTML-документ, с которым у меня сейчас возникают проблемы, выглядит следующим образом:
<table frame="none" style="margin-left:0">
<tbody>
<tr align="left">
<th style="text-align:left; vertical-align:top; border-right:1 solid black; border-bottom:1 solid black">Yeah</th>
<th style="text-align:left; vertical-align:top; border-right:1 solid black; border-bottom:1 solid black">4321</th>
</tr>
<tr align="left">
<th style="text-align:left; vertical-align:top; border-right:1 solid black; border-bottom:1 solid black">Blah</th>
<th style="text-align:left; vertical-align:top; border-right:1 solid black; border-bottom:1 solid black">1234<sup>3</sup></th>
</tr>
</tbody>
</table>
Сначала я нацелился на таблицу, используя:
<xsl:template match="table">
Затем я просматриваю таблицу и беру различные теги и атрибуты, необходимые для преобразования, используя варианты выбора и когда. Но когда я пытаюсь получить атрибут align, используя следующий случай, он всегда терпит неудачу:
<xsl:when test="tbody/tr[1]/@align">
<xsl:attribute name="align"><xsl:value-of select="tbody/tr[1]/@align"/></xsl:attribute>
</xsl:when>
Устранение неполадок
После некоторой отладки я обнаружил, что если я использую следующий случай, он отлично находит тег:
<xsl:when test="tbody/tr[1]">
<xsl:attribute name="align"><xsl:value-of select="'Found TR'"/></xsl:attribute>
</xsl:when>
Я также протестировал XPath в Google Chrome и обнаружил, что путь tbody/tr[1]/@align действителен и работает нормально.
Одна странная вещь, которую я обнаружил, заключается в том, что по какой-то причине на вкладке стиля в инструменте разработчика Google Chrome атрибут align указан как:
tr[Attributes Style] {
text-align: -webkit-left;
}
Узнав об этом, я попытался использовать следующий случай, но все равно не получилось:
<xsl:when test="tbody/tr[1]/@text-align">
<xsl:attribute name="align"><xsl:value-of select="tbody/tr[1]/@text-align"/></xsl:attribute>
</xsl:when>
TLDR: я могу настроить таргетинг на тег tr внутри таблицы, но не могу получить атрибут align с помощью XSLT 2.0.
Я, очевидно, не эксперт в XSLT, поэтому любые отзывы будут оценены.