Кэш схемы Visual Studio не используется, если указано xsi: schemaLocation - PullRequest
0 голосов
/ 01 марта 2019

После успешной настройки кэша схемы Visual Studio (2017 CE) (catalog.xml) для разрешения пространства имен в xsd ..

.. дополнительное присутствие тега xsi: schemaLocation в документе Xml предотвратитиспользование кэша. Похоже, что schemaLocation имеет приоритет над кэшем схемы, но если / когда xsd не найден локально, то разрешение просто прерывается и кэш даже не используется.

введите описание изображения здесь

В catalog.xml

<SchemaCatalog xmlns="http://schemas.microsoft.com/xsd/catalog">
  <Catalog href="file://d:/work/test/schemas/cat2.xml"/>

cat2.xml

<?xml version="1.0" encoding="utf-8"?>
<SchemaCatalog xmlns="http://schemas.microsoft.com/xsd/catalog">
  <Schema href="file:///D:/work/test/test.xsd" targetNamespace="http://test.org/schema/r1.0"     />
</SchemaCatalog>

test.xsd

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://test.org/schema/r1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="test">
    <xs:complexType>
      <xs:sequence>
        <xs:choice maxOccurs="unbounded">
          <xs:element name="a" type="xs:string" />
          <xs:element name="b">
            <xs:complexType>
              <xs:simpleContent>
                <xs:extension base="xs:string">
                  <xs:attribute name="myattr" type="xs:unsignedByte" use="required" />
                </xs:extension>
              </xs:simpleContent>
            </xs:complexType>
          </xs:element>
          <xs:element name="d" />
          <xs:element name="c" />
        </xs:choice>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Все работает хорошо ... схема взята из cat2.xsd

Но если xml содержит явный тег schemaLocation, xsd больше не применяется.

Теперь он просто сдается после того, как не может найти test.xsd в той же папке, что и test.xml (больше не генерирует ошибку, схема не применяется)

Есть ли исправления или обходные путидля этого? у меня большой проект с человекомy XML-файлы во многих папках и удаление тега schemaLocation не вариант, так как это указано в проблемной области.

TIA, Duncan

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...