2011-10-10 114 views
0

我在Tomcat 6.0.33應用程序服務器上使用Java 6。我得到了必須呈現爲表單元素的XML。我收到的XML看起來像將XML屬性轉換爲有效的HTML屬性值?

<pquotec type='input' label='Price Quote Currency' nwidth='200' vlength='10'> 
    XYZ 
</pquotec> 

以下是所需的輸出。

<label for="#valid_id_goes_here">Price Quote Currency</label> 
<input type="text" size="10" style="width:200px;" value="XYZ" name="#valid_name_goes_here#" id="#valid_id_goes_here#" /> 

我的問題是,什麼是轉換存儲在XML元素的標籤屬性的東西的價值,我可以代替「#valid_name_goes_here#」上面的策略?這個策略最好能讓我再次翻譯回來。請注意,出現在「」中的內容可能不一定適用於id和name的值。

感謝您的幫助, - 戴夫

+0

XSLT可能會這樣做。這是你的選擇嗎? –

回答

1

input元素的name屬性被定義爲類型CDATA,這基本上意味着「任何字符數據」,所以我認爲應該不是真的有問題。

如果確實遇到有效性問題,可以將任何「尷尬」(或簡單所有)字符轉換爲其編碼形式。例如。 é會變成&#233 ;.

+0

+1用於檢查html的DTD – Zasz

+0

是的,但是如果標籤是「Price&Currency」,則表達式id =「Price&Currency」不會飛。也轉換爲ID =「價格&貨幣」可能不會飛。我不在乎id =「」表達式是什麼,但我需要它是有效的,我需要從標籤表達式中導出它(然後再返回)。這有意義嗎? – Dave

+0

這個問題完全有意義。你的第一篇文章提到了「#valid_name_goes_here#」,所以我專注於name屬性(「#valid_id_goes_here#」被滾動到右邊;-)。現在我看到id屬性仍然是一個問題。由於id屬性的類型是ID,它不能比A-Za-z和數字多得多,所以你需要推出你自己的編碼。一種簡單的方法是用十六進制的Unicode代碼來替換每個字符。該ID也必須以一封信開頭。因此,「XYZ」將變成「id00580059005A」。這是毫不含糊的,也支持往返。 – Dabbler

0

使用XSLT - 繼承人是將XML轉換爲HTML,但它是微不足道的XML轉換爲XML,以及一個例子。

在java Xalan可以做XSLT,而this thread也可以幫到你。

如果你想要做的XML解析和渲染使用JSP參考this thread XML語法分析器的列表

編輯目標HTML:

嗯,你可以寫沒有問題XML片段,並簡單詢問如何將任何字符串轉換爲有效的HTML標識,然後再返回。使用 attributesHTML來存儲原始傳入的字符串。然後使用正則表達式從傳入字符串中提取有效字符,用下劃線替換所有無效字符,並將其用作ID。您可能會得到重複ID的可能性很小。在這種情況下,您可以隨時返回並使XML以沒有重複的方式出現。

這樣,您就可以拿回原始字符串,並有有效身份證

+0

嗨,其實我的問題是尋求一種算法來將標籤(如「Price Quote Currency」)轉換爲HTML「id」屬性的有效值。顯然,「價格報價貨幣」本身不起作用,因爲空格在ID字段中無效。你明白我在問什麼嗎? – Dave

+0

編輯答案 – Zasz

相關問題