成功配置Visual Studio(2017 CE)架构缓存(catalog.xml,将名称空间解析为xsd后。.
.. Xml文档中额外存在xsi:schemaLocation标记将阻止使用缓存。看起来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>
All works well.. the schema is picked up from cat2.xsd
But if the xml contains an explicit schemaLocation tag then the xsd is no longer applied.
现在,它在与test.xml相同的文件夹中找不到test.xsd之后就放弃了(不再生成错误,不应用模式)
对此是否有任何修复或解决方法?我有一个大型项目,在许多文件夹中都有许多xml文件,并且不能删除schemaLocation标记,因为在问题域中已指定了该标记。
TIA, 邓肯