我对XSLT相当陌生,并且想知道如何替换某些元素。基本上,我想用一个普通的BR替换带有额外属性的BR元素。 XML如下:
<outer_element>
<p>
<font face="Arial">
Invitations<br>
</font>
<font face="Arial">
Charts<br>
</font>
</p>
<span style="font-size:12pt;">
<br clear="all" style="font-size:18pt;">
</span>
<outer_element>
以下是XSL的一部分:
<xsl:template match="//outer_element">
<xsl:element name="outer_element">
<xsl:value-of select="."/>
</xsl:element>
<xsl:element name = "text">
<xsl:value-of select="."/>
</xsl:element>
</xsl:template>
另外,我不确定我要寻找的是XSLT 1.0还是XSLT 2.0解决方案。
请您参考如下方法:
您输入的不是有效的XML / XHTML。 br应该关闭:<br/>。同样,最后的结束标签也不是结束标签。
如果您不希望使用有效的XHTML,请查看https://jsoup.org/或http://www.html-tidy.org/。
顺便说一句:有一个名为identity transform的XSLT模式,该模式将输入递归地复制到输出中,但是允许您覆盖所需每个元素的复制过程。
基本模式锁定是这样的。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
现在为
br添加一个模板,该模板仅复制元素,而不复制属性:
<xsl:template match="br">
<xsl:copy/>
</xsl:template>
应该是这样。

