2012-11-01 58 views
5

我XSL轉換文件的HTML這樣的:使用XSL:元素標籤的HTML轉換

<xsl:template match="/"> 
    <html> 
     <head> 
     <title>Title</title> 
     </head> 
     <body> 
     Blah-blah 
     </body> 
    </html> 
    </xsl:template> 

是不是正確的方式?或者,也許,使用xsl:element更好?我沒有看到這種變體的例子:

<xsl:template match="/"> 
    <xsl:element name="html"> 
     <xsl:element name="head"> 
     <xsl:element name="title"> 
      Title 
     </xsl:element> 
     </xsl:element> 
     <xsl:element name="body"> 
     Blah-blah 
     </xsl:element> 
    </xsl:element> 
    </xsl:template> 

哪種變體是正確的?
此致敬禮。

回答

4

文字結果元素(即您的第一種方法)更短,更易於輸入且更易於閱讀。我建議僅在想要根據輸入數據動態計算元素名稱和/或名稱空間的情況下使用xsl:element

<xsl:template match="*"> 
    <xsl:element name="{translate(local-name(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')}"> 
    <xsl:apply-templates/> 
    </xsl:element> 
</xsl:template> 

在其他情況下,我會使用文字結果元素作爲您的第一個示例。但是就結果而言,沒有正確或錯誤,兩種變體都給出相同的結果樹。

+0

哦,我沒有想到這種情況(元素名稱計算)。謝謝,現在我更清楚了! – bsiamionau