将自己的XML与HTML5 havin eclipse混合以显示代码提示

时间:2011-12-22 09:27:32

标签: html xml eclipse mixing hint

我正在编写自己的模板引擎,主要用于Web应用程序。

实际上是我自己的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 $ by actual data,但这并不重要),然后它将添加lp:list_footer节点的内容。正如您所看到的,出于这个原因,我在标签上分配了html标签“table”。

我遇到了两个主要问题: 1. Eclipse抱怨“表”没有正确关闭 - 我希望Eclipse停止抱怨,将此标记视为文本或 - 也许你可以建议一些东西? 2.如果我在任何html标签内,Eclipse将不会显示任何代码提示。 (代码提示:此标记可能使用的属性,如“class”或“id”等)

我知道我在问一个奇怪的怪物问题,但也许这里有一些XSD大师可以指导我: Eclipse应该将我的xml模板文件视为以下内容: 1.标有前缀“lp”的标签是众神!它们优先于其他任何东西。只应显示该标记的错误(缺少必需的属性,缺少必需的子元素等)。 2.所有其他标签(尖括号之间的任何内容)都是HTML标签。 Eclipse应该为它们显示代码提示,但是应该是“不正确”(就像在我的示例中:没有关闭/表标记) - Eclipse不应该抱怨。

我希望这是可能的。

谢谢!

2 个答案:

答案 0 :(得分:0)

您必须在CDATA块中包装HTML。这将使XML解析器将内容(未闭合的<table>)视为纯文本,而不是破坏的标记。

    <lp:list_header><![CDATA[

        <table>

    ]]></lp:list_header>

答案 1 :(得分: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标记的完成才开始工作。也许其他人可以权衡。