Проверка XML игнорирует объявленные элементы

#xml #phpstorm #doctype #inspection

#xml #phpstorm #doctype #проверка

Вопрос:

Я столкнулся с проблемой с пользовательским XML DOCTYPE, когда ни один из элементов, похоже, не регистрируется PhpStorm.

Таким образом, все, что я получаю, — это тонна красного. Я использовал метод «ALT-ENTER -> Fetch DTD», как указано в документации, который избавил от того, что URI DOCTYPE не был разрешен… но элементы по-прежнему не считаются действительными. Есть ли что-нибудь еще, что нужно сделать?

вот фрагмент на случай, если вы захотите воспроизвести проблему:

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ONIXmessage SYSTEM http://www.editeur.org/onix/2.1/short/onix-international.dtd>
<ONIXmessage release="2.1">
     <header>
         <m174>foo</m174>
         <m182>bar</m182>
     </header>
</ONIXmessage>
 

Комментарии:

1. Вы должны указать свой системный идентификатор, а затем посмотреть на ответ @jasso.

2. похоже, что .dtd включает в себя несколько десятков файлов .ent с относительными путями, некоторые из которых были недоступны с учетом указанного URI. Я загрузил полный набор файлов .dtd, .elt и .ent и заменил URI ссылкой на локальную копию — теперь проверка работает так, как ожидалось.

Ответ №1:

Быстрая проверка показала, что ваш документ недействителен. После <header> элемента должен быть хотя бы один из этих элементов:

  • <product>
  • <mainseriesrecord>
  • <subseriesrecord>

Комментарии:

1. хотя это, безусловно, верно, оно должно выдавать ошибку проверки только для элемента <ONIXMessage>, а не для его собственных подэлементов. спасибо за усилия!