Невозможно использовать XSD для экспорта данных в формате XML, поскольку карты не подлежат экспорту.
Отказ от ответственности: я использую XML только второй раз, и я полный новичок. Заранее извиняюсь за дамп текста.
Мне было поручено использовать схему XML для экспорта и загрузки данных из таблиц XLS. Руководящая группа предоставила руководство по формату для каждой строки и точную формулировку, которую следует использовать.
Корневым элементом является IDDEEvent, и не существует обязательных дочерних элементов, поэтому позиции строк могут быть заполнены, а остальные могут оставаться пустыми.
Некоторые элементы ComplexType имеют дочерний элемент в последовательности. В некоторых случаях используются перечисления, хотя они привязаны к числу, которому дается объяснение через элемент xs:documentation.
В одном случае есть элемент ComplexType, который содержит несколько дочерних элементов, которые являются частью элемента xs:choice (не совсем понимаю, как это работает).
Когда я перехожу в Excel -> Разработчик -> Источник, загружаю и сопоставляю схему и заполняю ее основной информацией, я получаю сообщение об ошибке, в котором говорится, что данные XML не могут быть сохранены или экспортированы из-за карт.
Сопоставление, кажется, работает нормально, хотя я заметил, что единственный элемент, указанный без типа , - это элемент под названием MS4Discharge , который, возможно, именно так и называется.
Я просмотрел документацию на странице поддержки, но мне ничего не показалось интересным. Данные, которые я использовал в качестве теста для экспорта, исторически считались правильным форматом. Я даже попробовал загрузить с минимальным количеством деталей, но ошибка все равно выскакивает.
Действительно озадачен этим. Опять же, я совершенно новичок в этом и не уверен в том, что делаю, поэтому буду признателен за любую помощь в том, как действовать, чтобы я мог использовать эту схему, чтобы начать экспортировать дату.
Заранее спасибо!
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="IDDEEvents">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="IDDEEvent" type="IDDEEvent" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="IDDEEvent">
<xs:annotation>
<xs:documentation>One particular IDDE event</xs:documentation>
</xs:annotation>
<xs:all>
<xs:element maxOccurs="1" minOccurs="0" name="Jurisdiction">
<xs:annotation>
<xs:documentation>Permit Number</xs:documentation>
<xs:documentation>If omitted, all IDDEs will be imported to a permit selected through the UI</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="9"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element maxOccurs="1" minOccurs="0" name="IncidentId">
<xs:annotation>
<xs:documentation>Incident ID</xs:documentation>
<xs:documentation>If omitted, WQWebIDDE can't identify IDDEs to update and will simply insert all IDDEs as fresh records</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="30"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element maxOccurs="1" minOccurs="0" name="DateReported" type="SqlDate">
<xs:annotation>
<xs:documentation>Date incident reported</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="1" minOccurs="0" name="DateResponseBegin" type="SqlDate">
<xs:annotation>
<xs:documentation>Date incident response began</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="1" minOccurs="0" name="DateResponseEnd" type="SqlDate">
<xs:annotation>
<xs:documentation>Date incident response ended</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="1" minOccurs="0" name="Discovereds" type="Discovered">
<xs:annotation>
<xs:documentation>How was the incident discovered?</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="1" minOccurs="0" name="MS4Discharge" type="Discharge">
<xs:annotation>
<xs:documentation>Did the incident discharge to the MS4?</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="1" minOccurs="0" name="Location" type="Location">
<xs:annotation>
<xs:documentation>Location of the incident</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="1" minOccurs="0" name="Pollutants" type="Pollutant">
<xs:annotation>
<xs:documentation>Pollutants identified</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="1" minOccurs="0" name="Sources" type="Source">
<xs:annotation>
<xs:documentation>Source or cause</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="1" minOccurs="0" name="Traces" type="Trace">
<xs:annotation>
<xs:documentation>Source Tracing</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="1" minOccurs="0" name="Corrections" type="Correction">
<xs:annotation>
<xs:documentation>Correction or elimination methods</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="1" minOccurs="0" name="Notes" type="xs:string">
<xs:annotation>
<xs:documentation>Field notes, explanations, and/or other comments</xs:documentation>
</xs:annotation>
</xs:element>
</xs:all>
</xs:complexType>
<xs:simpleType name="SqlDate">
<xs:annotation>
<xs:documentation>xs:date limited to SQL Server's operating range</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:date">
<xs:minInclusive value="1753-01-01" />
<xs:maxInclusive value="9999-12-31" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="Discharge">
<xs:choice>
<xs:element name="YesNotifiedECY" type="YesNotifiedECYDischarge"/>
<xs:element name="YesNotifiedDOH" type="YesNotifiedDOHDischarge"/>
<xs:element name="YesNoNotice" type="YesNoNoticeDischarge"/>
<xs:element name="YesAllowable" type="YesAllowableDischarge"/>
<xs:element name="NoNoneFound" type="NoNoneFoundDischarge"/>
<xs:element name="NoCleanedUp" type="NoCleanedUpDischarge"/>
<xs:element name="NoToUIC" type="NoToUICDischarge"/>
<xs:element name="Unknown" type="UnknownDischarge"/>
<xs:element name="Other" type="OtherDischarge"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="Discovered">
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Discovered">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="1" minOccurs="0" name="Explain" type="xs:string"/>
</xs:sequence>
<xs:attribute name="type" type="DiscoveredType"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Location">
<xs:all>
<xs:element maxOccurs="1" minOccurs="0" name="Address" type="AddressType" />
<xs:element maxOccurs="1" minOccurs="0" name="LatLong" type="LatLongType" />
</xs:all>
</xs:complexType>
<xs:complexType name="Pollutant">
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Pollutant">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="1" minOccurs="0" name="Explain" type="xs:string"/>
</xs:sequence>
<xs:attribute name="type" type="PollutantType"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Source">
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Source">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="1" minOccurs="0" name="Explain" type="xs:string"/>
</xs:sequence>
<xs:attribute name="type" type="SourceType"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Trace">
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Trace">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="1" minOccurs="0" name="Explain" type="xs:string"/>
</xs:sequence>
<xs:attribute name="type" type="TraceType"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Correction">
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Correction">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="1" minOccurs="0" name="Explain" type="xs:string"/>
</xs:sequence>
<xs:attribute name="type" type="CorrectionType"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="YesNotifiedECYDischarge">
<xs:annotation>
<xs:documentation>Discharge reached MS4, Notified Ecology</xs:documentation>
</xs:annotation>
</xs:complexType>
<xs:complexType name="YesNotifiedDOHDischarge">
<xs:annotation>
<xs:documentation>Discharge reached MS4, Notified Ecology and Health</xs:documentation>
</xs:annotation>
</xs:complexType>
<xs:complexType name="YesNoNoticeDischarge">
<xs:annotation>
<xs:documentation>Discharge reached MS4, Did not notify Ecology</xs:documentation>
</xs:annotation>
</xs:complexType>
<xs:complexType name="YesAllowableDischarge">
<xs:annotation>
<xs:documentation>Discharge reached MS4, but it was allowable</xs:documentation>
</xs:annotation>
</xs:complexType>
<xs:complexType name="NoNoneFoundDischarge">
<xs:annotation>
<xs:documentation>No discharge found</xs:documentation>
</xs:annotation>
</xs:complexType>
<xs:complexType name="NoCleanedUpDischarge">
<xs:annotation>
<xs:documentation>Discharge cleaned up and did not reach MS4</xs:documentation>
</xs:annotation>
</xs:complexType>
<xs:complexType name="NoToUICDischarge">
<xs:annotation>
<xs:documentation>Discharge to Underground Injection Control (UIC) well</xs:documentation>
</xs:annotation>
</xs:complexType>
<xs:complexType name="UnknownDischarge">
<xs:annotation>
<xs:documentation>Unknown if discharge reached MS4</xs:documentation>
</xs:annotation>
</xs:complexType>
<xs:complexType name="OtherDischarge">
<xs:annotation>
<xs:documentation>Something else happened, tell us what</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element maxOccurs="1" minOccurs="0" name="Explain" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="DiscoveredType">
<xs:annotation>
<xs:documentation>Responses for How was this incident discovered or reported to you?</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="0">
<xs:annotation>
<xs:documentation>Pollution hotline (phone, web, app)</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="1">
<xs:annotation>
<xs:documentation>Direct report to your staff</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="2">
<xs:annotation>
<xs:documentation>Staff referral</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="3">
<xs:annotation>
<xs:documentation>Other agency referral</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="4">
<xs:annotation>
<xs:documentation>ERTS referral</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="5">
<xs:annotation>
<xs:documentation>Business inspection</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="6">
<xs:annotation>
<xs:documentation>Construction inspection</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="7">
<xs:annotation>
<xs:documentation>MS4 inspection or screening</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="8">
<xs:annotation>
<xs:documentation>Other</xs:documentation>
<xs:appinfo>Explain</xs:appinfo>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="AddressType">
<xs:annotation>
<xs:documentation>Conventional Street Address or Nearest Intersection</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Address" type="xs:string" />
<xs:element name="City" type="xs:string" />
<xs:element maxOccurs="1" minOccurs="0" name="PostalCode" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="LatLongType">
<xs:annotation>
<xs:documentation>Latitude Longitude pair, 6 decimal digits.</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Latitude" type="LatNumber" />
<xs:element name="Longitude" type="LongNumber" />
</xs:sequence>
</xs:complexType>
<xs:simpleType name="LatNumber">
<xs:annotation>
<xs:documentation>Latitude, 6 decimal digits.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:decimal">
<xs:totalDigits value="8" />
<xs:fractionDigits value="6" />
<xs:minInclusive value="-90" />
<xs:maxInclusive value="90" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="LongNumber">
<xs:annotation>
<xs:documentation>Longitude, 6 decimal digits.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:decimal">
<xs:totalDigits value="9" />
<xs:fractionDigits value="6" />
<xs:minInclusive value="-180" />
<xs:maxInclusive value="180" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="PollutantType">
<xs:restriction base="xs:string">
<xs:enumeration value="0">
<xs:annotation>
<xs:documentation>Unconfirmed, unspecified, or not identified</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="1">
<xs:annotation>
<xs:documentation>Fuel and/or vehicle related fluids</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="2">
<xs:annotation>
<xs:documentation>Food-related oil/grease</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="3">
<xs:annotation>
<xs:documentation>Sediment/soil</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="4">
<xs:annotation>
<xs:documentation>Solid waste/trash</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="5">
<xs:annotation>
<xs:documentation>Sewage/septage/pet waste/human waste</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="6">
<xs:annotation>
<xs:documentation>Other wastewater</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="7">
<xs:annotation>
<xs:documentation>Paint</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="8">
<xs:annotation>
<xs:documentation>Firefighting foam</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="9">
<xs:annotation>
<xs:documentation>Soap or cleaning chemicals</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="10">
<xs:annotation>
<xs:documentation>Other</xs:documentation>
<xs:appinfo>Explain</xs:appinfo>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="SourceType">
<xs:restriction base="xs:string">
<xs:enumeration value="0">
<xs:annotation>
<xs:documentation>Unconfirmed, unspecified, or not identified</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="1">
<xs:annotation>
<xs:documentation>Vehicle-related business</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="2">
<xs:annotation>
<xs:documentation>Food-related business</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="3">
<xs:annotation>
<xs:documentation>Landscape-related business</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="4">
<xs:annotation>
<xs:documentation>Mobile business</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="5">
<xs:annotation>
<xs:documentation>Construction activity</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="6">
<xs:annotation>
<xs:documentation>Other commercial/industrial activity</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="7">
<xs:annotation>
<xs:documentation>Vehicle collision</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="8">
<xs:annotation>
<xs:documentation>Other accident/spill</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="9">
<xs:annotation>
<xs:documentation>Intentional dumping</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="10">
<xs:annotation>
<xs:documentation>Illicit connection</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="11">
<xs:annotation>
<xs:documentation>Other</xs:documentation>
<xs:appinfo>Explain</xs:appinfo>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="TraceType">
<xs:restriction base="xs:string">
<xs:enumeration value="0">
<xs:annotation>
<xs:documentation>Not applicable</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="1">
<xs:annotation>
<xs:documentation>Observation (color/sheen/turbidity/floatables/odor)</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="2">
<xs:annotation>
<xs:documentation>Map analysis</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="3">
<xs:annotation>
<xs:documentation>Dye, smoke, or pressure testing</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="4">
<xs:annotation>
<xs:documentation>Field indicator measurements</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="5">
<xs:annotation>
<xs:documentation>Analytical laboratory indicators</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="6">
<xs:annotation>
<xs:documentation>Other</xs:documentation>
<xs:appinfo>Explain</xs:appinfo>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="CorrectionType">
<xs:restriction base="xs:string">
<xs:enumeration value="0">
<xs:annotation>
<xs:documentation>Clean-up</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="1">
<xs:annotation>
<xs:documentation>Education/technical assistance</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="2">
<xs:annotation>
<xs:documentation>Add or modify operational source control BMP</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="3">
<xs:annotation>
<xs:documentation>Add or modify structural source control BMP</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="4">
<xs:annotation>
<xs:documentation>Add or modify treatment BMP</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="5">
<xs:annotation>
<xs:documentation>Enforcement</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="6">
<xs:annotation>
<xs:documentation>Referred to other agency or department</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="7">
<xs:annotation>
<xs:documentation>Other</xs:documentation>
<xs:appinfo>Explain</xs:appinfo>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:schema>```
1 ответ
хотя я не могу много рассказать об импорте/экспорте Excel (эту часть я не получаю с картой – возможно, из-за другой версии или локализации), я могу помочь вам с частью схемы XML.
Вы написали, что не уверены, как работает выбор , последовательность и все остальное. Чтобы облегчить понимание основной идеи, я опустил некоторые детали: все три определяют для родительского элемента, как дочерние элементы могут выглядеть в XML-документе. выбор означает, что может присутствовать максимум один из именованных дочерних элементов, тогда как последовательность & все требует, чтобы все дочерние элементы появлялись — точно в том же порядке, что и в схеме XML ( последовательность ), или в любом порядке ( все ). Конечно, если minOccurs для дочернего элемента равен 0, этот дочерний элемент также может отсутствовать. Дополнительную информацию об этом можно найти на странице https://www.w3.org/TR/xmlschema-1/#Model_Group_details , которая столь же подробна, как и формальная.
В отличие от последовательности & all , перечисления касаются не дочерних элементов (которые могут содержать огромное поддерево XML), а фактических значений, то есть листьев дерева. Вы можете думать о них как о дополнительных ограничениях типа данных значения; в вашем XSD TraceType не только ограничен строками, но еще и ограничен только перечисленными строками «0», «1»,.., «6».
MS4Discharge имеет тип (в противном случае IIRC схема была недействительной). Это самоопределяемый элемент под названием Discharge , определенный примерно на 50 строк ниже по схеме, содержащий, например, дочерний элемент YesNotifiedECY.
Надеюсь, это сделает некоторые вещи более осязаемыми для тебя, Георг.