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>

在此先感谢。 塔姆

+0

TD和div标签是这样的:

1st data
+1

“*我需要XSL进行这种转换。”这不是问题。 –

+0

嗨迈克尔..我想使用但没有得到所需的结果: \t \t \t \t \t的 \t \t \t的 \t \t xsl:element> \t 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 ...它的工作... –