как парсер узнает, куда идти, чтобы определить,
schemaLocation фактически является атрибутом, определенным в
"http://www.w3.org/2001/XMLSchema-instance" пространство имен?
Атрибут записывается с использованием имени xsi:schemaLocation
, и есть объявление пространства имен, которое связывает префикс xsi
с URI http://www.w3.org/2001/XMLSchema-instance
, поэтому анализатор XML знает, что расширенное имя атрибута (в Clark запись) {http://www.w3.org/2001/XMLSchema-instance}schemaLocation
. Это не требует знания схемы или какой-либо ссылки на внешний ресурс.
Знание разрешенного содержимого атрибутов в этом пространстве имен, а также того, где эти атрибуты могут появляться и что они означают, встроено в каждый процессор схемы.
Найдя атрибут с расширенным именем {http://www.w3.org/2001/XMLSchema-instance}schemaLocation
, средство проверки схемы, следовательно, знает, что его содержимое должно быть последовательностью пар URI пространства имен / местоположения. Это то, что валидаторы схемы просто знают, им не нужно обращаться к схеме, чтобы это выяснить. Поэтому он знает, что схема для пространства имен www.example.org
может быть найдена в http://example.org/schemas/schema1.xsd
, и он может пойти и извлечь схему из этого местоположения.