Не удается найти объявление элемента "xtce: SpaceSystem" - PullRequest
1 голос
/ 05 августа 2020

Я создал следующий файл XML, основанный на стандарте XTCE. Однако, когда я пытаюсь проверить его, я вижу сообщение об ошибке:

Не удается найти объявление элемента 'xtce:SpaceSystem'., Строка '3', столбец '81'

Я не понимаю, почему, потому что элемент SpaceSystem является частью как файла схемы XSD, так и документации XTCE как элемент root. Есть проблема с заголовком элемента или ссылкой на схему XSD? И как мне обновить файл, чтобы он стал действующим?

<?xml version="1.0" encoding="UTF-8"?>
<xtce:SpaceSystem xmlns:xtce="http://www.omg.org/space/xtce"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="XTCE_V12_UT"
    xsi:schemaLocation="https://www.omg.org/spec/XTCE/20180204/SpaceSystem.xsd">
  <xtce:CommandMetaData>
    <ParameterTypeSet>
      <xtce:IntegerParameterType name="1ByteInteger" sizeInBits="8" signed="false">
        <xtce:UnitSet />
      </xtce:IntegerParameterType>
      <xtce:IntegerParameterType name="14BitInteger" sizeInBits="14" signed="false">
        <xtce:UnitSet />
      </xtce:IntegerParameterType>
      <xtce:IntegerParameterType name="11BitInteger" sizeInBits="11" signed="false">
        <xtce:UnitSet />
      </xtce:IntegerParameterType>
      <xtce:IntegerParameterType name="10BitInteger" sizeInBits="10" signed="false">
        <xtce:UnitSet />
      </xtce:IntegerParameterType>
      <xtce:IntegerParameterType name="6BitInteger" sizeInBits="6" signed="false">
        <xtce:UnitSet />
      </xtce:IntegerParameterType>
      <xtce:IntegerParameterType name="5BitInteger" sizeInBits="5" signed="false">
        <xtce:UnitSet />
      </xtce:IntegerParameterType>
      <xtce:IntegerParameterType name="4BitInteger" sizeInBits="4" signed="false">
        <xtce:UnitSet />
      </xtce:IntegerParameterType>
      <xtce:IntegerParameterType name="3BitInteger" sizeInBits="3" signed="false">
        <xtce:UnitSet />
      </xtce:IntegerParameterType>
      <xtce:IntegerParameterType name="2BitInteger" sizeInBits="2" signed="false">
        <xtce:UnitSet />
      </xtce:IntegerParameterType>
      <xtce:IntegerParameterType name="1BitInteger" sizeInBits="1" signed="false">
        <xtce:UnitSet />
      </xtce:IntegerParameterType>
    </ParameterTypeSet>
    <xtce:ParameterSet>
      <xtce:Parameter parameterTypeRef="2BitInteger" name="CSP_PR" />
      <xtce:Parameter parameterTypeRef="5BitInteger" name="CSP_SRC" />
      <xtce:Parameter parameterTypeRef="5BitInteger" name="CSP_DEST" />
      <xtce:Parameter parameterTypeRef="6BitInteger" name="CSP_SRC_P" />
      <xtce:Parameter parameterTypeRef="6BitInteger" name="CSP_DEST_P" />
      <xtce:Parameter parameterTypeRef="4BitInteger" name="CSP_RES" />
      <xtce:Parameter parameterTypeRef="1BitInteger" name="CSP_HMAC" />
      <xtce:Parameter parameterTypeRef="1BitInteger" name="CSP_XTEA" />
      <xtce:Parameter parameterTypeRef="1BitInteger" name="CSP_RDP" />
      <xtce:Parametera parameterTypeRef="1BitInteger" name="CSP_CRC" />
    </xtce:ParameterSet>
    <xtce:ArgumentTypeSet>
      <xtce:EnumeratedArgumentType name="TimerStartStopType" sizeInBits="32">
        <xtce:UnitSet />
        <xtce:EnumerationList>
          <xtce:Enumeration label="TIMER_STOP" value="0" />
          <xtce:Enumeration label="TIMER_START" value="1" />
        </xtce:EnumerationList>
      </xtce:EnumeratedArgumentType>
    </xtce:ArgumentTypeSet>
    <xtce:CommandContainerSet>
      <xtce:CommandContainer name="CSPPacket" shortDescription="CSP Packet">
        <xtce:EntryList>
          <xtce:ContainerRefEntry containerRef="CSPPacketHeader" />
        </xtce:EntryList>
      </xtce:CommandContainer>
      <xtce:CommandContainer name="CSPPacketHeader" shortDescription="CCSDS TC Frame Header" abstract="true">
        <xtce:EntryList>
          <xtce:ParameterRefEntry parameterRef="CSP_PR" />
          <xtce:ParameterRefEntry parameterRef="CSP_SRC" />
          <xtce:ParameterRefEntry parameterRef="CSP_DEST" />
          <xtce:ParameterRefEntry parameterRef="CSP_SRC_P" />
          <xtce:ParameterRefEntry parameterRef="CSP_DEST_P" />
          <xtce:ParameterRefEntry parameterRef="CSP_RES" />
          <xtce:ParameterRefEntry parameterRef="CSP_XTEA" />
          <xtce:ParameterRefEntry parameterRef="CSP_RDP" />
          <xtce:ParameterRefEntry parameterRef="CSP_CRC" />
        </xtce:EntryList>
      </xtce:CommandContainer>
    </xtce:CommandContainerSet>
    <xtce:MetaCommandSet>
      <xtce:MetaCommand name="TimerStartStopCommand" shortDescription="Timer Start Stop Command">
        <xtce:ArgumentList>
          <xtce:Argument argumentTypeRef="TimerStartStopType" name="TimerStartStop" />
        </xtce:ArgumentList>
        <xtce:CommandContainer name="TimerStartStopCommand" shortDescription="Command TimerStartStopCommand Packet">
          <xtce:EntryList>
            <xtce:ArgumentRefEntry argumentRef="TimerStartStopType">
              <xtce:LocationInContainerInBits referenceLocation="containerStart">
                <xtce:FixedValue>0</xtce:FixedValue>
              </xtce:LocationInContainerInBits>
            </xtce:ArgumentRefEntry>
          </xtce:EntryList>
        </xtce:CommandContainer>
        <xtce:DefaultSignificance consequenceLevel="none" />
        <xtce:VerifierSet />
      </xtce:MetaCommand>
    </xtce:MetaCommandSet>
  </xtce:CommandMetaData>
</xtce:SpaceSystem>

Ответы [ 2 ]

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

Как правильно указал @kjhughes, существует некорректная обработка пространств имен.

Я скорректировал ваши объявления XML пространств имен.

Ошибок по-прежнему мало. Но вам будет легко исправить их сейчас.

XML

<?xml version="1.0" encoding="UTF-8"?>
<xtce:SpaceSystem xmlns:xtce="http://www.omg.org/spec/XTCE/20180204"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  name="XTCE_V12_UT"
                  xsi:schemaLocation="http://www.omg.org/spec/XTCE/20180204 https://www.omg.org/spec/XTCE/20180204/SpaceSystem.xsd">
    <xtce:CommandMetaData>
        <xtce:ParameterTypeSet>
            <xtce:IntegerParameterType name="1ByteInteger" sizeInBits="8"
                                       signed="false">
                <xtce:UnitSet/>
            </xtce:IntegerParameterType>
            <xtce:IntegerParameterType name="14BitInteger" sizeInBits="14"
                                       signed="false">
                <xtce:UnitSet/>
            </xtce:IntegerParameterType>
            <xtce:IntegerParameterType name="11BitInteger" sizeInBits="11"
                                       signed="false">
                <xtce:UnitSet/>
            </xtce:IntegerParameterType>
            <xtce:IntegerParameterType name="10BitInteger" sizeInBits="10"
                                       signed="false">
                <xtce:UnitSet/>
            </xtce:IntegerParameterType>
            <xtce:IntegerParameterType name="6BitInteger" sizeInBits="6"
                                       signed="false">
                <xtce:UnitSet/>
            </xtce:IntegerParameterType>
            <xtce:IntegerParameterType name="5BitInteger" sizeInBits="5"
                                       signed="false">
                <xtce:UnitSet/>
            </xtce:IntegerParameterType>
            <xtce:IntegerParameterType name="4BitInteger" sizeInBits="4"
                                       signed="false">
                <xtce:UnitSet/>
            </xtce:IntegerParameterType>
            <xtce:IntegerParameterType name="3BitInteger" sizeInBits="3"
                                       signed="false">
                <xtce:UnitSet/>
            </xtce:IntegerParameterType>
            <xtce:IntegerParameterType name="2BitInteger" sizeInBits="2"
                                       signed="false">
                <xtce:UnitSet/>
            </xtce:IntegerParameterType>
            <xtce:IntegerParameterType name="1BitInteger" sizeInBits="1"
                                       signed="false">
                <xtce:UnitSet/>
            </xtce:IntegerParameterType>
        </xtce:ParameterTypeSet>
        <xtce:ParameterSet>
            <xtce:Parameter parameterTypeRef="2BitInteger" name="CSP_PR"/>
            <xtce:Parameter parameterTypeRef="5BitInteger" name="CSP_SRC"/>
            <xtce:Parameter parameterTypeRef="5BitInteger" name="CSP_DEST"/>
            <xtce:Parameter parameterTypeRef="6BitInteger" name="CSP_SRC_P"/>
            <xtce:Parameter parameterTypeRef="6BitInteger" name="CSP_DEST_P"/>
            <xtce:Parameter parameterTypeRef="4BitInteger" name="CSP_RES"/>
            <xtce:Parameter parameterTypeRef="1BitInteger" name="CSP_HMAC"/>
            <xtce:Parameter parameterTypeRef="1BitInteger" name="CSP_XTEA"/>
            <xtce:Parameter parameterTypeRef="1BitInteger" name="CSP_RDP"/>
            <xtce:Parameter parameterTypeRef="1BitInteger" name="CSP_CRC"/>
        </xtce:ParameterSet>
        <xtce:ArgumentTypeSet>
            <xtce:EnumeratedArgumentType name="TimerStartStopType"
                                         sizeInBits="32">
                <xtce:UnitSet/>
                <xtce:EnumerationList>
                    <xtce:Enumeration label="TIMER_STOP" value="0"/>
                    <xtce:Enumeration label="TIMER_START" value="1"/>
                </xtce:EnumerationList>
            </xtce:EnumeratedArgumentType>
        </xtce:ArgumentTypeSet>
        <xtce:CommandContainerSet>
            <xtce:CommandContainer name="CSPPacket"
                                   shortDescription="CSP Packet">
                <xtce:EntryList>
                    <xtce:ContainerRefEntry containerRef="CSPPacketHeader"/>
                </xtce:EntryList>
            </xtce:CommandContainer>
            <xtce:CommandContainer name="CSPPacketHeader"
                                   shortDescription="CCSDS TC Frame Header"
                                   abstract="true">
                <xtce:EntryList>
                    <xtce:ParameterRefEntry parameterRef="CSP_PR"/>
                    <xtce:ParameterRefEntry parameterRef="CSP_SRC"/>
                    <xtce:ParameterRefEntry parameterRef="CSP_DEST"/>
                    <xtce:ParameterRefEntry parameterRef="CSP_SRC_P"/>
                    <xtce:ParameterRefEntry parameterRef="CSP_DEST_P"/>
                    <xtce:ParameterRefEntry parameterRef="CSP_RES"/>
                    <xtce:ParameterRefEntry parameterRef="CSP_XTEA"/>
                    <xtce:ParameterRefEntry parameterRef="CSP_RDP"/>
                    <xtce:ParameterRefEntry parameterRef="CSP_CRC"/>
                </xtce:EntryList>
            </xtce:CommandContainer>
        </xtce:CommandContainerSet>
        <xtce:MetaCommandSet>
            <xtce:MetaCommand name="TimerStartStopCommand"
                              shortDescription="Timer Start Stop Command">
                <xtce:ArgumentList>
                    <xtce:Argument argumentTypeRef="TimerStartStopType"
                                   name="TimerStartStop"/>
                </xtce:ArgumentList>
                <xtce:CommandContainer name="TimerStartStopCommand"
                                       shortDescription="Command TimerStartStopCommand Packet">
                    <xtce:EntryList>
                        <xtce:ArgumentRefEntry argumentRef="TimerStartStopType">
                            <xtce:LocationInContainerInBits referenceLocation="containerStart">
                                <xtce:FixedValue>0</xtce:FixedValue>
                            </xtce:LocationInContainerInBits>
                        </xtce:ArgumentRefEntry>
                    </xtce:EntryList>
                </xtce:CommandContainer>
                <xtce:DefaultSignificance consequenceLevel="none"/>
                <xtce:VerifierSet/>
            </xtce:MetaCommand>
        </xtce:MetaCommandSet>
    </xtce:CommandMetaData>
</xtce:SpaceSystem>
1 голос
/ 05 августа 2020

Две проблемы 1 препятствуют связыванию XML с XSD:

  1. Значение xsi:schemaLocation должно быть разделено пробелами парами пространство имен XML и связанный с ним XSD URI,

  2. Пространство имен элемента root вашего XML должно соответствовать целевому пространству имен управляющего XSD.

Так что измените

xsi:schemaLocation="https://www.omg.org/spec/XTCE/20180204/SpaceSystem.xsd">

на

xsi:schemaLocation="http://www.omg.org/spec/XTCE/20180204
                    https://www.omg.org/spec/XTCE/20180204/SpaceSystem.xsd">

, чтобы подсказать валидатору поиск в https://www.omg.org/spec/XTCE/20180204/SpaceSystem.xsd компонентов в пространстве имен http://www.omg.org/spec/XTCE/20180204.

и измените

xmlns:xtce="http://www.omg.org/space/xtce"

на

xmlns:xtce="http://www.omg.org/spec/XTCE/20180204"

, чтобы поместить элемент root в целевое пространство имен управляющего XSD.

См. Также

1 Кредит: вторая проблема была первой поймал @ YitzhakKhabinsky - проголосуйте за его ответ!

...