Смешивание собственного XML с HTML5 havin eclipse для отображения подсказок кода - PullRequest
0 голосов
/ 22 декабря 2011

Я пишу свой собственный движок шаблонов в основном для веб-приложений.

На самом деле это смесь моих собственных тегов 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 жалуется, что «таблица» закрыта неправильно - я хочуЗатмение, чтобы перестать жаловаться, относиться к этому тегу как к тексту или - может быть, вы можете что-то предложить?2. Eclipse не будет показывать подсказки кода, если я нахожусь внутри любого из тегов html.(подсказка кода: атрибуты, которые могут использоваться этим тегом, такие как «класс» или «идентификатор» и т. д.)

Я понимаю, что задаю странный странный вопрос, но, возможно, здесь есть некоторые гуру XSD, которые могут направитьЯ: Eclipse должен относиться к моему файлу шаблона xml следующим образом: 1. теги с префиксом "lp" - это боги!Они имеют приоритет над чем-либо другим.Должны отображаться только ошибки из этих тегов (отсутствующие обязательные атрибуты, отсутствующие обязательные дочерние элементы и т. Д.).2. Все остальные теги (любые элементы в угловых скобках) являются тегами HTML.Eclipse должен отображать подсказку кода для них, но если что-то будет «некорректно» (как в моем примере: нет закрывающей / табличной метки) - Eclipse не должен жаловаться.

Надеюсь, это возможно.

спасибо!

Ответы [ 2 ]

0 голосов
/ 22 декабря 2011

Это всего лишь частичный ответ, но я все равно оставлю его как ответ, потому что вводить его в комментарии слишком долго.

Чтобы 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 не будет жаловаться, но в этом случае вы потеряете любое завершение Eclipse внутри секции CDATA.

Чтобы завершить работу с тегами 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> где-нибудь в документе.Может быть, другие люди могут взвесить.

0 голосов
/ 22 декабря 2011

Вы должны будете обернуть ваш HTML в CDATA блоки. Это заставит синтаксический анализатор XML рассматривать содержимое (незамеченное <table>) как простой текст, а не как битый тег.

    <lp:list_header><![CDATA[

        <table>

    ]]></lp:list_header>
...