2012-02-06 155 views
0

元素我有下面的形式的XML(但更大..)XSLT:所有元素的DIV class屬性=原始元素名稱

<entry> 
    <lemma>coaster</lemma> 
    <sense> 
     <trans>Untersetzer</trans> 
    </sense> 
</entry> 

我想通過XSL變換得到什麼是這樣的:

<div class="entry"> 
    <div class="lemma>coaster</div> 
    <div class="sense"> 
     <div class="trans">Untersetzer</div> 
    </div> 
</div> 

沒有那麼複雜:轉換所有元素分度,類屬性=原始的元素名稱元素。 任何人都可以給我一個提示如何一個合適的XSL應該看起來像?

謝謝!

回答

3

你可以做到這一點(XSLT 1.0):

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    version="1.0"> 
    <xsl:template match="*"> 
     <div class="{local-name()}"> 
      <xsl:apply-templates/> 
     </div> 
    </xsl:template> 
</xsl:stylesheet> 

注意,樣式跳過它遇到的屬性。評論

如果你想保留的屬性後

編輯,你只需要跳過任何class屬性(因爲你創建一個新的)。例如像這樣:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    version="1.0"> 
    <xsl:template match="*"> 
     <div class="{local-name()}"> 
      <xsl:apply-templates select="node()|@*"/> 
     </div> 
    </xsl:template> 
    <xsl:template match="@*"> 
     <xsl:if test="name() != 'class'"> 
      <xsl:copy-of select="."/>    
     </xsl:if> 
    </xsl:template> 
</xsl:stylesheet> 
+1

我已經更新了答案以包含原始屬性。 – 2012-02-06 16:09:31

+0

太棒了!非常感謝! – shcnix 2012-02-06 16:11:25

+0

如果你想輸出類屬性像'attr-class'一樣喜歡什麼呢?你還可以解釋一下嗎? – Maarten 2013-04-14 10:52:13

相關問題