egemenimre / ccsds-ndm

CCSDS Navigation Data Messages Read/Write Library
GNU General Public License v3.0
35 stars 4 forks source link

XMLschema ile dosya okuma sorunu #2

Closed egemenimre closed 4 years ago

egemenimre commented 4 years ago

XML schema ile örnek bir dosya okuma kodu yazdım, bununla standarttan alınmış olan örnek CDM dosyasını okumaya çalışıyorum. Ancak açıkça bir namespace sorunu var ve şöyle bir hata alıyorum:

xmlschema.validators.exceptions.XMLSchemaChildrenValidationError: failed validating <Element 'cdm' at 0x7f9838239540> with XsdGroup(model='sequence', occurs=[1, 1]):

Reason: Unexpected child with tag 'header' at position 1. Tag ndm:header expected.

Yardımcı olabilecek olan var mıdır?

import os
from builtins import print
from pathlib import Path
from pprint import pprint

import xmlschema

if __name__ == '__main__':

    # print working directory
    print(f"current working directory is {os.getcwd()}.")

    # check file location
    xml_file_path = Path(os.getcwd(), "..", "sample_xml", "cdm_example_section4.xml")

    print(f"xml file path :  {xml_file_path.absolute()}")
    print(f"file exists   : {xml_file_path.exists()}")

    # define XSD file
    xsd_file_base_path = Path(os.getcwd(), "..", "..", "xsd_files", "ndmxml-1.0.C-schemas-qualified")
    ndm_master_xsd_path = Path(xsd_file_base_path, "ndmxml-1.0-master.xsd")

    xsd = xmlschema.XMLSchema(str(ndm_master_xsd_path))

    # read XML file
    print(f"XML is valid  : {xsd.is_valid(str(xml_file_path))}")
    # print(xsd.validate(str(xml_file_path)))
    pprint(xsd.to_dict(str(xml_file_path)))
egemenimre commented 4 years ago

Olaylar gelişiyor, xmlschema ekibi "standartta verilen örnek XML dosyası hatalı" dedi iyi mi?

https://github.com/sissaschool/xmlschema/issues/212#issuecomment-727614489

egemenimre commented 4 years ago

Özet:

egemenimre commented 4 years ago

https://sanaregistry.org/r/ndmxml adresindeki şemalar indirilip kullanılınca dosyalar kullanılabilir hale geldi. Ancak şema dosyaları NDM v1.0. Kodlar buna göre güncellendi.