Я не мог заставить ошибку 'require' уйти, используя любой из вышеперечисленных приемов.
но я обнаружил, что проблема заключалась в том, что мои инструменты машинописи для Visual Studio, где старая версия (1.8.6.0) и последняя версия на сегодняшний день (2.0.6.0)
Вы можете скачать последняя версия инструментов:
https://www.microsoft.com/en-us/download/details.aspx?id=48593
Транг - именно такой инструмент, написанный знаменитым Джеймсом Кларком. Он может переводить между различными формами определений xml, такими как обычный и компактный синтаксис Relax NG, устаревшее DTD и XML-схема. Он также может выводить схему из одного или нескольких файлов xml.
Если вы запустите ubuntu, trang упакован в репозиторий юниверса, но эта версия кажется немного неработающей, и чистая загрузка по ссылке выше, вероятно, ваш лучший вариант. Предполагая, что trang.jar находится в текущем каталоге:
java -jar trang.jar -I xml -O xsd file1.xml file2.xml definition.xsd
должен делать то, что вы хотите.
Это код для создания схемы из одного XML: Пример кода, демонстрирующий, как использовать этот класс (предполагается, что существует член класса «XmlSchemaSet set», накапливающий результаты и уточняющий их от вызова к вызову):
var si = new XmlSchemaInference();
var reader = XmlReader.Create(new StringReader(textBox1.Text));
var en = si.InferSchema(reader, set).Schemas().GetEnumerator();
en.MoveNext();
var schema = en.Current as XmlSchema;
var stream = new MemoryStream();
if (schema != null)
{
schema.Write(stream);
set.Add(schema);
}
stream.Flush();
stream.Position = 0;
var streamReader = new StreamReader(stream);
var str = streamReader.ReadToEnd();
grid1.Model.LoadSchema(str);
reader.Close();
stream.Close();
streamReader.Close();
Если вы запустите его снова и передадите XMLSchemaInference сгенерированную схему и другой XML, он улучшит схему