2013-06-19 47 views
0

我試圖將XML文檔(實際上,我需要轉換ANY xml)轉換爲將元素值存儲爲元素值的元素列表,原始節點作爲一個屬性叫做「名」之類的名稱:從任何XML到名稱值xml元素列表的XSLT轉換

<rootNode> 
    <element name="first">value1</element> 
    <element name="try">valueX</element> 
<rootNode> 

是原文:

<a> 
    <first>value1</first> 
    <try>valueX</try> 
</a> 
+0

1)哦,上帝,爲什麼?嚴重的是,這聽起來像一個非常糟糕的主意。 2)做起來不是很難,你一定是嘗試過自己。你有嗎? – Tomalak

+0

我有,但無法讓它工作。至於第一部分,爲什麼這是一個很好的問題,我試圖說服開發團隊的其他成員在他們來到時使用XML,但他們想要以表格形式顯示它,在這個特定格式的小jspx中,因爲我不是架構師,所以我只需要這樣做...... – Erchamatur

+0

如果您想直觀地表示XML,先將其更改爲* other * XML,然後將* that XML更改爲HTML聲音,例如在腳丫子。特別是因爲您不改變文檔的結構,而只是改變元素的名稱。這非常多餘。順便說一句,你的示例沒有定義如何處理嵌套。據我所知,輸出將以''開頭,而不是以''開頭。 – Tomalak

回答

0

我同意這是一個嚴重的壞主意。它與大多數人想要的完全相反......將良好的XML轉化爲糟糕的形式。再次,如果沒有任何層次結構試圖複製,這很簡單。你想這樣的結構:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
     version="1.0"> 
     <xsl:output indent="yes"/> 
     <xsl:template match="a"> 
      <rootNode> 
       <xsl:apply-templates/> 
      </rootNode> 
     </xsl:template> 
     <xsl:template match="*"> 
      <xsl:variable name="name" select="name()"/> 
      <element> 
       <xsl:attribute name="name"> 
        <xsl:value-of select="$name"/> 
       </xsl:attribute> 
       <xsl:value-of select="."/> 
      </element> 
     </xsl:template> 
     <xsl:template match="text()"/> 
    </xsl:stylesheet> 

這將產生:

<rootNode> 
    <element name="first">value1</element> 
    <element name="try">valueX</element> 
</rootNode>