Правила виведення простих типів

Клас XmlSchemaInference перевіряє одночасно значення елемента і атрибута. У міру виявлення значень, виводиться найбільш обмежений тип без знака. Якщо для атрибута або елемента вже був виведений тип, а нове виявлене значення не відповідає поточним виведеному типу, то виведений тип підвищується до нового типу, який можна застосувати як поточного виведеному типу, так і до нового значенням. Клас XmlSchemaInference не розглядає попередні значення при підвищенні виведеного типу.

Наприклад, розглянемо наступні фрагменти XML їх двох XML-документів.

При виявленні першого значення attr1 тип attr1 виводиться як unsignedByte на основі значення 12. Коли виявляється друге значення attr1. тип підвищується до unsignedShort на основі поточного виведеного типу unsignedByte і поточного значення 52344.

Тепер розглянемо наступний XML з двох XML-документів.

При виявленні першого значення attr2 тип attr2 виводиться як unsignedByte на основі значення 0. При виявленні другого значення attr2 тип підвищується до string на основі поточного виведеного типу unsignedByte і поточного значення true. тому що клас XmlSchemaInference не враховує попередні значення при підвищенні виведеного типу. Однак якщо обидва примірники attr2 були виявлені в одному XML-документі, а не в двох різних XML-документах, як показано вище, то attr2 виведеться як boolean.

Схожі статті