Schematron using XPath 2.0
The attribute speclib:ancillary_product_type must be equal to one of the following values 'ATR', 'Chemistry', 'DSC', 'EMP', 'Image', 'Modal Abundance', 'Raman', 'Reflectance', 'TGA', 'Transmission', 'XRD', 'XRF'.
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 'Ice', 'Mineral', 'Rock', 'Single Particle', 'Unconsolidated Mixture'.
The attribute speclib:mineral_type must be equal to one of the following values 'Carbonate', 'Cyclosilicate', 'Halogenide', 'Inosilicate', 'Native Element', 'Nesosilicate', 'Nitrate/Iodate/Borate', 'Organic Compound', 'Oxide', 'Phosphate', 'Phyllosilicate', 'Sorosilicate', 'Sulfate', 'Sulfide', 'Tektosilicate', 'Unclassified'.
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'.
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'.
In the Specimen_Classification class, if the attribute material_subtype is present,
then the attribute material_type must also be present.
In the Specimen_Classification class, if material_type is Mineral,
then the attribute mineral_type must be present.
In the Specimen_Classification class, if the attribute mineral_subtype is present,
then the attribute mineral_type must also be present.
In the Specimen_Classification class, if material_type is Unconsolidated Mixture,
then the attribute material_subtype must be present and must include Nonparticulate.
In the Specimen_Classification class, if material_type is Rock,
then the attribute rock_type must be present.
In the Specimen_Classification class, if the attribute rock_subtype is present,
then the attribute rock_type must also be present.
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.
In the Specimen_Classification class, if material_origin is Synthetic,
then the attribute synthetic_type must be present.