2014-10-09 40 views
0

這是我想要轉換的xml。我想我的xslt將我的xml轉換爲一個保持xml結構的html?

<topic> 
    <body> 
    <section> 
     <p>---</p> 
     <p>-----</p> 
     <ul> 
      <li>---</li> 
      <li>----</li> 
     </ul> 
     <p>---</p> 
    </section> 
<metaData> 
    | 
    | 
    | 
</metaData> 
    </body> 
</topic> 

我想這將輸出我這個網站就像

<html> 
    <body> 
     <div> 
      <p>abcd...</p> 
      <p>abcdefg.......</p> 
      <ul> 
       <li/> 
       <li/> 
       <li/> 
      </ul> 
      <p>..</p> 
     </div> 
    </body> 
</html> 

可以相同的結構保持了XSLT?

回答

1

保留結構,但更名的一些元素,如果你與身份轉換模板開始你的代碼

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

,然後添加模板要變換例如元素很容易

<xsl:template match="topic"> 
    <html> 
    <xsl:apply-templates/> 
    </html> 
</xsl:template> 
+0

嗨@馬丁Honnen .Sorry的回覆這麼晚了。我想這件事它給了我與結構的結果保持正常,但與像我得到XML的3倍作爲輸出,並與元數據節點一些垃圾值在裏面。 注意: - 這個xsl文件正在藉助從另一個文件中調用。 謝謝。任何幫助,這是高度讚賞。 – 2014-10-17 08:08:01

+0

如果您不希望'metaData'元素產生任何輸出,則添加''。整個方法並不是要和'call-template'一起使用,而是圍繞使用模板匹配的推式處理和通常足夠的'apply-templates'來實現。我不明白爲什麼你認爲你需要'call-template',我們需要看你的代碼告訴更多。所以編輯你的問題或發佈一個新的,提供的細節。 – 2014-10-17 08:26:50