Я пытаюсь преобразовать HTML-форматирование в CSS через XSL в целях доступности.У меня это работает, но только если там ранее не было атрибута стиля.Как добавить атрибут к тегу стиля, который уже существует?Это мой код для изменения align=
на style="text-align:
при отсутствии атрибута стиля:
<!-- /align -->
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="@align">
<xsl:attribute name="style">
<xsl:value-of select="@style"/>
<xsl:attribute name="style" select="concat('text-align: ',.)"/>
</xsl:attribute>
</xsl:template>
Я думал, что предыдущие атрибуты будут включены с использованием value-of перед конкаттацией, но это не работает.Я хочу, чтобы это можно было добавить text-align:
, даже если там уже есть тег стиля, например style="border: 1px; text-align:
Редактировать:
Это обновленный кодэто дает мне ошибку:
<!-- /align -->
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="*[@align]">
<xsl:copy>
<xsl:apply-templates select="@*[not(local-name() = 'style' or local-name() = 'align')]" />
<xsl:attribute name="style">
<xsl:value-of select="@style" />
<xsl:if test="@style and substring(@style, string-length(@style)) != ';'">; </xsl:if>
<xsl:apply-templates select="@align" />
</xsl:attribute>
<xsl:apply-templates />
</xsl:copy>
</xsl:template>
<xsl:template match="@align">
<xsl:value-of select="concat('text-align: ', .)"/>
</xsl:template>
<!-- /width -->
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="*[@width]">
<xsl:copy>
<xsl:apply-templates select="@*[not(local-name() = 'style' or local-name() = 'width')]" />
<xsl:attribute name="style">
<xsl:value-of select="@style" />
<xsl:if test="@style and substring(@style, string-length(@style)) != ';'">; </xsl:if>
<xsl:apply-templates select="@width" />
</xsl:attribute>
<xsl:apply-templates />
</xsl:copy>
</xsl:template>
<xsl:template match="@width">
<xsl:value-of select="concat('width: ', . , 'px')"/>
</xsl:template>
Я предполагаю, что эта ошибка происходит, потому что я пытаюсь добавить другой атрибут к элементу, который уже был изменен с помощью одного из этих преобразований.