attributeGroup должна использоваться
какой-то элемент в схеме.
Нет смысла просто иметь
attributeGroup стоит один в
схема.
Ну, это зависит от того, имеет ли это смысл или нет. В XML атрибуты похожи на «дополнительную информацию, прикрепленную к элементу». Таким образом, в документе экземпляра атрибут не может существовать без элемента, который его «размещает». Чтобы иметь атрибут в экземпляре документа, необходимо, чтобы 1) был элемент, имеющий этот атрибут 2) этот атрибут как-то определен или указан в схеме. Если ни один элемент в схеме не определен (разрешен) для использования определенного атрибута, то этот атрибут не может появиться в документе экземпляра.
Опять же, определение атрибутов, которые не используются, разрешено, это не ошибка. В некоторых случаях это может быть целесообразно, например, чтобы упростить принятие функций, запланированных на будущее, или разрешить импорт или включение схемы в другую схему, которая будет использовать эти атрибуты.
Атрибут в attributeGroup
может произойти только один раз в течение действительного
XML-документ. например:
<?xml version="1.0"?> <element1
attrib1="first second third"
attrib1="first second third"/>
недопустимо, потому что есть
дубликат 'attrib1', верно?
Ваш пример кода понятен: это не разрешено в XML. Как указано в рекомендации XML : «Имя атрибута НЕ ДОЛЖНО появляться в одном и том же начальном теге или теге пустого элемента». Опять же, утверждение, которое вы написали выше своего примера кода, не совсем верно. Возможно, что один и тот же атрибут может появляться несколько раз в допустимом XML-документе. Это просто должно появиться на разных элементах. Дублирование атрибутов на одном элементе не допускается. Однако вы можете дублировать элементы, чтобы все они имели одинаковые атрибуты.
Не допускается:
<element1 attrib1="first second third" attrib1="first second third"/>
Разрешено:
<element1 attrib1="first second third"/>
<element1 attrib1="first second third"/>
Как угловой случай, повторяющиеся имена атрибутов применяются к расширенным именам атрибутов.
<element ns1:attrib="value" ns2:attrib="value"/>
не допускается, если оба префикса ns1
и ns2
разрешаются в одном и том же URI пространства имен.