Как мне узнать, каким должно быть мое пространство имен XML при чтении файлов XSD? - PullRequest
0 голосов
/ 05 августа 2020

У меня проблемы с пространством имен для элемента root этого документа. Мои объявления XML соответствуют файлу документации, но я думаю, что схема могла быть обновлена ​​без обновления документации.

Я вижу в базовой схеме элемент EFilingMegabatch XML который включает EFilingBatch XML. EFilingBatch XML также определено в файле базовой схемы. Это проблема?

Моя ошибка:

Error: cvc-elt.1.a: Cannot find the declaration of element 'fc2:EFilingBatchXML'.

Моя XML:

<?xml version="1.0" encoding="UTF-8"?>
<fc2:EFilingBatchXML xmlns:fc2="www.fincen.gov/base"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="www.fincen.gov/base https://www.fincen.gov/sites/default/files/schema/base/EFL_CTRXBatchSchema.xsd"
ActivityCount="10" TotalAmount="100000" PartyCount="60">

Здесь документация: https://bsaefiling.fincen.treas.gov/docs/XMLUserGuide_FinCENCTR.pdf

Базовая схема здесь: www.fincen.gov/base

Пакетная схема здесь: https://www.fincen.gov/base/EFL_CTRXBatchSchema.xsd

Выдержка из пакетной схемы:

<xsd:schema xmlns="www.fincen.gov/base" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" targetNamespace="www.fincen.gov/base" elementFormDefault="qualified" attributeFormDefault="unqualified" vc:minVersion="1.1">

<xsd:redefine schemaLocation="BSA_XML_2.0.xsd">
...
</xsd:redefine>

<xsd:element name="EFilingBatchXML">
...
</xsd:element>

...

</xsd:schema>

1 Ответ

1 голос
/ 05 августа 2020

Как мне узнать, каким должно быть пространство имен XML при чтении файлов XSD?

Пространство имен XML элемента root документа XML должен соответствовать значению атрибута targetNamespace управляющего XSD.

Я вижу, что в базовой схеме есть элемент EFilingMegabatch XML, который включает EFilingBatch XML. EFilingBatch XML также определен в файле базовой схемы. Это проблема?

Элемент root должен быть определен на верхнем уровне связанного XSD, поэтому вы не сможете иметь документ XML с EFilingBatchXML * Элемент 1058 * проверяется на соответствие базовой схеме, поскольку он не имеет такого элемента на верхнем уровне.

Из того, что вы опубликовали (при условии, что он представляет ваш фактический случай), fc2:EFilingBatchXML как * Элемент 1059 * вашего документа XML с префиксом пространства имен fc2, привязанным к www.fincen.gov/base, должен быть связан с https://www.fincen.gov/sites/default/files/schema/base/EFL_CTRXBatchSchema.xsd для вашего значения атрибута xsi:schemaLocation. Он определен на верхнем уровне там, поэтому он должен быть доступен для документов, для которых это элемент root.

Sample Valid XML

Кажется, что XSD страдает от бумаги -form требования эры, такие как минимум шесть fc2:Party элементов, поэтому этот «минимальный» пример немного длинен, но следующий XML действителен для XSD, указанного в атрибуте xsi:schemaLocation.

<?xml version="1.0" encoding="UTF-8"?>
<fc2:EFilingBatchXML TotalAmount="35000" PartyCount="6" ActivityCount="1"
  xsi:schemaLocation="www.fincen.gov/base
  https://www.fincen.gov/sites/default/files/schema/base/EFL_CTRXBatchSchema.xsd"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:fc2="www.fincen.gov/base">
  <fc2:FormTypeCode>CTRX</fc2:FormTypeCode>
  <fc2:Activity SeqNum="1">
    <fc2:EFilingPriorDocumentNumber>0</fc2:EFilingPriorDocumentNumber>
    <fc2:FilingDateText>20200804</fc2:FilingDateText>
    <fc2:ActivityAssociation SeqNum="2">
      <fc2:CorrectsAmendsPriorReportIndicator></fc2:CorrectsAmendsPriorReportIndicator>
      <fc2:FinCENDirectBackFileIndicator></fc2:FinCENDirectBackFileIndicator>
      <fc2:InitialReportIndicator></fc2:InitialReportIndicator>
    </fc2:ActivityAssociation>
    <fc2:Party SeqNum="3">
      <fc2:ActivityPartyTypeCode>35</fc2:ActivityPartyTypeCode>
      <fc2:PartyName SeqNum="4"></fc2:PartyName>
    </fc2:Party>
    <fc2:Party SeqNum="5">
      <fc2:ActivityPartyTypeCode>35</fc2:ActivityPartyTypeCode>
      <fc2:PartyName SeqNum="6"></fc2:PartyName>
    </fc2:Party>
    <fc2:Party SeqNum="7">
      <fc2:ActivityPartyTypeCode>35</fc2:ActivityPartyTypeCode>
      <fc2:PartyName SeqNum="8"></fc2:PartyName>
    </fc2:Party>
    <fc2:Party SeqNum="9">
      <fc2:ActivityPartyTypeCode>35</fc2:ActivityPartyTypeCode>
      <fc2:PartyName SeqNum="10"></fc2:PartyName>
    </fc2:Party>
    <fc2:Party SeqNum="11">
      <fc2:ActivityPartyTypeCode>35</fc2:ActivityPartyTypeCode>
      <fc2:PartyName SeqNum="12"></fc2:PartyName>
    </fc2:Party>
    <fc2:Party SeqNum="13">
      <fc2:ActivityPartyTypeCode>35</fc2:ActivityPartyTypeCode>
      <fc2:PartyName SeqNum="14"></fc2:PartyName>
    </fc2:Party>
    <fc2:CurrencyTransactionActivity SeqNum="15">
      <fc2:AggregateTransactionIndicator></fc2:AggregateTransactionIndicator>
      <fc2:ArmoredCarServiceIndicator></fc2:ArmoredCarServiceIndicator>
      <fc2:ATMIndicator></fc2:ATMIndicator>
      <fc2:MailDepositShipmentIndicator></fc2:MailDepositShipmentIndicator>
      <fc2:NightDepositIndicator></fc2:NightDepositIndicator>
      <fc2:SharedBranchingIndicator></fc2:SharedBranchingIndicator>
      <fc2:TotalCashInReceiveAmountText></fc2:TotalCashInReceiveAmountText>
      <fc2:TotalCashOutAmountText></fc2:TotalCashOutAmountText>
      <fc2:TransactionDateText>20200804</fc2:TransactionDateText>
      <fc2:CurrencyTransactionActivityDetail SeqNum="16">
        <fc2:CurrencyTransactionActivityDetailTypeCode>55</fc2:CurrencyTransactionActivityDetailTypeCode>
        <fc2:DetailTransactionAmountText></fc2:DetailTransactionAmountText>
        <fc2:OtherCurrencyTransactionActivityDetailText></fc2:OtherCurrencyTransactionActivityDetailText>
        <fc2:OtherForeignCurrencyCountryText></fc2:OtherForeignCurrencyCountryText>
      </fc2:CurrencyTransactionActivityDetail>
    </fc2:CurrencyTransactionActivity>
  </fc2:Activity>
</fc2:EFilingBatchXML>

Если это руководство не позволяет вам успешно проверить свой XML на соответствие XSD в атрибуте xsd:schemaLocation, тогда опубликуйте пример минимального завершения , который не может быть подтвержден для дальнейшей проверки. помощь.

См. также

...