XSD - один из 2 атрибутов требуется?

Добро пожаловать в Переполнение стека. (Я говорю об этом, потому что думаю, что вы используете его впервые, так как вы включили в описание вопроса весь код, который у вас был. В будущих вопросах старайтесь сосредоточиться только на коде, в котором, по вашему мнению, лежит проблема. В любом случае, я надеюсь, вам понравится наше сообщество).

Теперь давайте сосредоточимся здесь:

public String toString() {
    Itime totalTime = new Itime(minutes, seconds);
    String toString=this.minutes +" minutes and "+this.seconds+" seconds";
    return toString;
}

Прежде всего, вам не нужно создавать другой экземпляр класса Itime, потому что у вас уже есть доступ к переменным внутри toString() метод. Кроме того, этот метод не сломан; все работает нормально.

Теперь проверьте конструктор:

public Itime(int minutes, double seconds) {
    assert(minutes >= 0 && seconds >= 0 && seconds < 60);
}

Вы никогда не назначаете minutes или seconds экземпляру класса ITime. Вот почему, когда вы пытаетесь распечатать любой данный экземпляр (я думаю, через консоль), вы всегда получите в результате значения по умолчанию (нули).

Конструктор должен выглядеть примерно так:

public Itime(int minutes, double seconds) {
    assert(minutes >= 0 && seconds >= 0 && seconds < 60);
    this.minutes = minutes;
    this.seconds = seconds;
}

Надеюсь, это поможет!

57
задан Jens 3 April 2018 в 03:59
поделиться

2 ответа

Нет, я не думаю, что вы можете сделать это с атрибутами. Вы можете заключить два в - но для атрибутов, я боюсь, нет эквивалентной конструкции.

42
ответ дан 24 November 2019 в 19:43
поделиться

Марк совершенно прав ... Вы не можете иметь дочерние элементы xs: attribute внутри родительского элемента xs: choice в XSD

Логика, по-видимому, заключается в том, что если два экземпляра элемента имеют взаимоисключающий набор атрибутов, то они являются логически двумя различными элементами.

Обходной путь для этого был представлен Джени Теннисон здесь .

9
ответ дан 24 November 2019 в 19:43
поделиться
Другие вопросы по тегам:

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