2008-11-26 6 views
-1

Я пытаюсь проверить файл xml по схеме с помощью XML::Validator::Schema.
Но это дает мне эту ошибку:Найден неожиданный <Submission> внутри <<<<ROOT> >>>. Это недопустимый дочерний элемент

Found unexpected <Submission> inside <<<<ROOT>>>>. This is not a valid child element. [Ln: 2, Col:119] 

Примечание: <Submission> самый первый элемент у меня после <xml version="1.0" encoding="UTF-8"?>

Я не могу понять, что это значит.
Оцените любую помощь.

XML является:

<?xml version="1.0" encoding="utf-8"?> 
<Submission xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="layout-topologie.xsd"> 
<Return> 
    <NR4> 
    <NR4Slip> 
    <RCPNT_NM> 
    <snm>SYMPSOM</snm> 
    <gvn_nm>HOMER</gvn_nm> 
    <init>A</init> 
    </RCPNT_NM> 
    <SEC_RCPNT_NM></SEC_RCPNT_NM> 
    <RCPNT_ADDR> 
    <addr_l1_txt>C/O ABC A/C 555 6666</addr_l1_txt> 
    <addr_l2_txt>9999 - 88 STREET</addr_l2_txt> 
    <cntry_cd>CAN</cntry_cd> 
    <fgn_pstl_cd>T4S1M5</fgn_pstl_cd> 
    </RCPNT_ADDR> 
    <fssn_nbr>607-448-900</fssn_nbr> 
    <nr_acct_nbr>NRY454080</nr_acct_nbr> 
    <rcpnt_tcd>01</rcpnt_tcd> 
    <payr_nbr>100000</payr_nbr> 
    <inc_1_tcd>11</inc_1_tcd> 
    <crcy_1_cd>CAD</crcy_1_cd> 
    <tx_xmpt_1_cd>AB</tx_xmpt_1_cd> 
    <inc_2_tcd>02</inc_2_tcd> 
    <crcy_2_cd>CAD</crcy_2_cd> 
    <tx_xmpt_2_cd>PQ</tx_xmpt_2_cd> 
    <NR4_AMT> 
    <gro_1_incamt>1.1</gro_1_incamt> 
    <nr_tx_1_amt>0.00</nr_tx_1_amt> 
    <gro_2_incamt>90000000</gro_2_incamt> 
    <nr_tx_2_amt>0.00</nr_tx_2_amt> 
    </NR4_AMT> 
    <rpt_tcd>O</rpt_tcd> 
    </NR4Slip> 
    <NR4Slip> 
    <RCPNT_NM> 
    <snm>CARTMAN</snm> 
    <gvn_nm>ERIC</gvn_nm> 
    </RCPNT_NM> 
    <SEC_RCPNT_NM> 
    <sec_snm>SYMPSON</sec_snm> 
    <sec_gvn_nm>BART</sec_gvn_nm> 
    </SEC_RCPNT_NM> 
    <RCPNT_ADDR> 
    <addr_l1_txt>C/O DEFG A/C 555 2222</addr_l1_txt> 
    <addr_l2_txt>9999 - 88 STREET</addr_l2_txt> 
    <cntry_cd>CAN</cntry_cd> 
    <fgn_pstl_cd>T4S1M5</fgn_pstl_cd> 
    </RCPNT_ADDR> 
    <fssn_nbr>607-448-901</fssn_nbr> 
    <nr_acct_nbr>NRY454080</nr_acct_nbr> 
    <rcpnt_tcd>01</rcpnt_tcd> 
    <payr_nbr>200000</payr_nbr> 
    <inc_1_tcd>11</inc_1_tcd> 
    <crcy_1_cd>USD</crcy_1_cd> 
    <tx_xmpt_1_cd>BC</tx_xmpt_1_cd> 
    <inc_2_tcd>02</inc_2_tcd> 
    <crcy_2_cd>USD</crcy_2_cd> 
    <tx_xmpt_2_cd>QR</tx_xmpt_2_cd> 
    <NR4_AMT> 
    <gro_1_incamt>20.01</gro_1_incamt> 
    <nr_tx_1_amt>10</nr_tx_1_amt> 
    <gro_2_incamt>8000000</gro_2_incamt> 
    <nr_tx_2_amt>0.1</nr_tx_2_amt> 
    </NR4_AMT> 
    <rpt_tcd>O</rpt_tcd> 
    </NR4Slip> 
    <NR4Summary> 
    <PAYR_NM> 
    <l1_nm>THE BANK OF NOVA SCOTIA</l1_nm> 
    </PAYR_NM> 
    <PAYR_ADDR> 
    <addr_l1_txt>HR SHARED SERVICES PENSION DEPT.</addr_l1_txt> 
    <addr_l2_txt>7TH FLOOR, 888 BIRCHMOUNT ROAD</addr_l2_txt> 
    </PAYR_ADDR> 
    <tx_yr>2007</tx_yr> 
    <slp_cnt>10</slp_cnt> 
    </NR4Summary> 
    </NR4> 
</Return> 
</Submission> 

XSD является:

<?xml version="1.0"?> 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <!-- @@@@ Definition of NR4 ComplexTypes @@@@ 2008/sept/03 Version# 2.8 --> 
    <xsd:complexType name="NR4SlipType"> 
     <xsd:all> 
      <xsd:element name="RCPNT_NM" type="NameType" minOccurs="0"/> 
      <xsd:element name="SEC_RCPNT_NM" type="NameType_2" minOccurs="0"/> 
      <xsd:element name="ENTPRS_NM" type="NR4_Line2Type" minOccurs="0"/> 
      <xsd:element name="RCPNT_ADDR" type="NR4ForeignAddressType" minOccurs="0"/> 
      <xsd:element name="tx_cntry_cd" type="char3Type"/> 
      <xsd:element name="fssn_nbr" type="char20Type"/> 
      <xsd:element name="nr_acct_nbr" type="nrType"/> 
      <xsd:element name="rcpnt_tcd" type="indicator1-5Type"/> 
      <xsd:element name="payr_nbr" type="char20Type" minOccurs="0"/> 
      <xsd:element name="inc_1_tcd" type="numeric2Type" minOccurs="0"/> 
      <xsd:element name="crcy_1_cd" type="char3Type" minOccurs="0"/> 
      <xsd:element name="NR4_AMT" type="NR4AmountType" minOccurs="0"/> 
      <xsd:element name="tx_xmpt_1_cd" type="char1Type" minOccurs="0"/> 
      <xsd:element name="inc_2_tcd" type="numeric2Type" minOccurs="0"/> 
      <xsd:element name="crcy_2_cd" type="char3Type" minOccurs="0"/> 
      <xsd:element name="tx_xmpt_2_cd" type="char1Type" minOccurs="0"/> 
      <xsd:element name="rpt_tcd" type="slipDataType"/> 
     </xsd:all> 
    </xsd:complexType> 
    <xsd:complexType name="NR4AmountType"> 
     <xsd:all> 
      <xsd:element name="gro_1_incamt" type="decimal11Type" minOccurs="0"/> 
      <xsd:element name="nr_tx_1_amt" type="decimal11Type" minOccurs="0"/> 
      <xsd:element name="gro_2_incamt" type="decimal11Type" minOccurs="0"/> 
      <xsd:element name="nr_tx_2_amt" type="decimal11Type" minOccurs="0"/> 
     </xsd:all> 
    </xsd:complexType> 
    <xsd:complexType name="NR4SummaryType"> 
     <xsd:all> 
      <xsd:element name="nr_acct_nbr" type="nrType"/> 
      <xsd:element name="PAYR_NM" type="Line3Type"/> 
      <xsd:element name="PAYR_ADDR" type="NR4CanadaAddressType" minOccurs="0"/> 
      <xsd:element name="CNTC" type="ContactType2"/> 
      <xsd:element name="tx_yr" type="yearType"/> 
      <xsd:element name="slp_cnt" type="int7Type"/> 
      <xsd:element name="rmt_tcd" type="indicator1-2Type" minOccurs="0"/> 
      <xsd:element name="rpt_tcd" type="otherDataType"/> 
      <xsd:element name="NR4_TAMT" type="NR4TotalsType" minOccurs="0"/> 
     </xsd:all> 
    </xsd:complexType> 
    <xsd:complexType name="NR4TotalsType"> 
     <xsd:all> 
      <xsd:element name="tot_gro_1_incamt" type="decimal13Type" minOccurs="0"/> 
      <xsd:element name="tot_nr_tx_1_amt" type="decimal13Type" minOccurs="0"/> 
      <xsd:element name="tot_gro_2_incamt" type="decimal13Type" minOccurs="0"/> 
      <xsd:element name="tot_nr_tx_2_amt" type="decimal13Type" minOccurs="0"/> 
      <xsd:element name="tot_nrpt_incamt" type="decimal13Type" minOccurs="0"/> 
      <xsd:element name="tot_nr_nrpt_tx_amt" type="decimal13Type" minOccurs="0"/> 
     </xsd:all> 
     <xsd:attribute name="tot_incamt" type="xsd:string"/> 
     <xsd:attribute name="tot_tx_wthld" type="xsd:string"/> 
    </xsd:complexType> 
</xsd:schema> 
+0

Строка 2, колонка 119 ?? Неужели эта линия так долго? Не могли бы вы разместить первые две строки? – Svante

+0

Можете ли вы предоставить образец XML, скопированный непосредственно из файла И схему, по которой вы его проверяете? Это поможет определить проблему для вас. –

+0

Не должно быть ? – dsm

ответ

1

Похоже, вы не имеете представления элемента в вашей XSD. Я также не вижу элемент возврата. Вы хотите определить это.

На другой ноте, Пол, спасибо, что заставил меня нанять мою первую работу и занять меня.

2

Вы определили несколько типов, но вы не определили какие-либо элементы (кроме тех, которые определены как подкомпоненты типов, которые вы имеют). Мало того, что <Submission> не определена, ни один не <Return> (который является его непосредственным ребенком-элемент), ни <NR4>, <NR4Slip> и т.д.

Вам понадобится ряд <xsd:element> блоков для отображения типов вы определенные в фактические элементы/метки. (А также объявления для <Return> и <NS4>, но так как те, кажется, появляются только в <Submission>, вы можете просто объявить их в линию в рамках декларации <Submission>.)

Вот колотая в декларации для <Submission>, который использует ваши существующие типы, но объявляет другие элементы в строке. Это совершенно не-испытано, топ-моей головки, набранный на общественном Wi-Fi, находясь в отпуске без моей копии «XML Schema» Ora на руке:

<xsd:element name="Submission" nillable="false"> 
    <xsd:complexType> 
    <xsd:sequence maxOccurs="1" minOccurs="1"> 
     <xsd:element name="Return"> 
     <xsd:complexType> 
      <xsd:sequence maxOccurs="1" minOccurs="1"> 
      <xsd:element name="NS4"> 
       <xsd:complexType> 
       <xsd:sequence> 
        <xsd:element name="NR4Slip" type="NR4SlipType" /> 
        <xsd:element name="NR4Summary" type="NR4SummaryType" /> 
       </xsd:sequence> 
       </xsd:complexType> 
      </xsd:element> 
      </xsd:sequence> 
     </xsd:complexType> 
     </xsd:element> 
    </xsd:sequence> 
    </xsd:complexType> 
</xsd:element> 

Это не ставит никаких границ на количество <NR4Slip> или <NR4Summary> блоков, которые вы можете иметь; вы можете установить это с помощью атрибутов minOccurs и/или maxOccurs на теги самого большого <xsd:element>. Встроенные объявления также обходят фактическое отображение NR4SlipType или NR4SummaryType элементам.