2011-12-22 48 views
0

我正在編寫自己的模板引擎,主要針對Web應用程序。將自己的XML與HTML5混合使用haclipse eclipse顯示代碼提示

它實際上是我自己的XML標籤和HTML的混合。

下面是示例:

<lp:view xmlns:lp="http://sminit.com/view" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://sminit.com/view view.xsd "> 
    <lp:list name="my_items"> 

     <lp:list_header> 

      <table> 

     </lp:list_header> 

     <lp:list_item> 

       <tr><td>$title$</td></tr> 

     </lp:list_item> 

     <lp:list_footer> 
       </table> 
     </lp:list_footer> 

    </lp:list> 
</lp:view> 

一點解釋: 用「LP」爲前綴這些標籤屬於我的模板引擎,且這種「處理指令」它。 lp:view是一個根節點,然後有一個lp:list節點,它接收到一些數據源會產生一個列表:首先它將包含lp:list_header的內容,然後重複適當的次數lp:list_item的內容(替換$ title $由實際數據,但這裏沒有關係),那麼它將添加lp:list_footer節點的內容。正如你所看到的,出於這個原因,我的html標籤「表」分裂了我的標籤。

我在這裏遇到了兩個主要問題: 1. Eclipse抱怨「table」沒有正確關閉 - 我想讓Eclipse停止抱怨,將這個標籤視爲文本或者 - 也許你可以建議一些東西? 2.如果我在任何html標籤內,Eclipse將不會顯示任何代碼提示。 (代碼提示:這個標籤可能使用的屬性,如「class」或「id」等)

我明白我在問一個奇怪的怪胎問題,但也許有一些XSD大師可以指導我: Eclipse應該將我的xml模板文件視爲以下內容: 1.前綴爲「lp」的標記是神!他們優先於其他任何東西。只顯示來自該標籤的錯誤(缺少必需的屬性,缺少必需的子元素等)。 2.所有其他標籤(尖括號之間的任何東西)都是HTML標籤。 Eclipse應該爲它們顯示代碼提示,但是如果任何事情都「不正確」(比如在我的示例中:沒有關閉/表標籤) - Eclipse不應該抱怨。

我希望這是可能的。

謝謝!

回答

0

你將不得不把你的HTML包裝在CDATA塊。這將使XML解析器將內容(未封閉的<table>)視爲純文本,而不是破碎的標籤。

<lp:list_header><![CDATA[ 

     <table> 

    ]]></lp:list_header> 
0

這只是一個部分的答案,但我仍然會將它作爲答案,因爲它太長而無法輸入評論。

要停止Eclipse的抱怨未關閉標籤,你應該換內容的<![CDATA[..]]部分,像這樣:

<lp:view xmlns:lp="http://sminit.com/view" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://sminit.com/view view.xsd "> 
    <lp:list name="my_items"> 

    <lp:list_header> 

     <![CDATA[ <table> ]]> 

    </lp:list_header> 

    <lp:list_item> 

      <tr><td>$title$</td></tr> 

    </lp:list_item> 

    <lp:list_footer> 
      <![CDATA[ </table> ]]> 
    </lp:list_footer> 

</lp:list> 

他們將被視爲文本和Eclipse不會抱怨,但在在CDATA部分中,您將失去任何Eclipse完成。

要獲得完成的HTML標籤的工作,我想你可以嘗試添加了XHTML默認命名空間到你的根標籤,就像這樣:

<?xml version="1.0" ?> 
<lp:view xmlns="http://www.w3.org/1999/xhtml" xmlns:lp="http://sminit.com/view" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://sminit.com/view view.xsd "> 
    <lp:list name="my_items"> 

    <lp:list_header> 

     <![CDATA[ <table> ]]> 

    </lp:list_header> 

    <lp:list_item> 

      <tr><td>$title$</td></tr> 

    </lp:list_item> 

    <lp:list_footer> 
      <![CDATA[ </table> ]]> 
    </lp:list_footer> 

</lp:list> 

編輯:我認爲第二部分韓元儘管如此,因爲XHTML模式定義根元素應該是<html>。我剛剛在Eclipse中嘗試過,HTML標記的完成僅在我第一次在文檔中的某處插入<html>標記時開始工作。也許一些其他人可以稱重。