2016-08-08 42 views
0

我嘗試使用apply-template將屬性web添加到元素web的所有子元素。使用apply-templates將屬性添加到所有子元素

源XML

<p></p> 
<tabel> 
<tr> 
    <td> 
    <web> 
    <p></p> 
    <p></p> 
    </web> 
    </td> 
</tr> 
<tr> 
    <td> 
    <web> 
    <p></p> 
    <ul> 
    <li></li> 
    <li></li> 
    </ul> 
    </web> 
    </td> 
</tr> 
</tabel> 

目標XML

<p></p> 
<tabel> 
<tr> 
    <td> 
    <p class="web"></p> 
    <p class="web"></p> 
    </td> 
</tr> 
<tr> 
    <td> 
    <p class="web"></p> 
    <ul class="web"> 
    <li></li> 
    <li></li> 
    </ul> 
    </td> 
</tr> 
</tabel> 

我XSL

<xsl:template match="p"> 
<p> 
    <xsl:apply-templates/> 
</p> 
</xsl:template> 
<xsl:template match="web"> 
<xsl:apply-templates/> 
</xsl:template> 
<xsl:template match="ul"> 
<ul> 
    <xsl:apply-templates/> 
</ul> 
</xsl:template> 

是否有適用的模板和屬性網頁添加到網站的所有子元素的任何可能性? 有沒有人有一個想法,如何做到這一點?

+0

您向我們展示的源文檔不是格式良好的XML。 –

回答

0

給定一個合式輸入如:

XML

<html> 
    <p></p> 
    <tabel> 
     <tr> 
     <td> 
     <web> 
      <p></p> 
      <p></p> 
     </web> 
     </td> 
     </tr> 
     <tr> 
     <td> 
     <web> 
      <p></p> 
      <ul> 
       <li></li> 
       <li></li> 
      </ul> 
     </web> 
     </td> 
     </tr> 
    </tabel> 
</html> 

以下樣式表:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="html" encoding="UTF-8"/> 
<xsl:strip-space elements="*"/> 

<!-- identity transform --> 
<xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="web"> 
    <xsl:apply-templates/> 
</xsl:template> 

<xsl:template match="web/*"> 
    <xsl:copy> 
     <xsl:attribute name="class">web</xsl:attribute> 
     <xsl:apply-templates/> 
    </xsl:copy> 
</xsl:template> 

</xsl:stylesheet> 

將返回:

<html> 
    <p></p> 
    <tabel> 
     <tr> 
     <td> 
      <p class="web"></p> 
      <p class="web"></p> 
     </td> 
     </tr> 
     <tr> 
     <td> 
      <p class="web"></p> 
      <ul class="web"> 
       <li></li> 
       <li></li> 
      </ul> 
     </td> 
     </tr> 
    </tabel> 
</html> 

注意tabel是不是一個有效的HTML元素。

+0

謝謝你的建議,它的工作絕對完美。 – Olli