Проблема при проверке XML с использованием XSD с помощью Eclipse / ADT - нет пункта «Проверить» в контекстном меню - PullRequest
0 голосов
/ 26 июня 2011

Я пытаюсь заставить Eclipse проверить созданный мной XML-файл по схеме, которую я тоже создал, но она не работает, у меня нет записи "Проверить" в контекстном меню.

Я использую Eclipse 3.6.2 с ADT 10.0.1 и в Справке -> О программе -> Сведения об установке, вкладка Плагины. У меня есть Eclipse XML Editors and Tools версия 1.1.103.

В соответствии с тем, что я нашел на веб-сайте Eclipse и другими вопросами по SO, я должен иметь возможность щелкнуть правой кнопкой мыши по XML-файлу и нажать «Подтвердить». Мое контекстное меню не имеет записи "Проверить", и все, что я нахожу, предполагает, что оно есть. Я вошел в Eclipse Preferences -> XML -> XML Files -> Validation и поставил галочку «Включить проверку разметки», но это ничего не изменило ..

Кроме того, изменение значения noNamespaceSchemaLocation на что-то неправильное не приводит к ошибкам при сохранении файла XML. Понятия не имею, что мне здесь не хватает

Идея состояла в том, чтобы на панели свойств в Eclipse был раскрыт раскрывающийся список для атрибута «name» элемента, отображающий допустимые значения, что, я надеюсь, произойдет, как только я смогу проверить XSD.

Похожие вопросы

eclipse: проверить xml с помощью xsd , как и я, решение не найдено, хотя ответ принят. В комментариях упоминается платформа Web Tools, которая установлена.

Проверка XML и автозаполнение в Eclipse Я сделал то, что упоминает принятый ответ

Файлы

Они, наверное, ужасны, я раньше не делал много XML.

res/xml/magicks.xml

<?xml version="1.0" encoding="utf-8"?>
<magicks xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="magicksschema.xsd">

<magick name="Haste" description="Increases the wizard's movement speed by up to double for 10 seconds.">
    <combination>
        <element name="Lightning"/>
        <element name="Arcane" />
        <element name="Fire" />
    </combination>
</magick>
</magicks>

res/xml/magicksschema.xsd:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="magicks">
<xs:complexType>
    <xs:sequence>
        <xs:element name="magick" maxOccurs="unbounded">
            <xs:complexType>
                <xs:sequence>
                    <xs:element name="combination">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="element" maxOccurs="unbounded">
                                    <xs:complexType>
                                        <xs:attribute name="name">
                                            <xs:simpleType>
                                                <xs:restriction base="xs:string">
                                                    <xs:enumeration value="Water" />
                                                    <xs:enumeration value="Life" />
                                                    <xs:enumeration value="Shield" />
                                                    <xs:enumeration value="Cold" />
                                                    <xs:enumeration value="Lightning" />
                                                    <xs:enumeration value="Arcane" />
                                                    <xs:enumeration value="Earth" />
                                                    <xs:enumeration value="Fire" />
                                                </xs:restriction>
                                            </xs:simpleType>
                                        </xs:attribute>
                                    </xs:complexType>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
                <xs:attribute name="name" type="xs:string" />
                <xs:attribute name="description" type="xs:string" />
            </xs:complexType>
        </xs:element>
    </xs:sequence>
</xs:complexType>

Редактировать

  • Обновлена ​​схема до версии @Per Normann

1 Ответ

1 голос
/ 26 июня 2011

Ваша схема неверна, особенно w.r.t. как вы объявляете атрибуты.

1) атрибуты объявляются непосредственно в типе, а не как часть последовательности.

2) вы определили элемент как ограниченный перечислением, а не атрибут "name".

Эта схема соответствует вашему XML (и проверка затмения работает нормально).

<xs:element name="magicks">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="magick" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="combination">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="element" maxOccurs="unbounded">
                                        <xs:complexType>
                                            <xs:attribute name="name">
                                                <xs:simpleType>
                                                    <xs:restriction base="xs:string">
                                                        <xs:enumeration value="Water" />
                                                        <xs:enumeration value="Life" />
                                                        <xs:enumeration value="Shield" />
                                                        <xs:enumeration value="Cold" />
                                                        <xs:enumeration value="Lightning" />
                                                        <xs:enumeration value="Arcane" />
                                                        <xs:enumeration value="Earth" />
                                                        <xs:enumeration value="Fire" />
                                                    </xs:restriction>
                                                </xs:simpleType>
                                            </xs:attribute>
                                        </xs:complexType>
                                    </xs:element>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                    <xs:attribute name="name" type="xs:string" />
                    <xs:attribute name="description" type="xs:string" />
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:element>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...