ОШИБКА: элемент «Возврат»: для проверки нет доступного глобального объявления root - PullRequest
1 голос
/ 04 февраля 2020

Я пытаюсь проверить xml файл с xsd-файлом для подачи T2202 TAX SLIP для канадского налогового агентства

Ниже приведен мой файл xml, который можно слегка изменить, чтобы он проверялся с помощью файла схемы xsd .

<?xml version="1.0" encoding="UTF-8"?>

<Return>
    <T2202>
        <T2202Slip>
            <SlipReportTypeCode>O</SlipReportTypeCode>
            <FilerAccountNumber>000000000RZ0000</FilerAccountNumber>
            <PostSecondaryEducationalSchoolProgramName>Webdevelopment</PostSecondaryEducationalSchoolProgramName>
            <PostSecondaryEducationalSchoolTypeCode>1</PostSecondaryEducationalSchoolTypeCode>
            <FlyingSchoolClubCourseTypeCode>1</FlyingSchoolClubCourseTypeCode>
            <StudentName>
                <FamilyName>Jacob</FamilyName>
                <GivenName>peter</GivenName>
                <NameInitialText>k</NameInitialText>
            </StudentName>
            <SocialInsuranceNumber>000000000</SocialInsuranceNumber>
            <StudentNumber>501058988</StudentNumber>
            <StudentAddress>
                <AddressLine1Text>202-2526 LAKEVIEW</AddressLine1Text>
                <AddressLine2Text>CRES</AddressLine2Text>
                <CityName>ABBOTSFORD</CityName>
                <ProvinceStateCode>BC</ProvinceStateCode>
                <CountryCode>CAN</CountryCode>
                <PostalZipCode>V2W3A9</PostalZipCode>
            </StudentAddress>
            <SchoolSession>
                <StartYearMonth>1901</StartYearMonth>
                <EndYearMonth>1909</EndYearMonth>
                <EligibleTuitionFeeAmount>153.64</EligibleTuitionFeeAmount>
                <PartTimeStudentMonthCount>9</PartTimeStudentMonthCount>
                <FullTimeStudentMonthCount>0</FullTimeStudentMonthCount>
            </SchoolSession>
            <TotalEligibleTuitionFeeAmount>0</TotalEligibleTuitionFeeAmount>
            <TotalPartTimeStudentMonthCount>0</TotalPartTimeStudentMonthCount>
            <TotalFullTimeStudentMonthCount>0</TotalFullTimeStudentMonthCount>
        </T2202Slip>
        <T2202Summary>
            <FilerAccountNumber>000000000RZ0000</FilerAccountNumber>
            <SummaryReportTypeCode>O</SummaryReportTypeCode>
            <TaxationYear>2019</TaxationYear>
            <TotalSlipCount>1</TotalSlipCount>
            <PostSecondaryEducationalInstitutionName>
                <NameLine1Text>CAREER COLLEGE</NameLine1Text>
            </PostSecondaryEducationalInstitutionName>
            <PostSecondaryEducationalInstitutionMailingAddress>
                <CityName>ABBOTSFORD</CityName>
                <ProvinceStateCode>BC</ProvinceStateCode>
                <CountryCode>CAN</CountryCode>
                <PostalZipCode>V2W3A9</PostalZipCode>
            </PostSecondaryEducationalInstitutionMailingAddress>
            <ContactInformation>
                <ContactName>JOHN</ContactName>
                <ContactAreaCode>604</ContactAreaCode>
                <ContactPhoneNumber>720-4037</ContactPhoneNumber>
                <ContactExtensionNumber>6789</ContactExtensionNumber>
            </ContactInformation>
            <TotalEligibleTuitionFeeAmount>153.64</TotalEligibleTuitionFeeAmount>
        </T2202Summary>
    </T2202>
</Return>

Ниже приведен файл схемы xsd, который находится на веб-сайте правительства.

<?xml version="1.0" encoding="ISO-8859-1"?>

<!--
Description T2202 Return Complex and Element Types
Last updated    May 2019
Version#:   1.19 (version #.yy)
-->

<xsd:schema xmlns:sdt="http://www.cra-arc.gc.ca/xmlns/sdt/2-2-0" 
    xmlns:ccms="http://www.cra-arc.gc.ca/xmlns/ccms/1-0-0" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:import namespace="http://www.cra-arc.gc.ca/xmlns/sdt/2-2-0" schemaLocation="standarddatatypes.xsd"/>
    <xsd:import namespace="http://www.cra-arc.gc.ca/xmlns/ccms/1-0-0" schemaLocation="cracommonstructures.xsd"/>
    <xsd:include schemaLocation="lemmcommontypes.xsd"/>

    <xsd:complexType name="T2202SlipType">
        <xsd:sequence>
            <xsd:element ref="SlipReportTypeCode"/>
            <xsd:element name="FilerAccountNumber" type="BNRZType"/>
            <xsd:element name="PostSecondaryEducationalSchoolProgramName" type="Length1to30TextType"/>

            <!-- School type code:
                1. University
                2. College
                3. Other education institution providing courses at a post-secondary school level
                4. Certified by the Minister of Employment and Social Development Canada
                5. Flying school or club
            -->
            <xsd:element name="PostSecondaryEducationalSchoolTypeCode" type="OneToFiveCodeType"/>

            <!-- Flying school or club course type code. Must have a value if School type code is 5,
                 should be blank if school type code is 1-4. Valid values:
                1. Private pilots license
                2. Commercial pilots licence
                3. Civil flying instructor rating
                4. Helicopter category rating
                5. Instrument rating
                6. Other
            -->
            <xsd:element name="FlyingSchoolClubCourseTypeCode" type="OneToSixCodeType" minOccurs="0"/>
            <xsd:element name="StudentName" type="IndividualNameType"/>
            <xsd:element name="SocialInsuranceNumber" type="ccms:SINType"/>
            <xsd:element name="StudentNumber" type="Length1to20TextType" minOccurs="0"/>
            <xsd:element name="StudentAddress" type="RequiredLine1AddressType"/>
            <xsd:element name="SchoolSession" type="SchoolSessionType" minOccurs="1" maxOccurs="4"/>
            <xsd:element name="TotalEligibleTuitionFeeAmount" type="Decimal13AmountType" minOccurs="0"/>
            <xsd:element name="TotalPartTimeStudentMonthCount" type="ZeroToTwelveCountType"/>
            <xsd:element name="TotalFullTimeStudentMonthCount" type="ZeroToTwelveCountType"/>
        </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="SchoolSessionType">
        <xsd:all>
            <xsd:element name="StartYearMonth" type="YYMMType"/>
            <xsd:element name="EndYearMonth" type="YYMMType"/>
            <xsd:element name="EligibleTuitionFeeAmount" type="Decimal11AmountType" minOccurs="0"/>
            <xsd:element name="PartTimeStudentMonthCount" type="ZeroToTwelveCountType"/>
            <xsd:element name="FullTimeStudentMonthCount" type="ZeroToTwelveCountType"/>
        </xsd:all>
    </xsd:complexType>

    <xsd:complexType name="T2202SummaryType">
        <xsd:all>
            <xsd:element name="FilerAccountNumber" type="BNRZType"/>
            <xsd:element ref="SummaryReportTypeCode"/>
            <xsd:element name="FilerAmendmentNote" type="Length1to1309TextType" minOccurs="0"/>
            <xsd:element ref="TaxationYear"/>
            <xsd:element ref="TotalSlipCount"/>
            <xsd:element name="PostSecondaryEducationalInstitutionName" type="ThreeLinedLength30NameType"/>
            <xsd:element name="PostSecondaryEducationalInstitutionMailingAddress" type="RequiredLine1AddressType"/>
            <xsd:element name="ContactInformation" type="ContactType3" minOccurs="0"/>
            <xsd:element name="TotalEligibleTuitionFeeAmount" type="Decimal15AmountType"/>
        </xsd:all>
    </xsd:complexType>
</xsd:schema>

Мне нужно проверить файл xml. В * можно внести небольшие изменения xml файл. Я получаю сообщение об ошибке ниже

ОШИБКА: Элемент «Возврат»: для проверки нет доступного глобального объявления root

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 04 февраля 2020

Я отладил набор ваших XSD и, наконец, изолировал критические ошибки:

  1. Так что либо добавьте атрибут minOccurs="0" к следующему элементу в вашем lemmcommontypes.xsd как

    <xsd:element ref="AddressLine1Text" minOccurs="0" /> <!-- Added by edit -->
    

    , что, вероятно, невозможно, поскольку вы не можете изменить XSD.

  2. Или, в противном случае, добавьте следующий элемент как часть вашего XML

    <PostSecondaryEducationalInstitutionMailingAddress>
        <AddressLine1Text>WHATEVER!!!</AddressLine1Text>   <!-- Added by edit -->
        <CityName>ABBOTSFORD</CityName>
        <ProvinceStateCode>BC</ProvinceStateCode>
        <CountryCode>CAN</CountryCode>
        <PostalZipCode>V2W3A9</PostalZipCode>
    </PostSecondaryEducationalInstitutionMailingAddress>
    
  3. Также измените определение Decimal13AmountType в lemmcommontypes.xsd до

    <xsd:simpleType name="Decimal13AmountType">
        <xsd:restriction base="sdt:AmountType">
            <xsd:totalDigits value="13"></xsd:totalDigits>
            <xsd:pattern value="[+]?\d{0,11}(\.\d{2})?"/>
            <xsd:minInclusive value="0"/>
        </xsd:restriction>
    </xsd:simpleType>
    

    , что, вероятно, невозможно, поскольку вы не можете изменить XSD.

  4. Или, если вы не можете сделать это, измените значение (я) TotalEligibleTuitionFeeAmount с 0 на 0.00, чтобы сопоставить RegEx.

, чтобы XML соответствовал вашему набору XSD.


В обоих случаях вам необходимо добавить следующие определения в вышеуказанный XSD-файл (скопированный из frms.xsd):

<xsd:complexType name="T2202ReturnType">   <!-- From frms.xsd -->
    <xsd:sequence>
        <xsd:element name="T2202Slip" type="T2202SlipType" minOccurs="0" maxOccurs="unbounded"/>
        <xsd:element name="T2202Summary" type="T2202SummaryType"/>
    </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="ReturnChoiceType">  <!-- From frms.xsd -->
    <xsd:choice>
        <xsd:element name="T2202" type="T2202ReturnType" minOccurs="0"/>
    </xsd:choice>
</xsd:complexType>

<xsd:element name="Return" type="ReturnChoiceType"/>

для сопоставления вышеуказанного XML.
Теперь XML должен подтвердить.

1 голос
/ 12 марта 2020

Думаю, проблема в том, что ваш <Return> должен быть включен в <Submission> согласно https://www.canada.ca/en/revenue-agency/services/e-services/filing-information-returns-electronically-t4-t5-other-types-returns-overview/upcoming-year-t619.html.

Когда я следовал этому, мой xml файл проверен на соответствие схемам, включенным в https://www.canada.ca/content/dam/cra-arc/serv-info/eservices/xmlschm1-20-5.zip

Мне не нужно было вносить какие-либо изменения в файлы XSD, как в принятом в настоящее время ответе.

Файл Вы отправляете в CRA должно выглядеть примерно так:

<?xml version="1.0" encoding="UTF-8"?>
<Submission xmlns:ccms="http://www.cra-arc.gc.ca/xmlns/ccms/1-0-0" 
  xmlns:sdt="http://www.cra-arc.gc.ca/xmlns/sdt/2-2-0" 
  xmlns:ols="http://www.cra-arc.gc.ca/enov/ol/interfaces/efile/partnership/ols/1-0-1" 
  xmlns:ols1="http://www.cra-arc.gc.ca/enov/ol/interfaces/efile/partnership/ols1/1-0-1" 
  xmlns:ols10="http://www.cra-arc.gc.ca/enov/ol/interfaces/efile/partnership/ols10/1-0-1" 
  xmlns:ols100="http://www.cra-arc.gc.ca/enov/ol/interfaces/efile/partnership/ols100/1-0-1" 
  xmlns:ols12="http://www.cra-arc.gc.ca/enov/ol/interfaces/efile/partnership/ols12/1-0-1" 
  xmlns:ols125="http://www.cra-arc.gc.ca/enov/ol/interfaces/efile/partnership/ols125/1-0-1" 
  xmlns:ols140="http://www.cra-arc.gc.ca/enov/ol/interfaces/efile/partnership/ols140/1-0-1" 
  xmlns:ols141="http://www.cra-arc.gc.ca/enov/ol/interfaces/efile/partnership/ols141/1-0-1" 
  xmlns:ols2="http://www.cra-arc.gc.ca/enov/ol/interfaces/efile/partnership/ols2/1-0-1" 
  xmlns:ols5="http://www.cra-arc.gc.ca/enov/ol/interfaces/efile/partnership/ols5/1-0-1" 
  xmlns:ols50="http://www.cra-arc.gc.ca/enov/ol/interfaces/efile/partnership/ols50/1-0-1" 
  xmlns:ols52="http://www.cra-arc.gc.ca/enov/ol/interfaces/efile/partnership/ols52/1-0-1" 
  xmlns:ols6="http://www.cra-arc.gc.ca/enov/ol/interfaces/efile/partnership/ols6/1-0-1" 
  xmlns:ols8="http://www.cra-arc.gc.ca/enov/ol/interfaces/efile/partnership/ols8/1-0-1" 
  xmlns:ols8-1="http://www.cra-arc.gc.ca/enov/ol/interfaces/efile/partnership/ols8-1/1-0-1" 
  xmlns:ols9="http://www.cra-arc.gc.ca/enov/ol/interfaces/efile/partnership/ols9/1-0-1" 
  xmlns:olsbr="http://www.cra-arc.gc.ca/enov/ol/interfaces/efile/partnership/olsbr/1-0-1" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="layout-topologie.xsd">
  <T619>
    <sbmt_ref_id>00000001</sbmt_ref_id>
    <rpt_tcd>O</rpt_tcd>
    <trnmtr_nbr>MM555555</trnmtr_nbr>
    <trnmtr_tcd>1</trnmtr_tcd>
    <summ_cnt>1</summ_cnt>
    <lang_cd>E</lang_cd>
    <TRNMTR_NM>
      <l1_nm>CAREER COLLEGE</l1_nm>
    </TRNMTR_NM>
    <TRNMTR_ADDR>
      <addr_l1_txt>Address of School</addr_l1_txt>
      <cty_nm>ABBOTSFORD</cty_nm>
      <prov_cd>BC</prov_cd>
      <cntry_cd>CAN</cntry_cd>
      <pstl_cd>V2W3A9</pstl_cd>
    </TRNMTR_ADDR>
    <CNTC>
      <cntc_nm>JOHN LASTNAME</cntc_nm>
      <cntc_area_cd>604</cntc_area_cd>
      <cntc_phn_nbr>720-4037</cntc_phn_nbr>
      <cntc_email_area>john@careercollege.com</cntc_email_area>
    </CNTC>
  </T619>
  <Return>
    Your return from above goes here
  </Return>
</Submission>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...