XSLT如何从div和td标签中删除样式
问题描述:
我是XSLT新手。我在从div,td或li标签中删除样式属性时被卡住了。XSLT如何从div和td标签中删除样式
输入XML:
<?xml version="1.0" encoding="UTF-8"?>
<div xmlns="http://www.w3.org/1999/xhtml">
<table style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; WIDTH: 606px; BORDER-COLLAPSE: collapse; WORD-WRAP: break-word; TABLE-LAYOUT: fixed; BORDER-TOP: medium none; BORDER-RIGHT: medium none"
class="MsoNormalTable msoUcTable" tabIndex="-1" border="1" cellPadding="0" width="606">
<colgroup>
<col style="WIDTH: 189px"/>
<col style="WIDTH: 417px"/>
</colgroup>
<tbody>
<tr>
<td bgColor="#cccccc"
style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: black 1pt solid; BORDER-TOP: black 1pt solid; BORDER-RIGHT: black 1pt solid">
<div style="MARGIN-TOP: 0in; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; MARGIN-BOTTOM: 0pt; FONT-SIZE: 12pt">
<span style="FONT-SIZE: 10pt">
<strong>
<font face="Arial"> 1st data</font>
</strong>
</span>
<span style="FONT-SIZE: 1pt"/>
</div>
</td>
<td bgColor="#cccccc"
style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: black 1pt solid; BORDER-TOP: black 1pt solid; BORDER-RIGHT: black 1pt solid">
<div style="MARGIN-TOP: 0in; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; MARGIN-BOTTOM: 0pt; FONT-SIZE: 12pt">
<span style="FONT-SIZE: 10pt">
<strong>
<font face="Arial">2nd data</font>
</strong>
</span>
<span style="FONT-SIZE: 1pt"/>
</div>
</td>
</tr>
</tbody>
<tbody>
<tr>
<td style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: black 1pt solid; BORDER-TOP: black 1pt solid; BORDER-RIGHT: black 1pt solid">
<div style="MARGIN-TOP: 0in; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; MARGIN-BOTTOM: 0pt; FONT-SIZE: 12pt">
<span style="FONT-SIZE: 10pt">
<strong>
<font face="Arial">3rd data</font>
</strong>
</span>
<span style="FONT-SIZE: 1pt"/>
</div>
</td>
<td style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: black 1pt solid; BORDER-TOP: black 1pt solid; BORDER-RIGHT: black 1pt solid">
<div style="MARGIN-TOP: 0in; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; MARGIN-BOTTOM: 0pt; FONT-SIZE: 12pt">
<span style="FONT-SIZE: 10pt">
<font face="Arial">4th data.</font>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
和输出应该是:
的Output.xml
<div xmlns="http://www.w3.org/1999/xhtml">
<span>
<table tabIndex="-1" class="MsoNormalTable msoUcTable" style="BORDER-TOP-STYLE: none; WORD-WRAP: break-word; WIDTH: 453.75pt; BORDER-COLLAPSE: collapse; TABLE-LAYOUT: fixed; BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" borderColor="#000000" cellPadding="0" width="606" border="1">
<colgroup>
<col style="WIDTH: 163px"/>
<col style="WIDTH: 442px"/>
</colgroup>
<tbody>
<tr>
<td>
<font size="2" face="Arial">
<div>
<font size="2" face="Arial">
<strong>1st data </strong>
</font>
</div>
</font>
</td>
<td>
<font size="2" face="Arial">
<div>
<font size="2" face="Arial">
<strong>2nd data </strong>
</font>
</div>
</font>
</td>
</tr>
<tr>
<td>
<font size="2" face="Arial">
<div>
<font size="2" face="Arial">
<strong>3rd data</strong>
</font>
</div>
</font>
</td>
<td>
<font size="2" face="Arial">
<div>
<font size="2" face="Arial">4th data </font>
</div>
</font>
</td>
</tr>
</tbody>
</table>
</span>
</div>
我使用XSL,现在需要从DIV删除样式属性,李,范围和其他标签:<xsl:template match=" div | li | span | th | col | td "> <xsl:element name="{local-name()}" namespace="http://www.w3.org/1999/xhtml"> <xsl:copy-of select="@*" /> <xsl:apply-templates select="@*|node()"/> </xsl:element> </xsl:template>
在此先感谢。 塔姆
答
要删除一些节点开始与恒等变换模板
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
然后添加一个空模板要去除的节点:
<xsl:template xmlns:xhtml="http://www.w3.org/1999/xhtml"
match="xhtml:div/@style |
xhtml:li/@style |
xhtml:td/@style |
xhtml:span/@style"/>
+0
非常感谢Martin ...它的工作... –
TD和div标签是这样的:
“*我需要XSL进行这种转换。”这不是问题。 –
嗨迈克尔..我想使用但没有得到所需的结果: \t \t \t \t \t的 \t \t \t的 \t \t xsl:element> \t xsl:template> –