Замена старых XSD с новым
-
12-12-2019 - |
Вопрос
Мне было поручено заменить XSD для определенного решения.Однако я продолжаю получать «элемент не поддерживаться в этом контексте».
Вот оригинальный XSD:
public const string Xsd = @"
<xs:schema attributeFormDefault='unqualified' elementFormDefault='qualified' xmlns:xs='http://www.w3.org/2001/XMLSchema'>
<xs:element name='DataRow'>
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs='unbounded' name='Data'>
<xs:complexType>
<xs:attribute name='Site' type='xs:string' use='required' />
<xs:attribute name='Month_Num' type='xs:unsignedShort' use='required' />
<xs:attribute name='Numerator' type='xs:unsignedByte' use='required' />
<xs:attribute name='Data_Indicator' type='xs:string' use='required' />
<xs:attribute name='Budgeted' type='xs:unsignedByte' use='required' />
<xs:attribute name='Executive_Comments' type='xs:string' use='required' />
<xs:attribute name='Fleet_Executive_Comments' type='xs:string' use='required' />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>";
.
Вот то, что я должен заменить его:
<xs:schema attributeFormDefault='unqualified' elementFormDefault='qualified' xmlns:xs='http://www.w3.org/2001/XMLSchema'>
<MonthlyValues>
<MonthlyValue IndicatorName='name' LocationName='name' GroupingName='name' Year='MonthNum.Value.Year' Month='MonthNum.Value.Month' Numerator='Numerator' Budget='Budget'>
</MonthlyValue>
</MonthlyValues>
</xs:schema>
.
Схема была сделана кем-то другим, и я должен был просто иметь возможность заменить его.К сожалению, это не работает так, и я очень мало знаю об этом.
Должен ли я изменить
<MonthlyValues>
.
к
<xs:element name='MonthlyValues> and keep the
<xs:sequence>
<xs:element maxOccurs='unbounded' name='MonthlyValues'>
<xs:complexType>
.
и добавьте
<MonthlyValue IndicatorName='name' LocationName='name' GroupingName='name' Year='MonthNum.Value.Year' Month='MonthNum.Value.Month' Numerator='Numerator' Budget='Budget'>
</MonthlyValue>
.
позже?На самом деле, я попробовал это, и это не сработало, но есть что-то похожее, что я должен сделать?
Решение
xsd - это что-то другое ... Вы, кажется, нового для XSD, поэтому, возможно, самый быстрый способ начать, это создать XSD из вашего образца XML.Настроить генерируемый для соответствия XMLS.Используйте XSD ниже в качестве отправной точки.
<?xml version="1.0" encoding="utf-8"?>
<!--XML Schema generated by QTAssistant/XML Schema Refactoring (XSR) Module (http://www.paschidev.com)-->
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="MonthlyValues">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="MonthlyValue">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="IndicatorName" type="xsd:string" use="required" />
<xsd:attribute name="LocationName" type="xsd:string" use="required" />
<xsd:attribute name="GroupingName" type="xsd:string" use="required" />
<xsd:attribute name="Year" type="xsd:string" use="required" />
<xsd:attribute name="Month" type="xsd:string" use="required" />
<xsd:attribute name="Numerator" type="xsd:string" use="required" />
<xsd:attribute name="Budget" type="xsd:string" use="required" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
.
Вы должны полагаться на редактор, чтобы помочь вам через обучение ... Eclipse, NetBeans и т. Д. Поставляются с приличными редакторами и бесплатно.