У меня есть xml, который я хочу проверить по xsd после добавления нового атрибута.
Я пытался объявить атрибут локально для какого-то элемента в xsd, но не мог понять, как это сделать.
По какой-то причине я взял уже проверенный xml и добавил новый атрибут в элемент без каких-либо изменений в xsd, и проверка прошла успешно.
Атрибут (межбуквенный интервал), прошедший проверку только того, имеет префикс пространства имен (пространство имен 'dptt', которое определено в xsd и появляется в xml):
Пример строки, прошедшей проверку:
<tt:style dptt:letter-spacing="4px" style="s01" tts:lineHeight="120px" xml:id="1"/>
Пример строки, которая не прошла проверку:
<tt:style letter-spacing="4px" style="s01" tts:lineHeight="120px" xml:id="1"/>
Это часть xsd, которая определяет атрибут стиля:
<xs:element name="style">
<xs:complexType>
<xs:sequence>
<xs:element ref="tt:metadata" minOccurs="0"/>
</xs:sequence>
<xs:attribute ref="xml:id" use="required">
</xs:attribute>
<xs:attribute name="style" type="xs:IDREFS">
</xs:attribute>
<xs:attribute ref="tts:direction" >
</xs:attribute>
<xs:attribute ref="tts:fontFamily" >
</xs:attribute>
<xs:attribute ref="tts:fontSize" >
</xs:attribute>
<xs:attribute ref="tts:lineHeight" >
</xs:attribute>
<xs:attribute ref="tts:textAlign" >
</xs:attribute>
<xs:attribute ref="tts:color" >
</xs:attribute>
<xs:attribute ref="tts:backgroundColor" >
</xs:attribute>
<xs:attribute ref="tts:fontStyle" >
</xs:attribute>
<xs:attribute ref="tts:fontWeight" >
</xs:attribute>
<xs:attribute ref="tts:textDecoration" >
</xs:attribute>
<xs:attribute ref="tts:unicodeBidi" >
</xs:attribute>
<xs:attribute ref="tts:padding">
</xs:attribute>
<xs:attribute ref="ebutts:multiRowAlign"/>
</xs:complexType>
</xs:element>
Я ожидаю, что необъявленный атрибут не пройдет проверку.
Мне также интересно, почему добавление пространства имен имеет решающее значение для проверки.