Xmln: tns и targetNamespace - программирование
Подтвердить что ты не робот

Xmln: tns и targetNamespace

Я вижу некоторые документы схемы XSD, которые объявляют как атрибут targetNamespace, так и xmlns:tns в своем верхнем элементе schema. Например. следующий из здесь. Они также имеют одинаковое строковое значение. Я понимаю роль targetNamespace, но что делает xmlns:tns поверх этого?

<?xml version="1.0" encoding="UTF-8"?>
<schema
    xmlns="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://www.example.org/Product"
    xmlns:tns="http://www.example.org/Product"
    elementFormDefault="qualified">
...
4b9b3361

Ответ 1

Он позволяет ссылаться на пространство имен позже в схеме. Например, если вы объявляете именованный тип, а затем хотите также объявить элемент этого типа

<complexType name="someType">
  <!-- ... -->
</complexType>

<element name="someElement" type="tns:someType" />

Просто сказать, что type="someType" не будет работать, потому что это будет ссылаться на (несуществующий) someType в пространстве имен http://www.w3.org/2001/XMLSchema (xmlns="..." файла схемы), а не на то, что находится в http://www.example.org/Product namespace.