<?xml version="1.0" encoding="UTF-8"?>
  <!-- PDS4 Schematron for Name Space Id:bc_mpo_sim  Version:1.0.0.0 - Mon Sep 22 15:57:48 CEST 2025 -->
  <!-- Generated from the PDS4 Information Model Version 1.22.0.0 - System Build 14.1 -->
  <!-- *** This PDS4 schematron file is an operational deliverable. *** -->
<sch:schema xmlns:sch="http://purl.oclc.org/dsdl/schematron" queryBinding="xslt2">

  <sch:title>Schematron using XPath 2.0</sch:title>

  <sch:ns uri="http://www.w3.org/2001/XMLSchema-instance" prefix="xsi"/>
  <sch:ns uri="http://pds.nasa.gov/pds4/pds/v1" prefix="pds"/>
  <sch:ns uri="http://psa.esa.int/psa/bc/mpo/sim/v1" prefix="bc_mpo_sim"/>

		   <!-- ================================================ -->
		   <!-- NOTE:  There are two types of schematron rules.  -->
		   <!--        One type includes rules written for       -->
		   <!--        specific situations. The other type are   -->
		   <!--        generated to validate enumerated value    -->
		   <!--        lists. These two types of rules have been -->
		   <!--        merged together in the rules below.       -->
		   <!-- ================================================ -->
  <sch:pattern>
    <sch:rule context="bc_mpo_sim:Channel_1_focal_length/bc_mpo_sim:hk_length_param">
      <sch:assert test="@unit = ('AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm')">
        <title>bc_mpo_sim:Channel_1_focal_length/bc_mpo_sim:hk_length_param/bc_mpo_sim:hk_length_param</title>
        The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'.</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:rule context="bc_mpo_sim:Channel_1_fov/bc_mpo_sim:hk_angle_param">
      <sch:assert test="@unit = ('arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad')">
        <title>bc_mpo_sim:Channel_1_fov/bc_mpo_sim:hk_angle_param/bc_mpo_sim:hk_angle_param</title>
        The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'.</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:rule context="bc_mpo_sim:Channel_2_focal_length/bc_mpo_sim:hk_length_param">
      <sch:assert test="@unit = ('AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm')">
        <title>bc_mpo_sim:Channel_2_focal_length/bc_mpo_sim:hk_length_param/bc_mpo_sim:hk_length_param</title>
        The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'.</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:rule context="bc_mpo_sim:Channel_2_fov/bc_mpo_sim:hk_angle_param">
      <sch:assert test="@unit = ('arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad')">
        <title>bc_mpo_sim:Channel_2_fov/bc_mpo_sim:hk_angle_param/bc_mpo_sim:hk_angle_param</title>
        The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'.</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:rule context="bc_mpo_sim:Focal_Length/bc_mpo_sim:hk_length_param">
      <sch:assert test="@unit = ('AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm')">
        <title>bc_mpo_sim:Focal_Length/bc_mpo_sim:hk_length_param/bc_mpo_sim:hk_length_param</title>
        The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'.</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:rule context="bc_mpo_sim:HRIC/bc_mpo_sim:detector_clock">
      <sch:assert test="@unit = ('GHz', 'Hz', 'MHz', 'THz', 'kHz', 'mHz')">
        <title>bc_mpo_sim:HRIC/bc_mpo_sim:detector_clock/bc_mpo_sim:detector_clock</title>
        The attribute @unit must be equal to one of the following values 'GHz', 'Hz', 'MHz', 'THz', 'kHz', 'mHz'.</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:rule context="bc_mpo_sim:HRIC_HK/bc_mpo_sim:pe_voltage">
      <sch:assert test="@unit = ('V', 'mV')">
        <title>bc_mpo_sim:HRIC_HK/bc_mpo_sim:pe_voltage/bc_mpo_sim:pe_voltage</title>
        The attribute @unit must be equal to one of the following values 'V', 'mV'.</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:rule context="bc_mpo_sim:HRIC_HK/bc_mpo_sim:tec_current">
      <sch:assert test="@unit = ('A', 'mA')">
        <title>bc_mpo_sim:HRIC_HK/bc_mpo_sim:tec_current/bc_mpo_sim:tec_current</title>
        The attribute @unit must be equal to one of the following values 'A', 'mA'.</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:rule context="bc_mpo_sim:Ifov/bc_mpo_sim:hk_angle_param">
      <sch:assert test="@unit = ('arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad')">
        <title>bc_mpo_sim:Ifov/bc_mpo_sim:hk_angle_param/bc_mpo_sim:hk_angle_param</title>
        The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'.</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:rule context="bc_mpo_sim:Pixel_Height/bc_mpo_sim:hk_length_param">
      <sch:assert test="@unit = ('AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm')">
        <title>bc_mpo_sim:Pixel_Height/bc_mpo_sim:hk_length_param/bc_mpo_sim:hk_length_param</title>
        The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'.</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:rule context="bc_mpo_sim:Pixel_Width/bc_mpo_sim:hk_length_param">
      <sch:assert test="@unit = ('AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm')">
        <title>bc_mpo_sim:Pixel_Width/bc_mpo_sim:hk_length_param/bc_mpo_sim:hk_length_param</title>
        The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'.</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:rule context="bc_mpo_sim:STC/bc_mpo_sim:detector_clock">
      <sch:assert test="@unit = ('GHz', 'Hz', 'MHz', 'THz', 'kHz', 'mHz')">
        <title>bc_mpo_sim:STC/bc_mpo_sim:detector_clock/bc_mpo_sim:detector_clock</title>
        The attribute @unit must be equal to one of the following values 'GHz', 'Hz', 'MHz', 'THz', 'kHz', 'mHz'.</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:rule context="bc_mpo_sim:STC_HK/bc_mpo_sim:pe_voltage">
      <sch:assert test="@unit = ('V', 'mV')">
        <title>bc_mpo_sim:STC_HK/bc_mpo_sim:pe_voltage/bc_mpo_sim:pe_voltage</title>
        The attribute @unit must be equal to one of the following values 'V', 'mV'.</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:rule context="bc_mpo_sim:STC_HK/bc_mpo_sim:tec_current">
      <sch:assert test="@unit = ('A', 'mA')">
        <title>bc_mpo_sim:STC_HK/bc_mpo_sim:tec_current/bc_mpo_sim:tec_current</title>
        The attribute @unit must be equal to one of the following values 'A', 'mA'.</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:rule context="bc_mpo_sim:VIHI_HK/bc_mpo_sim:tec_current">
      <sch:assert test="@unit = ('A', 'mA')">
        <title>bc_mpo_sim:VIHI_HK/bc_mpo_sim:tec_current/bc_mpo_sim:tec_current</title>
        The attribute @unit must be equal to one of the following values 'A', 'mA'.</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:rule context="bc_mpo_sim:VIHI_HK/bc_mpo_sim:temperature_calib_unit">
      <sch:assert test="@unit = ('K', 'degC')">
        <title>bc_mpo_sim:VIHI_HK/bc_mpo_sim:temperature_calib_unit/bc_mpo_sim:temperature_calib_unit</title>
        The attribute @unit must be equal to one of the following values 'K', 'degC'.</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:rule context="bc_mpo_sim:VIHI_HK/bc_mpo_sim:temperature_fpa1">
      <sch:assert test="@unit = ('K', 'degC')">
        <title>bc_mpo_sim:VIHI_HK/bc_mpo_sim:temperature_fpa1/bc_mpo_sim:temperature_fpa1</title>
        The attribute @unit must be equal to one of the following values 'K', 'degC'.</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:rule context="bc_mpo_sim:VIHI_HK/bc_mpo_sim:temperature_fpa2">
      <sch:assert test="@unit = ('K', 'degC')">
        <title>bc_mpo_sim:VIHI_HK/bc_mpo_sim:temperature_fpa2/bc_mpo_sim:temperature_fpa2</title>
        The attribute @unit must be equal to one of the following values 'K', 'degC'.</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:rule context="bc_mpo_sim:VIHI_HK/bc_mpo_sim:temperature_fpa_package">
      <sch:assert test="@unit = ('K', 'degC')">
        <title>bc_mpo_sim:VIHI_HK/bc_mpo_sim:temperature_fpa_package/bc_mpo_sim:temperature_fpa_package</title>
        The attribute @unit must be equal to one of the following values 'K', 'degC'.</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:rule context="bc_mpo_sim:VIHI_HK/bc_mpo_sim:temperature_pe">
      <sch:assert test="@unit = ('K', 'degC')">
        <title>bc_mpo_sim:VIHI_HK/bc_mpo_sim:temperature_pe/bc_mpo_sim:temperature_pe</title>
        The attribute @unit must be equal to one of the following values 'K', 'degC'.</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:rule context="bc_mpo_sim:VIHI_HK/bc_mpo_sim:temperature_spectrometer">
      <sch:assert test="@unit = ('K', 'degC')">
        <title>bc_mpo_sim:VIHI_HK/bc_mpo_sim:temperature_spectrometer/bc_mpo_sim:temperature_spectrometer</title>
        The attribute @unit must be equal to one of the following values 'K', 'degC'.</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:rule context="bc_mpo_sim:VIHI_HK/bc_mpo_sim:voltage_at_3.3v">
      <sch:assert test="@unit = ('V', 'mV')">
        <title>bc_mpo_sim:VIHI_HK/bc_mpo_sim:voltage_at_3.3v/bc_mpo_sim:voltage_at_3.3v</title>
        The attribute @unit must be equal to one of the following values 'V', 'mV'.</sch:assert>
    </sch:rule>
  </sch:pattern>
</sch:schema>
