2011-08-22 101 views
1

我相信我有一個非常有趣的問題需要解決。我有一個XML是這樣的:使用xml的屬性來生成動態html表格

<elements> 
    <element name="nam1" val="John" xpos="10" ypos="10" /> 
    <element name="nam3" val="Mark" xpos="10" ypos="30" /> 
    <element name="nam4" val="Rick" xpos="50" ypos="30" /> 
    <element name="nam5" val="Jeff" xpos="10" ypos="50" /> 
    <element name="nam6" val="Dean" xpos="50" ypos="50" /> 
    <element name="nam2" val="Scott" xpos="50" ypos="10" /> 

在XML元素的位置可能不連續的。

我必須將其轉換爲HTML表格。在TRS和辨證論治的內容必須是「動態」的基礎上XPOS和XML的ypos屬性設置..輸出應該是這樣的:

<table> 
    <tr> 
     <td>John</td><td>Scott</td> 
    </tr> 
    <tr> 
     <td>Mark</td><td>Rick</td> 
    </tr> 
    <tr> 
     <td>Jeff</td><td>Dean</td> 
    </tr> 
</table> 

事情變得更加複雜,當XPOS或ypos不完全相同,但對於2個相鄰元素略有不同。 例如

<elements> 
    <element name="nam1" val="John" xpos="10" ypos="12" /> 
    <element name="nam3" val="Mark" xpos="11" ypos="30" /> 
    <element name="nam4" val="Rick" xpos="53" ypos="32" /> 
    <element name="nam5" val="Jeff" xpos="09" ypos="52" /> 
    <element name="nam6" val="Dean" xpos="51" ypos="51" /> 
    <element name="nam2" val="Scott" xpos="50" ypos="10" /> 
</elements> 

任何想法如何實現這一目標?使用xslt或Java/Javascript dom解析器?還是其他什麼?如何 ?

回答

0

我不敢試圖用XSLT來解決這個問題 - XSLT對於簡單,基本的轉換很有幫助。儘管有可能將它拉下來,但它可能會讓你在這個過程中瘋狂。

作爲解決它在所有:

  1. 使用四捨五入或類似的方法「1/2關」問題
  2. 排序的數據來解決。
  3. 創建一個表進行排序的數據應該是微不足道現在

,我希望你要問「和不排序?」 (因爲它太貴了,無論如何)。答案:您將以這種或那種方式對數據進行排序。在內存中創建一個巨大的地圖並根據座標添加元素即爲排序。這只是不明顯的。

[編輯]也許這招也將工作:而不是一個表,使用divposition: absolute和縮放的座標,直到文本不再重疊。這將模擬一個表,但它是否適用於您取決於座標是否實際上意味着某些東西(即它們不是隨機的,但其他系統使用它們來佈置數據)

+0

感謝您的快速響應..好吧,所以xslt是沒有問題的,我想。使用Java解析器,我同意我需要以某種方式對列表進行排序..但是,如何知道它是2列還是3列還是4列表? –

+0

四捨五入和排序後,將'xpos'的值添加到'Set'。集==的列數的大小。 –

0

最簡單的方法是編寫解析它並將其轉換爲所需格式的小型java代碼。 用xslt做它非常複雜。 實際上這是用xslt做它的噩夢,特別是如果你想稍後維護它並改變規則。 java代碼將很容易理解和維護,但將來會很長。

+0

好吧,所以xslt無可厚非,我想。使用Java解析器,我同意我需要以某種方式對列表進行排序..但是,如何知道它是2列還是3列還是4列表? –