Как правильно использовать тип Guid в файле XSD?



У меня есть .xsd-файл, который я использую для генерации кода с помощью xsd.exe-инструмент из Visual Studio.
Некоторые члены класса-это GUID и xsd.exe инструмент выдает 2 предупреждения:



Пространство имен ' http://microsoft.com/wsdl/types/' не доступен для ссылки в этой схеме.
Тип 'http://microsoft.com/wsdl/types/:guid ' не объявляется.



Тип Guid распознается, поскольку созданный файл C# является допустимым и работает.
Любой знает, как избавиться от них. предупреждения?



Каков правильный синтаксис для проверки XSD и создания членов класса как системы.Идентификатор GUID?

822   3  

3 ответов:

Спасибо вам всем, Я нашел, как удалить предупреждения.

Как сказал sysrqb, пространство имен wsdl либо было удалено, либо никогда не существовало. Похоже, что xsd.средство exe знает определение Guid внутренне, но оно не может проверить схему xsd.

Как указывал boj, единственный способ проверить схему с GUID в ней-это (повторно)определить этот тип в схеме. Фокус здесь в том, чтобы добавить тип Guid к тому же самому " http://microsoft.com/wsdl/types " пространство имен. Таким образом, xsd.exe сделает правильную ассоциацию между http://microsoft.com/wsdl/types:Guid и система.Guid

Я создал новый xsd-файл для типа guid:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://microsoft.com/wsdl/types/" >
    <xs:simpleType name="guid">
        <xs:annotation>
            <xs:documentation xml:lang="en">
                The representation of a GUID, generally the id of an element.
            </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:pattern value="\{[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\}"/>
        </xs:restriction>
    </xs:simpleType>
</xs:schema>

Затем я запускаю xsd.exe с оба мой исходный файл xsd и этот новый xsd-файл:

xsd.exe myschema.xsd guid.xsd /c

Цитата из здесь :

   XmlSchema guidSchema = new XmlSchema();
   guidSchema.TargetNamespace = "http://microsoft.com/wsdl/types/";

   XmlSchemaSimpleTypeRestriction guidRestriction = new XmlSchemaSimpleTypeRestriction();
   guidRestriction.BaseTypeName = new XmlQualifiedName("string", XmlSchema.Namespace);

   XmlSchemaPatternFacet guidPattern = new XmlSchemaPatternFacet();
   guidPattern.Value = @"[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}";
   guidRestriction.Facets.Add(guidPattern);

   XmlSchemaSimpleType guidType = new XmlSchemaSimpleType();
   guidType.Name = "guid";
   guidType.Content = guidRestriction;
   guidSchema.Items.Add(guidType);

   schemaSet.Add(guidSchema);

   XmlSchema speakerSchema = new XmlSchema();
   speakerSchema.TargetNamespace = "http://www.microsoft.com/events/teched2005/";

   // ...

   XmlSchemaElement idElement = new XmlSchemaElement();
   idElement.Name = "ID";

   // Here's where the magic happens...

   idElement.SchemaTypeName = new XmlQualifiedName("guid", "http://microsoft.com/wsdl/types/");

Похоже, что страница расширения пространства имен wsdl была удалена, поэтому она не может найти нужную информацию о типе.

Comments

    Ничего не найдено.