"Элемент отсутствует.." пытается создать класс с помощью <element ref = />
Используя инструмент XSD, включенный в VS 2013, я получаю следующее сообщение о попытке создать класс из xsd, который содержит <xsd:element ref=.../>
-
Предупреждение о проверке схемы: элемент ' http://www.w3.org/2000/09/xmldsig' не объявлен. Строка 14, позиция 8.
Предупреждение: схема не может быть проверена. Генерация классов может дать сбой или может привести к неверным результатам.
Ошибка: Ошибка генерации классов для схемы "тест". - Элемент " http://www.w3.org/2000/09/xmldsig" отсутствует.
Это сокращенный xsd, который демонстрирует проблему:
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema id="test"
targetNamespace="http://tempuri.org/test.xsd"
elementFormDefault="qualified"
xmlns="http://tempuri.org/test.xsd"
xmlns:mstns="http://tempuri.org/test.xsd"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sig="http://www.w3.org/2000/09/xmldsig#"
>
<xsd:import schemaLocation="xmldsig-core-schema.xsd" namespace="http://www.w3.org/2000/09/xmldsig#" />
<xsd:complexType name="test" >
<xsd:sequence >
<xsd:element ref="sig:Signature" minOccurs="0" maxOccurs="unbounded"></xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element type="test" name="top"/>
</xsd:schema>
Я уверен, что с импортом и пространствами имен все в порядке. Решарпер и VS Schema Designer не жалуются. Я подозреваю, что это то, что инструмент просто не делает.
Есть идеи, как мне поступить?
1 ответ
Оказывается, на это уже здесь ответили.
/questions/42307250/generatsiya-klassov-c-iz-xsd/42307268#42307268
Мне нужно добавить импортированный файл в список файлов параметров командной строки xsd:
xsd test.xsd xmldsig-core-schema.xsd /c