Невозможно использовать 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.

Надеюсь, это сделает некоторые вещи более осязаемыми для тебя, Георг.

Другие вопросы по тегам