Schematron using XPath 2.0 The attribute speclib:ancillary_product_type must be equal to one of the following values 'Attenuated Total Reflectance Spectroscopy', 'Chemical Composition', 'Differential Scanning Calorimetry', 'Electron Microprobe Analysis', 'Image', 'Modal Mineralogy', 'Raman Spectroscopy', 'Reflectance Spectroscopy', 'Thermogravimetric Analysis', 'Transmission Spectroscopy', 'X-ray Diffraction', 'X-ray Fluorescence'. The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'mrad', 'rad'. The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'mrad', 'rad'. The attribute @unit must be equal to one of the following values 'Pa', 'bar', 'hPa', 'mbar'. The attribute @unit must be equal to one of the following values 'K', 'degC'. The attribute speclib:measurement_geometry_type must be equal to one of the following values 'Biconical', 'Bidirectional', 'Directional Hemispherical', 'Hemispherical Hemispherical', 'Unknown'. The attribute speclib:measurement_type must be equal to one of the following values 'Attenuated Total Reflectance', 'Emission', 'LIBS', 'Raman', 'Reflectance', 'Transmission', 'X-Ray Diffraction', 'X-Ray Fluorescence'. The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'mrad', 'rad'. The attribute speclib:spectral_range_parameter_name must be equal to one of the following values 'Angle', 'Energy', 'Frequency', 'Time', 'Wavelength', 'Wavenumber'. The attribute speclib:material_origin must be equal to one of the following values 'Natural', 'Synthetic'. The attribute speclib:material_state must be equal to one of the following values 'Gas', 'Liquid', 'Solid'. The attribute speclib:material_type must be equal to one of the following values 'Amorphous', 'Consolidated Mixture', 'Element', 'Ice', 'Mineral', 'Organic', 'Rock', 'Single Particle', 'Unconsolidated Mixture'. The attribute speclib:mineral_type must be equal to one of the following values 'Arsenate', 'Borate', 'Carbonate', 'Chromate', 'Cyclosilicate', 'Halide', 'Hydroxide', 'Inosilicate', 'Iodate', 'Native Element', 'Nesosilicate', 'Nitrate', 'Organic Compound', 'Oxide', 'Phosphate', 'Phyllosilicate', 'Sorosilicate', 'Sulfate', 'Sulfide', 'Tectosilicate', 'Unclassified', 'Vanadate'. The attribute speclib:organic_type must be equal to one of the following values 'Inorganic', 'Mixture', 'Organic'. The attribute speclib:rock_type must be equal to one of the following values 'Igneous', 'Metamorphic', 'Sedimentary', 'Unknown'. The attribute speclib:specimen_type must be equal to one of the following values 'Lunar Meteorite', 'Mars Meteorite', 'Other Meteorite', 'Returned Asteroid Sample', 'Returned Lunar Sample', 'Synthetic Sample', 'Terrestrial Sample'. The attribute speclib:synthetic_type must be equal to one of the following values 'Entirely Synthetic', 'From Natural', 'Hardware', 'Natural and Synthetic'. The attribute speclib:volatile_type must be equal to one of the following values 'Poor', 'Rich', 'Unknown'. The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. speclib_classification_rule_solid_material: In the Specimen_Classification class, if material_state is Solid, then the attributes material_type and material_subtype must be present, and material_subtype must include either Particulate or Nonparticulate. speclib:classification_rule_organic_material: In the Specimen_Classification class, if material_type is Organic, then the attribute organic_type must also be Organic. speclib_classification_rule_mineral: In the Specimen_Classification class, if material_type is Mineral, then the attribute mineral_type must be present. speclib_classification_rule_rock: In the Specimen_Classification class, if material_type is Rock, then the attribute rock_type must be present. speclib_classification_rule_material_subtype: In the Specimen_Classification class, if the attribute material_subtype is present, then the attribute material_type must also be present. speclib_classification_rule_mineral_subtype: In the Specimen_Classification class, if the attribute mineral_subtype is present, then the attribute mineral_type must also be present. speclib_classification_rule_rock_subtype: In the Specimen_Classification class, if the attribute rock_subtype is present, then the attribute rock_type must also be present. speclib_classification_rule_synthetic: In the Specimen_Classification class, if material_origin is Synthetic, then the attribute synthetic_type must be present. If material_origin is not Synthetic, then the attribute synthetic type must not be present. speclib_measurement_instrument_rule_0: In the Measurement_Instrument/Internal_Reference class, the value of the reference_type attribute must be "is_instrument". speclib_measurement_parameters_rule_0: speclib:spectral_range_min must be less than or equal to speclib:spectral_range_max. speclib_measurement_segments_rule: The value of the attribute measurement_segments must equal the number of occurrences of the class Measurement_Parameters. speclib_specimen_parameters_rule_0: speclib:specimen_min_size must be less than or equal to speclib:specimen_max_size.