#html #xslt
#HTML #xslt
Вопрос:
У меня есть разметка, из которой я хотел бы удалить / преобразовать определенные теги, но сохранить данные.
Например, это:
<div>This is some <b>bold</b> text inside of a div</div>
<p>This is <u>another <b>formatted</b></u> string...<br /></p>
должно стать так:
<p>This is some <b>bold</b> text inside of a div</p>
<p>This is another <b>formatted</b> string...</p>
Использование apply-templates
для соответствия каждому условию не работает из-за вложенности.
Как бы вы это сделали?
Ответ №1:
Звучит как задание для модифицированного преобразования идентификатора, например:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<!--This is the identity template -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<!--This template turns all <div> into <p>-->
<xsl:template match="div">
<p>
<xsl:apply-templates select="@*|node()"/>
</p>
</xsl:template>
<!--This template removes all <u> and continues processing -->
<xsl:template match="u">
<xsl:apply-templates select="@*|node()"/>
</xsl:template>
</xsl:stylesheet>