dcc 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +16 -0
- data/.rspec +3 -0
- data/.rubocop.yml +16 -0
- data/.rubocop_todo.yml +10 -0
- data/CHANGELOG.adoc +54 -0
- data/CONTRIBUTING.adoc +64 -0
- data/Gemfile +25 -0
- data/LICENSE +21 -0
- data/README.adoc +69 -0
- data/Rakefile +13 -0
- data/dcc.gemspec +41 -0
- data/docs/cli-reference.adoc +67 -0
- data/docs/getting-started.adoc +117 -0
- data/docs/schema-versions.adoc +65 -0
- data/examples/build_minimal_dcc.rb +23 -0
- data/examples/convert_all_formats.rb +19 -0
- data/examples/parse_and_inspect.rb +19 -0
- data/examples/quantity_math_demo.rb +32 -0
- data/examples/validate_full.rb +27 -0
- data/exe/dcc +7 -0
- data/lib/dcc/base/administrative_data.rb +43 -0
- data/lib/dcc/base/byte_data.rb +36 -0
- data/lib/dcc/base/calibration_laboratory.rb +29 -0
- data/lib/dcc/base/comment.rb +23 -0
- data/lib/dcc/base/condition.rb +34 -0
- data/lib/dcc/base/contact.rb +38 -0
- data/lib/dcc/base/contact_not_strict.rb +38 -0
- data/lib/dcc/base/core_data.rb +44 -0
- data/lib/dcc/base/data.rb +42 -0
- data/lib/dcc/base/digital_calibration_certificate.rb +32 -0
- data/lib/dcc/base/equipment_class.rb +24 -0
- data/lib/dcc/base/formula.rb +33 -0
- data/lib/dcc/base/hash_type.rb +34 -0
- data/lib/dcc/base/identification.rb +27 -0
- data/lib/dcc/base/identifications.rb +27 -0
- data/lib/dcc/base/influence_condition.rb +16 -0
- data/lib/dcc/base/influence_condition_list.rb +40 -0
- data/lib/dcc/base/item.rb +38 -0
- data/lib/dcc/base/item_list.rb +38 -0
- data/lib/dcc/base/list.rb +44 -0
- data/lib/dcc/base/location.rb +36 -0
- data/lib/dcc/base/measurement_meta_data.rb +15 -0
- data/lib/dcc/base/measurement_meta_data_list.rb +27 -0
- data/lib/dcc/base/measurement_result.rb +41 -0
- data/lib/dcc/base/measurement_result_list.rb +28 -0
- data/lib/dcc/base/measuring_equipment.rb +41 -0
- data/lib/dcc/base/measuring_equipment_list.rb +38 -0
- data/lib/dcc/base/quantity.rb +61 -0
- data/lib/dcc/base/ref_type_definition.rb +36 -0
- data/lib/dcc/base/ref_type_definition_list.rb +21 -0
- data/lib/dcc/base/resp_person.rb +38 -0
- data/lib/dcc/base/resp_person_list.rb +27 -0
- data/lib/dcc/base/result.rb +31 -0
- data/lib/dcc/base/result_list.rb +27 -0
- data/lib/dcc/base/rich_content.rb +34 -0
- data/lib/dcc/base/software.rb +35 -0
- data/lib/dcc/base/software_list.rb +27 -0
- data/lib/dcc/base/statement.rb +50 -0
- data/lib/dcc/base/statement_list.rb +27 -0
- data/lib/dcc/base/string_with_lang.rb +24 -0
- data/lib/dcc/base/text.rb +33 -0
- data/lib/dcc/base/used_method.rb +31 -0
- data/lib/dcc/base/used_method_list.rb +27 -0
- data/lib/dcc/base/xml_blob.rb +20 -0
- data/lib/dcc/base.rb +58 -0
- data/lib/dcc/builder/dsl.rb +10 -0
- data/lib/dcc/builder/session.rb +170 -0
- data/lib/dcc/builder.rb +34 -0
- data/lib/dcc/cli/cli.rb +149 -0
- data/lib/dcc/cli/formatters.rb +77 -0
- data/lib/dcc/cli.rb +7 -0
- data/lib/dcc/common_elements.rb +20 -0
- data/lib/dcc/context_configuration.rb +167 -0
- data/lib/dcc/context_options.rb +47 -0
- data/lib/dcc/convert/csv.rb +129 -0
- data/lib/dcc/convert/html.rb +127 -0
- data/lib/dcc/convert/json.rb +62 -0
- data/lib/dcc/convert/result.rb +51 -0
- data/lib/dcc/convert/yaml.rb +21 -0
- data/lib/dcc/convert.rb +14 -0
- data/lib/dcc/diff/change.rb +21 -0
- data/lib/dcc/diff/result.rb +58 -0
- data/lib/dcc/diff.rb +83 -0
- data/lib/dcc/error.rb +54 -0
- data/lib/dcc/extract/file.rb +143 -0
- data/lib/dcc/extract/ring.rb +28 -0
- data/lib/dcc/extract.rb +9 -0
- data/lib/dcc/i18n/text_lookup.rb +67 -0
- data/lib/dcc/i18n.rb +12 -0
- data/lib/dcc/inspect/report.rb +139 -0
- data/lib/dcc/inspect.rb +9 -0
- data/lib/dcc/migrate.rb +41 -0
- data/lib/dcc/namespace/dcc.rb +30 -0
- data/lib/dcc/namespace/dsig.rb +15 -0
- data/lib/dcc/namespace/math_ml.rb +14 -0
- data/lib/dcc/namespace/qudt.rb +15 -0
- data/lib/dcc/namespace/si.rb +26 -0
- data/lib/dcc/namespace.rb +18 -0
- data/lib/dcc/plugin/registry.rb +45 -0
- data/lib/dcc/plugin.rb +42 -0
- data/lib/dcc/quantity_format/formatter.rb +90 -0
- data/lib/dcc/quantity_format.rb +10 -0
- data/lib/dcc/quantity_math/quantity.rb +46 -0
- data/lib/dcc/quantity_math/real.rb +116 -0
- data/lib/dcc/quantity_math.rb +14 -0
- data/lib/dcc/schema/resources/dcc/dsi/v1.0.1.xsd +415 -0
- data/lib/dcc/schema/resources/dcc/dsi/v1.3.0.xsd +814 -0
- data/lib/dcc/schema/resources/dcc/dsi/v1.3.1.xsd +814 -0
- data/lib/dcc/schema/resources/dcc/dsi/v2.0.0.xsd +869 -0
- data/lib/dcc/schema/resources/dcc/dsi/v2.1.0.xsd +1031 -0
- data/lib/dcc/schema/resources/dcc/dsi/v2.2.1.xsd +1574 -0
- data/lib/dcc/schema/resources/dcc/qudt/v2.2.1.xsd +44 -0
- data/lib/dcc/schema/resources/dcc/v2.1.0/dcc.xsd +650 -0
- data/lib/dcc/schema/resources/dcc/v2.1.1/dcc.xsd +669 -0
- data/lib/dcc/schema/resources/dcc/v2.2.0/dcc.xsd +730 -0
- data/lib/dcc/schema/resources/dcc/v2.3.0/dcc.xsd +708 -0
- data/lib/dcc/schema/resources/dcc/v2.4.0/dcc.xsd +725 -0
- data/lib/dcc/schema/resources/dcc/v3.0.0/dcc.xsd +749 -0
- data/lib/dcc/schema/resources/dcc/v3.1.0/dcc.xsd +843 -0
- data/lib/dcc/schema/resources/dcc/v3.1.1/dcc.xsd +843 -0
- data/lib/dcc/schema/resources/dcc/v3.1.2/dcc.xsd +844 -0
- data/lib/dcc/schema/resources/dcc/v3.2.0/dcc.xsd +940 -0
- data/lib/dcc/schema/resources/dcc/v3.2.1/dcc.xsd +963 -0
- data/lib/dcc/schema/resources/dcc/v3.3.0/dcc.xsd +1008 -0
- data/lib/dcc/schema/resources/dcc/xmldsig-core-schema.xsd +312 -0
- data/lib/dcc/schema/resources/dsi/qudt/v2.2.1.xsd +44 -0
- data/lib/dcc/schema/resources/dsi/v1.0.1/SI_Format.xsd +415 -0
- data/lib/dcc/schema/resources/dsi/v1.3.0/SI_Format.xsd +814 -0
- data/lib/dcc/schema/resources/dsi/v1.3.1/SI_Format.xsd +814 -0
- data/lib/dcc/schema/resources/dsi/v2.0.0/SI_Format.xsd +869 -0
- data/lib/dcc/schema/resources/dsi/v2.1.0/SI_Format.xsd +1031 -0
- data/lib/dcc/schema/resources/dsi/v2.2.1/SI_Format.xsd +1574 -0
- data/lib/dcc/schema/resources/qudt/qudt.xsd +44 -0
- data/lib/dcc/schema/resources/schematron/dcc.sch +523 -0
- data/lib/dcc/schema/resources/schematron/dcc.svrl +2302 -0
- data/lib/dcc/schema/resources/xmldsig/xmldsig-core-schema.xsd +312 -0
- data/lib/dcc/schema/version.rb +94 -0
- data/lib/dcc/schema.rb +35 -0
- data/lib/dcc/server/app.rb +133 -0
- data/lib/dcc/server/storage/entry.rb +15 -0
- data/lib/dcc/server/storage/memory.rb +57 -0
- data/lib/dcc/server/storage.rb +13 -0
- data/lib/dcc/server.rb +33 -0
- data/lib/dcc/si/base/complex.rb +43 -0
- data/lib/dcc/si/base/complex_list_xml_list.rb +39 -0
- data/lib/dcc/si/base/constant.rb +39 -0
- data/lib/dcc/si/base/coverage_interval_mu.rb +31 -0
- data/lib/dcc/si/base/expanded_mu.rb +29 -0
- data/lib/dcc/si/base/expanded_unc_xml_list.rb +30 -0
- data/lib/dcc/si/base/hybrid.rb +42 -0
- data/lib/dcc/si/base/measurement_uncertainty_univariate.rb +28 -0
- data/lib/dcc/si/base/real.rb +48 -0
- data/lib/dcc/si/base/real_list_xml_list.rb +45 -0
- data/lib/dcc/si/base/si_list.rb +37 -0
- data/lib/dcc/si/base/standard_mu.rb +25 -0
- data/lib/dcc/si/base.rb +24 -0
- data/lib/dcc/si/common_elements.rb +13 -0
- data/lib/dcc/si/namespace.rb +7 -0
- data/lib/dcc/si/v1/common_elements.rb +13 -0
- data/lib/dcc/si/v1/complex.rb +8 -0
- data/lib/dcc/si/v1/complex_list_xml_list.rb +8 -0
- data/lib/dcc/si/v1/configuration.rb +13 -0
- data/lib/dcc/si/v1/constant.rb +8 -0
- data/lib/dcc/si/v1/coverage_interval_mu.rb +8 -0
- data/lib/dcc/si/v1/expanded_mu.rb +8 -0
- data/lib/dcc/si/v1/expanded_unc.rb +23 -0
- data/lib/dcc/si/v1/expanded_unc_xml_list.rb +8 -0
- data/lib/dcc/si/v1/hybrid.rb +8 -0
- data/lib/dcc/si/v1/measurement_uncertainty_univariate.rb +8 -0
- data/lib/dcc/si/v1/namespace.rb +9 -0
- data/lib/dcc/si/v1/real.rb +8 -0
- data/lib/dcc/si/v1/real_list_xml_list.rb +8 -0
- data/lib/dcc/si/v1/si_list.rb +8 -0
- data/lib/dcc/si/v1/standard_mu.rb +8 -0
- data/lib/dcc/si/v1.rb +46 -0
- data/lib/dcc/si/v2/common_elements.rb +13 -0
- data/lib/dcc/si/v2/complex.rb +8 -0
- data/lib/dcc/si/v2/complex_list_xml_list.rb +8 -0
- data/lib/dcc/si/v2/configuration.rb +13 -0
- data/lib/dcc/si/v2/constant.rb +8 -0
- data/lib/dcc/si/v2/coverage_interval_mu.rb +8 -0
- data/lib/dcc/si/v2/coverage_interval_mu_xml_list.rb +24 -0
- data/lib/dcc/si/v2/expanded_mu.rb +8 -0
- data/lib/dcc/si/v2/expanded_mu_xml_list.rb +22 -0
- data/lib/dcc/si/v2/expanded_unc_xml_list.rb +8 -0
- data/lib/dcc/si/v2/hybrid.rb +8 -0
- data/lib/dcc/si/v2/measurement_uncertainty_univariate.rb +8 -0
- data/lib/dcc/si/v2/namespace.rb +9 -0
- data/lib/dcc/si/v2/real.rb +8 -0
- data/lib/dcc/si/v2/real_list_xml_list.rb +8 -0
- data/lib/dcc/si/v2/si_list.rb +8 -0
- data/lib/dcc/si/v2/standard_mu.rb +8 -0
- data/lib/dcc/si/v2/standard_mu_xml_list.rb +18 -0
- data/lib/dcc/si/v2.rb +49 -0
- data/lib/dcc/si.rb +34 -0
- data/lib/dcc/signature/result.rb +43 -0
- data/lib/dcc/signature/signer.rb +36 -0
- data/lib/dcc/signature/verifier.rb +41 -0
- data/lib/dcc/signature.rb +13 -0
- data/lib/dcc/transform/result.rb +24 -0
- data/lib/dcc/transform/xslt.rb +72 -0
- data/lib/dcc/transform.rb +12 -0
- data/lib/dcc/type/base64_binary.rb +55 -0
- data/lib/dcc/type/decimal_xml_list.rb +47 -0
- data/lib/dcc/type/iso_country_code.rb +23 -0
- data/lib/dcc/type/iso_language_code.rb +23 -0
- data/lib/dcc/type/schema_version.rb +37 -0
- data/lib/dcc/type/si_unit.rb +26 -0
- data/lib/dcc/type.rb +16 -0
- data/lib/dcc/type_guards.rb +140 -0
- data/lib/dcc/v2/administrative_data.rb +8 -0
- data/lib/dcc/v2/byte_data.rb +8 -0
- data/lib/dcc/v2/calibration_laboratory.rb +8 -0
- data/lib/dcc/v2/comment.rb +8 -0
- data/lib/dcc/v2/common_elements.rb +13 -0
- data/lib/dcc/v2/condition.rb +8 -0
- data/lib/dcc/v2/configuration.rb +17 -0
- data/lib/dcc/v2/contact.rb +8 -0
- data/lib/dcc/v2/contact_not_strict.rb +8 -0
- data/lib/dcc/v2/core_data.rb +8 -0
- data/lib/dcc/v2/data.rb +8 -0
- data/lib/dcc/v2/digital_calibration_certificate.rb +8 -0
- data/lib/dcc/v2/equipment_class.rb +8 -0
- data/lib/dcc/v2/formula.rb +8 -0
- data/lib/dcc/v2/hash_type.rb +8 -0
- data/lib/dcc/v2/identification.rb +8 -0
- data/lib/dcc/v2/identifications.rb +8 -0
- data/lib/dcc/v2/influence_condition.rb +7 -0
- data/lib/dcc/v2/influence_condition_list.rb +8 -0
- data/lib/dcc/v2/item.rb +8 -0
- data/lib/dcc/v2/item_list.rb +8 -0
- data/lib/dcc/v2/list.rb +8 -0
- data/lib/dcc/v2/location.rb +8 -0
- data/lib/dcc/v2/measurement_meta_data.rb +8 -0
- data/lib/dcc/v2/measurement_meta_data_list.rb +8 -0
- data/lib/dcc/v2/measurement_result.rb +8 -0
- data/lib/dcc/v2/measurement_result_list.rb +8 -0
- data/lib/dcc/v2/measuring_equipment.rb +8 -0
- data/lib/dcc/v2/measuring_equipment_list.rb +8 -0
- data/lib/dcc/v2/namespace.rb +8 -0
- data/lib/dcc/v2/quantity.rb +49 -0
- data/lib/dcc/v2/ref_type_definition.rb +11 -0
- data/lib/dcc/v2/ref_type_definition_list.rb +15 -0
- data/lib/dcc/v2/resp_person.rb +8 -0
- data/lib/dcc/v2/resp_person_list.rb +8 -0
- data/lib/dcc/v2/result.rb +8 -0
- data/lib/dcc/v2/result_list.rb +8 -0
- data/lib/dcc/v2/rich_content.rb +12 -0
- data/lib/dcc/v2/software.rb +8 -0
- data/lib/dcc/v2/software_list.rb +8 -0
- data/lib/dcc/v2/statement.rb +8 -0
- data/lib/dcc/v2/statement_list.rb +8 -0
- data/lib/dcc/v2/string_with_lang.rb +8 -0
- data/lib/dcc/v2/text.rb +8 -0
- data/lib/dcc/v2/used_method.rb +8 -0
- data/lib/dcc/v2/used_method_list.rb +8 -0
- data/lib/dcc/v2/xml_blob.rb +8 -0
- data/lib/dcc/v2.rb +84 -0
- data/lib/dcc/v3/administrative_data.rb +8 -0
- data/lib/dcc/v3/byte_data.rb +8 -0
- data/lib/dcc/v3/calibration_laboratory.rb +8 -0
- data/lib/dcc/v3/comment.rb +8 -0
- data/lib/dcc/v3/common_elements.rb +11 -0
- data/lib/dcc/v3/condition.rb +8 -0
- data/lib/dcc/v3/configuration.rb +17 -0
- data/lib/dcc/v3/contact.rb +8 -0
- data/lib/dcc/v3/contact_not_strict.rb +8 -0
- data/lib/dcc/v3/core_data.rb +8 -0
- data/lib/dcc/v3/data.rb +8 -0
- data/lib/dcc/v3/digital_calibration_certificate.rb +8 -0
- data/lib/dcc/v3/equipment_class.rb +8 -0
- data/lib/dcc/v3/formula.rb +8 -0
- data/lib/dcc/v3/hash_type.rb +8 -0
- data/lib/dcc/v3/identification.rb +8 -0
- data/lib/dcc/v3/identifications.rb +8 -0
- data/lib/dcc/v3/influence_condition.rb +7 -0
- data/lib/dcc/v3/influence_condition_list.rb +8 -0
- data/lib/dcc/v3/item.rb +8 -0
- data/lib/dcc/v3/item_list.rb +8 -0
- data/lib/dcc/v3/list.rb +8 -0
- data/lib/dcc/v3/location.rb +8 -0
- data/lib/dcc/v3/measurement_meta_data.rb +8 -0
- data/lib/dcc/v3/measurement_meta_data_list.rb +8 -0
- data/lib/dcc/v3/measurement_result.rb +8 -0
- data/lib/dcc/v3/measurement_result_list.rb +8 -0
- data/lib/dcc/v3/measuring_equipment.rb +8 -0
- data/lib/dcc/v3/measuring_equipment_list.rb +8 -0
- data/lib/dcc/v3/namespace.rb +7 -0
- data/lib/dcc/v3/quantity.rb +49 -0
- data/lib/dcc/v3/ref_type_definition.rb +8 -0
- data/lib/dcc/v3/ref_type_definition_list.rb +8 -0
- data/lib/dcc/v3/resp_person.rb +8 -0
- data/lib/dcc/v3/resp_person_list.rb +8 -0
- data/lib/dcc/v3/result.rb +8 -0
- data/lib/dcc/v3/result_list.rb +8 -0
- data/lib/dcc/v3/rich_content.rb +8 -0
- data/lib/dcc/v3/software.rb +8 -0
- data/lib/dcc/v3/software_list.rb +8 -0
- data/lib/dcc/v3/statement.rb +8 -0
- data/lib/dcc/v3/statement_list.rb +8 -0
- data/lib/dcc/v3/string_with_lang.rb +8 -0
- data/lib/dcc/v3/text.rb +8 -0
- data/lib/dcc/v3/used_method.rb +8 -0
- data/lib/dcc/v3/used_method_list.rb +8 -0
- data/lib/dcc/v3/xml_blob.rb +8 -0
- data/lib/dcc/v3.rb +111 -0
- data/lib/dcc/validate/business_rules.rb +121 -0
- data/lib/dcc/validate/issue.rb +56 -0
- data/lib/dcc/validate/result.rb +105 -0
- data/lib/dcc/validate/schematron/profile.rb +64 -0
- data/lib/dcc/validate/schematron/rule.rb +49 -0
- data/lib/dcc/validate/schematron/rules/administrative_data_completeness.rb +42 -0
- data/lib/dcc/validate/schematron/rules/base.rb +15 -0
- data/lib/dcc/validate/schematron/rules/date_range_check.rb +41 -0
- data/lib/dcc/validate/schematron/rules/id_refid_linking.rb +61 -0
- data/lib/dcc/validate/schematron/rules/influence_conditions_placement.rb +58 -0
- data/lib/dcc/validate/schematron/rules/iso_code_validation.rb +53 -0
- data/lib/dcc/validate/schematron/rules/language_code_dedup.rb +39 -0
- data/lib/dcc/validate/schematron/rules/non_si_declaration.rb +82 -0
- data/lib/dcc/validate/schematron/rules/release_format_check.rb +44 -0
- data/lib/dcc/validate/schematron/rules/schema_version_check.rb +31 -0
- data/lib/dcc/validate/schematron/rules/uncertainty_consistency.rb +58 -0
- data/lib/dcc/validate/schematron/rules/unit_format_check.rb +74 -0
- data/lib/dcc/validate/schematron/rules/used_methods_placement.rb +65 -0
- data/lib/dcc/validate/schematron/rules/used_software_placement.rb +43 -0
- data/lib/dcc/validate/schematron/rules/xml_list_spacing.rb +42 -0
- data/lib/dcc/validate/schematron/rules.rb +30 -0
- data/lib/dcc/validate/schematron.rb +22 -0
- data/lib/dcc/validate/severity.rb +39 -0
- data/lib/dcc/validate/xsd.rb +97 -0
- data/lib/dcc/validate.rb +15 -0
- data/lib/dcc/version.rb +5 -0
- data/lib/dcc/versioned_parser.rb +48 -0
- data/lib/dcc.rb +141 -0
- metadata +425 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<xs:schema version="2.2.1" xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
|
3
|
+
targetNamespace="http://qudt.org/vocab/"
|
|
4
|
+
xmlns:qudt="http://qudt.org/vocab/"
|
|
5
|
+
elementFormDefault="qualified">
|
|
6
|
+
|
|
7
|
+
<xs:annotation>
|
|
8
|
+
<xs:documentation xml:lang="en">
|
|
9
|
+
D-SI - Digital System of Units
|
|
10
|
+
Copyright (c) 2018 - 2024 Physikalisch-Technische Bundesanstalt (PTB), all rights reserved.
|
|
11
|
+
|
|
12
|
+
This XML Scheme Definition (XSD) is free software: you can redistribute it and/or modify
|
|
13
|
+
it under the terms of the GNU Lesser General Public License as published by
|
|
14
|
+
the Free Software Foundation, version 3 of the License.
|
|
15
|
+
|
|
16
|
+
This XSD is distributed in the hope that it will be useful,
|
|
17
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
18
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
19
|
+
GNU Lesser General Public License for more details.
|
|
20
|
+
|
|
21
|
+
You should have received a copy of the GNU Lesser General Public License
|
|
22
|
+
along with this XSD. If not, see http://www.gnu.org/licenses.
|
|
23
|
+
|
|
24
|
+
CONTACT: daniel.hutzschenreuter@ptb.de
|
|
25
|
+
DEVELOPMENT: https://gitlab1.ptb.de/d-ptb/d-si/xsd-d-si
|
|
26
|
+
D-SI XSD VERSION: 2.2.1
|
|
27
|
+
RELEASE DATA: 2024-06-21
|
|
28
|
+
DOI: 10.5281/zenodo.3366901
|
|
29
|
+
</xs:documentation>
|
|
30
|
+
<xs:documentation xml:lang="en">
|
|
31
|
+
ACKNOWLEDGEMENT:
|
|
32
|
+
This schema was developped to link QUDT type entities to the D-SI XML implementation.
|
|
33
|
+
Please, visit qudt.org for information about the QUDT web ontology.
|
|
34
|
+
To access the QUDT entries for quantity kinds from the XML, you can use the following PIDs:
|
|
35
|
+
https://qudt.org/vocab/quantitykind/Length (web page)
|
|
36
|
+
https://qudt.org/vocab/quantitykind/Length.ttl (machine-readable TURTLE data)
|
|
37
|
+
</xs:documentation>
|
|
38
|
+
</xs:annotation>
|
|
39
|
+
|
|
40
|
+
<xs:simpleType name="quantitykind">
|
|
41
|
+
<xs:restriction base="xs:string"/>
|
|
42
|
+
</xs:simpleType>
|
|
43
|
+
|
|
44
|
+
</xs:schema>
|
|
@@ -0,0 +1,523 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<sch:schema xmlns:sch="http://purl.oclc.org/dsdl/schematron" queryBinding="xslt2"
|
|
3
|
+
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
|
4
|
+
xmlns:sqf="http://www.schematron-quickfix.com/validator/process">
|
|
5
|
+
|
|
6
|
+
<sch:ns uri="https://ptb.de/dcc" prefix="dcc"/>
|
|
7
|
+
<sch:ns uri="https://ptb.de/si" prefix="si"/>
|
|
8
|
+
|
|
9
|
+
<sch:pattern>
|
|
10
|
+
<xsl:comment>
|
|
11
|
+
This pattern validates the placement of dcc:usedMethods elements within a DCC document.
|
|
12
|
+
Methods can be declared globally under dcc:measurementResult, locally under dcc:list, or individually under
|
|
13
|
+
each dcc:quantity element.
|
|
14
|
+
</xsl:comment>
|
|
15
|
+
|
|
16
|
+
<sch:rule context="//dcc:measurementResult">
|
|
17
|
+
<sch:report role="information" test="count(dcc:usedMethods)">
|
|
18
|
+
Global measurement methods declared for all results in this measurement result section.
|
|
19
|
+
</sch:report>
|
|
20
|
+
</sch:rule>
|
|
21
|
+
|
|
22
|
+
<sch:rule context="//dcc:measurementResults//dcc:list[not(ancestor::dcc:metaData)]">
|
|
23
|
+
<sch:report role="information" test="count(dcc:usedMethods)">
|
|
24
|
+
Local measurement methods declared for all quantities in this list.
|
|
25
|
+
</sch:report>
|
|
26
|
+
<sch:report role="error"
|
|
27
|
+
test="count(dcc:usedMethods)=0 and count(ancestor::dcc:measurementResult/dcc:usedMethods)=0 and count(dcc:quantity)>count(dcc:quantity/dcc:usedMethods)">
|
|
28
|
+
Missing measurement methods: No methods declared globally, locally, or for individual quantities. Each
|
|
29
|
+
quantity must have associated used methods declared.
|
|
30
|
+
</sch:report>
|
|
31
|
+
</sch:rule>
|
|
32
|
+
|
|
33
|
+
<sch:rule context="//dcc:result/dcc:data/dcc:quantity">
|
|
34
|
+
<sch:report role="information" test="count(dcc:usedMethods)">
|
|
35
|
+
Local measurement methods declared for this specific quantity.
|
|
36
|
+
</sch:report>
|
|
37
|
+
<sch:report role="error"
|
|
38
|
+
test="count(dcc:usedMethods)=0 and count(ancestor::dcc:measurementResult/dcc:usedMethods)=0">
|
|
39
|
+
Missing measurement methods: No methods declared globally or locally for this quantity. Measurement
|
|
40
|
+
methods are required.
|
|
41
|
+
</sch:report>
|
|
42
|
+
</sch:rule>
|
|
43
|
+
|
|
44
|
+
<sch:rule context="//dcc:measurementResults//dcc:list[not(ancestor::dcc:metaData)]/dcc:quantity">
|
|
45
|
+
<sch:report role="information" test="count(dcc:usedMethods)">
|
|
46
|
+
Local measurement methods declared for this specific quantity within a list.
|
|
47
|
+
</sch:report>
|
|
48
|
+
</sch:rule>
|
|
49
|
+
</sch:pattern>
|
|
50
|
+
|
|
51
|
+
<sch:pattern>
|
|
52
|
+
<xsl:comment>
|
|
53
|
+
This pattern validates the placement of dcc:usedSoftware elements within a DCC document.
|
|
54
|
+
Software can be declared globally under dcc:measurementResult, locally under dcc:list, or individually under
|
|
55
|
+
each dcc:quantity element.
|
|
56
|
+
</xsl:comment>
|
|
57
|
+
|
|
58
|
+
<sch:rule context="//dcc:measurementResult">
|
|
59
|
+
<sch:report role="information" test="count(dcc:usedSoftware)">
|
|
60
|
+
Global software declaration for all results in this measurement result section.
|
|
61
|
+
</sch:report>
|
|
62
|
+
</sch:rule>
|
|
63
|
+
|
|
64
|
+
<sch:rule context="//dcc:measurementResults//dcc:list[not(ancestor::dcc:metaData)]">
|
|
65
|
+
<sch:report role="information" test="count(dcc:usedSoftware)">
|
|
66
|
+
Local software declaration for all quantities in this list.
|
|
67
|
+
</sch:report>
|
|
68
|
+
<sch:report role="warning"
|
|
69
|
+
test="count(dcc:usedSoftware)=0 and count(ancestor::dcc:measurementResult/dcc:usedSoftware)=0 and count(dcc:quantity)>count(dcc:quantity/dcc:usedSoftware)">
|
|
70
|
+
Software information missing: Consider declaring software used during measurement process (globally,
|
|
71
|
+
locally, or per quantity).
|
|
72
|
+
</sch:report>
|
|
73
|
+
</sch:rule>
|
|
74
|
+
|
|
75
|
+
<sch:rule context="//dcc:result/dcc:data/dcc:quantity">
|
|
76
|
+
<sch:report role="information" test="count(dcc:usedSoftware)">
|
|
77
|
+
Local software declaration for this specific quantity.
|
|
78
|
+
</sch:report>
|
|
79
|
+
<sch:report role="warning"
|
|
80
|
+
test="count(dcc:usedSoftware)=0 and count(ancestor::dcc:measurementResult/dcc:usedSoftware)=0">
|
|
81
|
+
Software information missing: Consider declaring software used for this quantity measurement.
|
|
82
|
+
</sch:report>
|
|
83
|
+
</sch:rule>
|
|
84
|
+
|
|
85
|
+
<sch:rule context="//dcc:measurementResults//dcc:list[not(ancestor::dcc:metaData)]/dcc:quantity">
|
|
86
|
+
<sch:report role="information" test="count(dcc:usedSoftware)">
|
|
87
|
+
Local software declaration for this specific quantity within a list.
|
|
88
|
+
</sch:report>
|
|
89
|
+
</sch:rule>
|
|
90
|
+
</sch:pattern>
|
|
91
|
+
|
|
92
|
+
<sch:pattern>
|
|
93
|
+
<xsl:comment>
|
|
94
|
+
This pattern validates the placement of dcc:influenceConditions elements within a DCC document.
|
|
95
|
+
Influence conditions can be declared globally under dcc:measurementResult, locally under dcc:list, or
|
|
96
|
+
individually under each dcc:quantity element.
|
|
97
|
+
</xsl:comment>
|
|
98
|
+
|
|
99
|
+
<sch:rule context="//dcc:measurementResult">
|
|
100
|
+
<sch:report role="information" test="count(dcc:influenceConditions)">
|
|
101
|
+
Global influence conditions declared for all results in this measurement result section.
|
|
102
|
+
</sch:report>
|
|
103
|
+
</sch:rule>
|
|
104
|
+
|
|
105
|
+
<sch:rule context="//dcc:measurementResults//dcc:list[not(ancestor::dcc:metaData)]">
|
|
106
|
+
<sch:report role="information" test="count(dcc:influenceConditions)">
|
|
107
|
+
Local influence conditions declared for all quantities in this list.
|
|
108
|
+
</sch:report>
|
|
109
|
+
<sch:report role="error"
|
|
110
|
+
test="count(dcc:influenceConditions)=0 and count(ancestor::dcc:measurementResult/dcc:influenceConditions)=0 and count(dcc:quantity)>count(dcc:quantity/dcc:influenceConditions)">
|
|
111
|
+
Missing influence conditions: No conditions declared globally, locally, or for individual quantities.
|
|
112
|
+
Each quantity must have associated influence conditions.
|
|
113
|
+
</sch:report>
|
|
114
|
+
</sch:rule>
|
|
115
|
+
|
|
116
|
+
<sch:rule context="//dcc:result/dcc:data/dcc:quantity">
|
|
117
|
+
<sch:report role="information" test="count(dcc:influenceConditions)">
|
|
118
|
+
Local influence conditions declared for this specific quantity.
|
|
119
|
+
</sch:report>
|
|
120
|
+
<sch:report role="error"
|
|
121
|
+
test="count(dcc:influenceConditions)=0 and count(ancestor::dcc:measurementResult/dcc:influenceConditions)=0">
|
|
122
|
+
Missing influence conditions: No conditions declared globally or locally for this quantity. Influence
|
|
123
|
+
conditions are required.
|
|
124
|
+
</sch:report>
|
|
125
|
+
</sch:rule>
|
|
126
|
+
|
|
127
|
+
<sch:rule context="//dcc:measurementResults//dcc:list[not(ancestor::dcc:metaData)]/dcc:quantity">
|
|
128
|
+
<sch:report role="information" test="count(dcc:influenceConditions)">
|
|
129
|
+
Local influence conditions declared for this specific quantity within a list.
|
|
130
|
+
</sch:report>
|
|
131
|
+
</sch:rule>
|
|
132
|
+
</sch:pattern>
|
|
133
|
+
|
|
134
|
+
<sch:pattern>
|
|
135
|
+
<xsl:comment>
|
|
136
|
+
This pattern validates the DCC schema version to ensure the latest version is being used.
|
|
137
|
+
</xsl:comment>
|
|
138
|
+
|
|
139
|
+
<sch:rule context="dcc:digitalCalibrationCertificate">
|
|
140
|
+
<sch:assert role="warning" test="@schemaVersion='3.3.0'">
|
|
141
|
+
Schema version outdated: You are using schema version '<sch:value-of select="@schemaVersion"/>'. The
|
|
142
|
+
latest available version is 3.3.0. Consider upgrading to ensure compatibility.
|
|
143
|
+
</sch:assert>
|
|
144
|
+
</sch:rule>
|
|
145
|
+
</sch:pattern>
|
|
146
|
+
|
|
147
|
+
<sch:pattern>
|
|
148
|
+
<xsl:comment>
|
|
149
|
+
This pattern validates that all @id and @refId attributes are properly linked within the document.
|
|
150
|
+
</xsl:comment>
|
|
151
|
+
|
|
152
|
+
<sch:let name="refIds" value="//@refId"/>
|
|
153
|
+
<sch:let name="ids" value="//@id"/>
|
|
154
|
+
|
|
155
|
+
<sch:rule context="//@id">
|
|
156
|
+
<sch:assert role="warning" test="some $refId in $refIds satisfies tokenize($refId, ' ') = .">
|
|
157
|
+
Unlinked ID: The ID '<sch:value-of select="."/>' is not referenced by any refId attribute. Every ID
|
|
158
|
+
should be referenced.
|
|
159
|
+
</sch:assert>
|
|
160
|
+
</sch:rule>
|
|
161
|
+
|
|
162
|
+
<sch:rule context="//@refId">
|
|
163
|
+
<sch:assert role="error" test="some $refId in tokenize(., ' ') satisfies $ids = $refId">
|
|
164
|
+
Invalid reference ID: The refId '<sch:value-of select="."/>' does not correspond to any existing ID in
|
|
165
|
+
the document.
|
|
166
|
+
</sch:assert>
|
|
167
|
+
</sch:rule>
|
|
168
|
+
</sch:pattern>
|
|
169
|
+
|
|
170
|
+
<sch:pattern>
|
|
171
|
+
<xsl:comment>
|
|
172
|
+
This pattern validates language attributes in dcc:content elements against declared language codes.
|
|
173
|
+
</xsl:comment>
|
|
174
|
+
|
|
175
|
+
<sch:let name="langs" value="//dcc:usedLangCodeISO639_1"/>
|
|
176
|
+
<sch:let name="langCount" value="count($langs)"/>
|
|
177
|
+
|
|
178
|
+
<sch:rule context="dcc:content[@lang]">
|
|
179
|
+
<sch:assert role="error" test="@lang = $langs">
|
|
180
|
+
Invalid language code: The language code '<sch:value-of select="@lang"/>' is not declared in
|
|
181
|
+
dcc:usedLangCodeISO639_1. Available codes are:<sch:value-of select="string-join($langs,', ')"/>.
|
|
182
|
+
</sch:assert>
|
|
183
|
+
</sch:rule>
|
|
184
|
+
|
|
185
|
+
<sch:rule context="//*[dcc:content[@lang]]">
|
|
186
|
+
<sch:let name="localLangs" value="dcc:content/@lang"/>
|
|
187
|
+
|
|
188
|
+
<sch:assert role="error" test="count($localLangs) = $langCount">
|
|
189
|
+
The dcc:content elements use only [<sch:value-of select="string-join($localLangs, ', ')"/>] of the
|
|
190
|
+
declared languages [<sch:value-of select="string-join($langs, ', ')"/>]. Add missing languages or use
|
|
191
|
+
one without a @lang attribute.
|
|
192
|
+
</sch:assert>
|
|
193
|
+
|
|
194
|
+
<sch:assert role="error" test="count($localLangs) = count(distinct-values($localLangs))">
|
|
195
|
+
Duplicate language codes detected in dcc:content elements: [<sch:value-of
|
|
196
|
+
select="string-join($localLangs, ', ')"/>]. Each dcc:content element must use a unique @lang value.
|
|
197
|
+
</sch:assert>
|
|
198
|
+
</sch:rule>
|
|
199
|
+
|
|
200
|
+
<sch:rule context="dcc:content">
|
|
201
|
+
<sch:report role="warning"
|
|
202
|
+
test="not(@lang) and (count(../../dcc:name)=0 and count(../../dcc:further)=0 and count(../../dcc:referral)=0)">
|
|
203
|
+
Language attribute missing: Consider adding a language attribute to this content element for better
|
|
204
|
+
internationalization.
|
|
205
|
+
</sch:report>
|
|
206
|
+
</sch:rule>
|
|
207
|
+
</sch:pattern>
|
|
208
|
+
|
|
209
|
+
<sch:pattern>
|
|
210
|
+
<xsl:comment>
|
|
211
|
+
This pattern validates that calibration end date is not before the beginning date.
|
|
212
|
+
</xsl:comment>
|
|
213
|
+
|
|
214
|
+
<sch:rule context="dcc:coreData/dcc:endPerformanceDate">
|
|
215
|
+
<sch:let name="eDate" value="xs:date(.)"/>
|
|
216
|
+
<sch:let name="bDate" value="xs:date(../dcc:beginPerformanceDate)"/>
|
|
217
|
+
<sch:assert role="error" test="$bDate le $eDate">
|
|
218
|
+
Invalid date range: The calibration end date (<sch:value-of select="."/>) cannot be before the beginning
|
|
219
|
+
date (<sch:value-of select="../dcc:beginPerformanceDate"/>).
|
|
220
|
+
</sch:assert>
|
|
221
|
+
</sch:rule>
|
|
222
|
+
</sch:pattern>
|
|
223
|
+
|
|
224
|
+
<sch:pattern>
|
|
225
|
+
<xsl:comment>
|
|
226
|
+
This pattern validates the format of software release version numbers.
|
|
227
|
+
</xsl:comment>
|
|
228
|
+
|
|
229
|
+
<sch:rule context="//dcc:release">
|
|
230
|
+
<sch:assert role="error" test="(matches(text(), '^[a-zA-Z]{1}( )?([0-9]{1,3}\.){0,3}([0-9]{1,3})$'))">
|
|
231
|
+
Invalid release version format: The release version '<sch:value-of select="text()"/>' for software '
|
|
232
|
+
<sch:value-of select="preceding-sibling::dcc:name[1]/dcc:content[1]/text()"/>' does not follow the
|
|
233
|
+
required format (e.g., 'v1.2.3' or 'A 1.0').
|
|
234
|
+
</sch:assert>
|
|
235
|
+
</sch:rule>
|
|
236
|
+
</sch:pattern>
|
|
237
|
+
|
|
238
|
+
<sch:pattern>
|
|
239
|
+
<xsl:comment>
|
|
240
|
+
This pattern validates ISO language and country codes against standard lists.
|
|
241
|
+
</xsl:comment>
|
|
242
|
+
|
|
243
|
+
<sch:let name="lc"
|
|
244
|
+
value="string-join(('aa', 'ab', 'ae', 'af', 'ak', 'am', 'an', 'ar', 'as', 'av', 'ay', 'az', 'ba', 'be', 'bg', 'bi', 'bm', 'bn', 'bo', 'br', 'bs', 'ca', 'ce', 'ch', 'co', 'cr', 'cs', 'cu', 'cv', 'cy', 'da', 'de', 'dv', 'dz', 'ee', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fa', 'ff', 'fi', 'fj', 'fo', 'fr', 'fy', 'ga', 'gd', 'gl', 'gn', 'gu', 'gv', 'ha', 'he', 'hi', 'ho', 'hr', 'ht', 'hu', 'hy', 'hz', 'ia', 'id', 'ie', 'ig', 'ii', 'ik', 'io', 'is', 'it', 'iu', 'ja', 'jv', 'ka', 'kg', 'ki', 'kj', 'kk', 'kl', 'km', 'kn', 'ko', 'kr', 'ks', 'ku', 'kv', 'kw', 'ky', 'la', 'lb', 'lg', 'li', 'ln', 'lo', 'lt', 'lu', 'lv', 'mg', 'mh', 'mi', 'mk', 'ml', 'mn', 'mr', 'ms', 'mt', 'my', 'na', 'nb', 'nd', 'ne', 'ng', 'nl', 'nn', 'no', 'nr', 'nv', 'ny', 'oc', 'oj', 'om', 'or', 'os', 'pa', 'pi', 'pl', 'ps', 'pt', 'qu', 'rm', 'rn', 'ro', 'ru', 'rw', 'sa', 'sc', 'sd', 'se', 'sg', 'si', 'sk', 'sl', 'sm', 'sn', 'so', 'sq', 'sr', 'ss', 'st', 'su', 'sv', 'sw', 'ta', 'te', 'tg', 'th', 'ti', 'tk', 'tl', 'tn', 'to', 'tr', 'ts', 'tt', 'tw', 'ty', 'ug', 'uk', 'ur', 'uz', 've', 'vi', 'vo', 'wa', 'wo', 'xh', 'yi', 'yo', 'za', 'zh', 'zu'), ' ')"/>
|
|
245
|
+
|
|
246
|
+
<sch:rule context="//dcc:usedLangCodeISO639_1">
|
|
247
|
+
<sch:assert role="error" test="contains($lc, text())">
|
|
248
|
+
Invalid ISO 639-1 language code: '<sch:value-of select="text()"/>' is not a valid language code
|
|
249
|
+
according to the ISO 639-1 standard.
|
|
250
|
+
</sch:assert>
|
|
251
|
+
</sch:rule>
|
|
252
|
+
|
|
253
|
+
<sch:rule context="//dcc:mandatoryLangCodeISO639_1">
|
|
254
|
+
<sch:assert role="error" test="contains($lc, text())">
|
|
255
|
+
Invalid ISO 639-1 language code: '<sch:value-of select="text()"/>' is not a valid language code
|
|
256
|
+
according to the ISO 639-1 standard.
|
|
257
|
+
</sch:assert>
|
|
258
|
+
</sch:rule>
|
|
259
|
+
|
|
260
|
+
<sch:rule context="//dcc:countryCodeISO3166_1">
|
|
261
|
+
<sch:let name="cc"
|
|
262
|
+
value="string-join(('AD', 'AO', 'AI', 'AQ', 'AG', 'AR', 'AM', 'AW', 'AU', 'AT', 'AZ', 'BS', 'BH', 'BD', 'BB', 'BY', 'BE', 'BZ', 'BJ', 'BM', 'BT', 'BO', 'BQ', 'BA', 'BW', 'BV', 'BR', 'IO', 'BN', 'BG', 'BF', 'BI', 'CV', 'KH', 'CM', 'CA', 'KY', 'CF', 'TD', 'CL', 'CN', 'CX', 'CC', 'CO', 'KM', 'CD', 'CG', 'CK', 'CR', 'CI', 'HR', 'CU', 'CW', 'CY', 'CZ', 'DE', 'DK', 'DJ', 'DM', 'DO', 'EC', 'EG', 'SV', 'GQ', 'ER', 'EE', 'SZ', 'ET', 'FK', 'FO', 'FJ', 'FI', 'FR', 'GF', 'PF', 'TF', 'GA', 'GM', 'GE', 'DE', 'GH', 'GI', 'GR', 'GL', 'GD', 'GP', 'GU', 'GT', 'GG', 'GN', 'GW', 'GY', 'HT', 'HM', 'VA', 'HN', 'HK', 'HU', 'IS', 'IN', 'ID', 'IR', 'IQ', 'IE', 'IM', 'IL', 'IT', 'JM', 'JP', 'JE', 'JO', 'KZ', 'KE', 'KI', 'KP', 'KR', 'KW', 'KG', 'LA', 'LV', 'LB', 'LS', 'LR', 'LY', 'LI', 'LT', 'LU', 'MO', 'MK', 'MG', 'MW', 'MY', 'MV', 'ML', 'MT', 'MH', 'MQ', 'MR', 'MU', 'YT', 'MX', 'FM', 'MD', 'MC', 'MN', 'ME', 'MS', 'MA', 'MZ', 'MM', 'NA', 'NR', 'NP', 'NL', 'NC', 'NZ', 'NI', 'NE', 'NG', 'NU', 'NF', 'MP', 'NO', 'OM', 'PK', 'PW', 'PS', 'PA', 'PG', 'PY', 'PE', 'PH', 'PN', 'PL', 'PT', 'PR', 'QA', 'RE', 'RO', 'RU', 'RW', 'BL', 'SH', 'KN', 'LC', 'MF', 'PM', 'VC', 'WS', 'SM', 'ST', 'SA', 'SN', 'RS', 'SC', 'SL', 'SG', 'SX', 'SK', 'SI', 'SB', 'SO', 'ZA', 'GS', 'SS', 'ES', 'LK', 'SD', 'SR', 'SJ', 'SE', 'CH', 'SY', 'TW', 'TJ', 'TZ', 'TH', 'TL', 'TG', 'TK', 'TO', 'TT', 'TN', 'TR', 'TM', 'TC', 'TV', 'UG', 'UA', 'AE', 'GB', 'UM', 'US', 'UY', 'UZ', 'VU', 'VE', 'VN', 'VG', 'VI', 'WF', 'EH', 'YE', 'ZM', 'ZW'), ' ')"/>
|
|
263
|
+
|
|
264
|
+
<sch:assert role="error" test="contains($cc, text())">
|
|
265
|
+
Invalid ISO 3166-1 country code: '<sch:value-of select="text()"/>' is not a valid country code according
|
|
266
|
+
to the ISO 3166-1 standard.
|
|
267
|
+
</sch:assert>
|
|
268
|
+
</sch:rule>
|
|
269
|
+
</sch:pattern>
|
|
270
|
+
|
|
271
|
+
<sch:pattern>
|
|
272
|
+
<xsl:comment>
|
|
273
|
+
This pattern validates relative uncertainty values and their relationships with expanded uncertainty.
|
|
274
|
+
</xsl:comment>
|
|
275
|
+
|
|
276
|
+
<sch:rule context="//dcc:quantity">
|
|
277
|
+
<sch:let name="valueXMLList" value="si:realListXMLList/si:valueXMLList"/>
|
|
278
|
+
<sch:let name="relativeUncertaintyXmlList"
|
|
279
|
+
value="dcc:relativeUncertainty/dcc:relativeUncertaintyXmlList/si:valueXMLList"/>
|
|
280
|
+
<sch:let name="uncertaintyXMLList" value="si:realListXMLList/si:expandedUncXMLList/si:uncertaintyXMLList"/>
|
|
281
|
+
|
|
282
|
+
<sch:let name="value" value="si:real/si:value"/>
|
|
283
|
+
<sch:let name="relativeUncertainty" value="dcc:relativeUncertainty/dcc:relativeUncertainty/si:value"/>
|
|
284
|
+
<sch:let name="uncertainty" value="si:real/si:expandedUnc/si:uncertainty"/>
|
|
285
|
+
|
|
286
|
+
<sch:report role="error"
|
|
287
|
+
test="count(dcc:relativeUncertainty/dcc:relativeUncertaintyXmlList)=1 and count(si:realListXMLList/si:expandedUncXMLList)=0">
|
|
288
|
+
Missing expanded uncertainty: Relative uncertainty is provided but corresponding expanded uncertainty is
|
|
289
|
+
missing.
|
|
290
|
+
</sch:report>
|
|
291
|
+
<sch:report role="error"
|
|
292
|
+
test="count(dcc:relativeUncertainty/dcc:relativeUncertainty)=1 and count(si:real/si:expandedUnc)=0">
|
|
293
|
+
Missing expanded uncertainty: Relative uncertainty is provided but corresponding expanded uncertainty is
|
|
294
|
+
missing.
|
|
295
|
+
</sch:report>
|
|
296
|
+
|
|
297
|
+
<sch:report role="error"
|
|
298
|
+
test="count(dcc:relativeUncertainty/dcc:relativeUncertaintyXmlList)=0 and count(dcc:relativeUncertainty/dcc:relativeUncertainty)=1 and count(si:realListXMLList/si:valueXMLList)=1 and count(si:real/si:value)=0">
|
|
299
|
+
Inconsistent data format: Value list requires relative uncertainty list, not single relative uncertainty
|
|
300
|
+
value.
|
|
301
|
+
</sch:report>
|
|
302
|
+
<sch:report role="error"
|
|
303
|
+
test="count(dcc:relativeUncertainty/dcc:relativeUncertaintyXmlList)=1 and count(dcc:relativeUncertainty/dcc:relativeUncertainty)=0 and count(si:realListXMLList/si:valueXMLList)=0 and count(si:real/si:value)=1">
|
|
304
|
+
Inconsistent data format: Single value requires single relative uncertainty, not relative uncertainty
|
|
305
|
+
list.
|
|
306
|
+
</sch:report>
|
|
307
|
+
|
|
308
|
+
<sch:report role="error"
|
|
309
|
+
test="($relativeUncertainty) != ($uncertainty) div ($value) and count(dcc:relativeUncertainty/dcc:relativeUncertainty/si:value) = 1">
|
|
310
|
+
Incorrect relative uncertainty calculation: The relative uncertainty value (<sch:value-of
|
|
311
|
+
select="$relativeUncertainty"/>) does not match the calculation (uncertainty/value =<sch:value-of
|
|
312
|
+
select="$uncertainty div $value"/>).
|
|
313
|
+
</sch:report>
|
|
314
|
+
</sch:rule>
|
|
315
|
+
|
|
316
|
+
<sch:rule context="//dcc:relativeUncertainty">
|
|
317
|
+
<sch:let name="relativeUncertaintyXmlList" value="dcc:relativeUncertaintyXmlList/si:valueXMLList"/>
|
|
318
|
+
<sch:let name="valueXMLList" value="preceding-sibling::si:realListXMLList/si:valueXMLList"/>
|
|
319
|
+
|
|
320
|
+
<sch:report role="error"
|
|
321
|
+
test="(count(tokenize($valueXMLList, ' ')) != count(tokenize($relativeUncertaintyXmlList, ' '))) and (count(tokenize($relativeUncertaintyXmlList, ' ')) > 1)">
|
|
322
|
+
Count mismatch: The number of relative uncertainty values (<sch:value-of
|
|
323
|
+
select="count(tokenize($relativeUncertaintyXmlList, ' '))"/>) must match the number of measurement
|
|
324
|
+
values (<sch:value-of select="count(tokenize($valueXMLList, ' '))"/>) when not using a constant
|
|
325
|
+
uncertainty.
|
|
326
|
+
</sch:report>
|
|
327
|
+
</sch:rule>
|
|
328
|
+
|
|
329
|
+
<sch:rule context="//si:realListXMLList">
|
|
330
|
+
<sch:let name="uncertaintyXMLList" value="si:expandedUncXMLList/si:uncertaintyXMLList"/>
|
|
331
|
+
<sch:let name="valueXMLList" value="si:valueXMLList"/>
|
|
332
|
+
|
|
333
|
+
<sch:report role="error"
|
|
334
|
+
test="(count(tokenize($valueXMLList, ' ')) != count(tokenize($uncertaintyXMLList, ' '))) and (count(tokenize($uncertaintyXMLList, ' ')) > 1) and count(si:expandedUncXMLList/si:uncertaintyXMLList)=1">
|
|
335
|
+
Count mismatch: The number of expanded uncertainty values (<sch:value-of
|
|
336
|
+
select="count(tokenize($uncertaintyXMLList, ' '))"/>) must match the number of measurement values (
|
|
337
|
+
<sch:value-of select="count(tokenize($valueXMLList, ' '))"/>) when not using constant uncertainty.
|
|
338
|
+
</sch:report>
|
|
339
|
+
</sch:rule>
|
|
340
|
+
</sch:pattern>
|
|
341
|
+
|
|
342
|
+
<sch:pattern>
|
|
343
|
+
<xsl:comment>
|
|
344
|
+
This pattern validates units and unit lists to ensure proper formatting and consistency.
|
|
345
|
+
</xsl:comment>
|
|
346
|
+
|
|
347
|
+
<sch:rule context="//si:real/si:unit">
|
|
348
|
+
<sch:report role="error" test="count(tokenize(., ' ')) > 1">
|
|
349
|
+
Invalid unit format: Units cannot contain spaces. Found '<sch:value-of select="."/>'.
|
|
350
|
+
</sch:report>
|
|
351
|
+
</sch:rule>
|
|
352
|
+
<sch:rule context="//si:unitXMLList">
|
|
353
|
+
<sch:report role="error"
|
|
354
|
+
test="count(tokenize(., ' ')) > 1 and not(count(tokenize(., ' ')) = count(tokenize(preceding-sibling::si:valueXMLList)))">
|
|
355
|
+
Unit count mismatch: If units vary across values, you must provide a unit for each value. Found
|
|
356
|
+
<sch:value-of select="count(tokenize(., ' '))"/>
|
|
357
|
+
units for
|
|
358
|
+
<sch:value-of select="count(tokenize(preceding-sibling::si:valueXMLList, ' '))"/>
|
|
359
|
+
values.
|
|
360
|
+
</sch:report>
|
|
361
|
+
<sch:report role="warning"
|
|
362
|
+
test="count(tokenize(., ' ')) > 1 and (every $value in tokenize(., ' ') satisfies ($value = tokenize(., ' ')))">
|
|
363
|
+
Redundant unit specification: All units in the list are identical ('<sch:value-of
|
|
364
|
+
select="tokenize(., ' ')[1]"/>'). Consider using a single unit declaration for better clarity.
|
|
365
|
+
</sch:report>
|
|
366
|
+
</sch:rule>
|
|
367
|
+
</sch:pattern>
|
|
368
|
+
|
|
369
|
+
<sch:pattern>
|
|
370
|
+
<xsl:comment>
|
|
371
|
+
This pattern validates that non-SI units are properly declared before use.
|
|
372
|
+
</xsl:comment>
|
|
373
|
+
|
|
374
|
+
<sch:let name="nonSI" value="//dcc:statement/dcc:nonSIUnit"/>
|
|
375
|
+
<sch:rule context="//si:hybrid/si:real/si:unit">
|
|
376
|
+
<sch:report role="error" test="not(text()=$nonSI) and matches(text(), '^\|.+')">
|
|
377
|
+
Undeclared non-SI unit: The unit '<sch:value-of select="text()"/>' appears to be a non-SI unit but is
|
|
378
|
+
not declared in the dcc:nonSIUnit statements.
|
|
379
|
+
</sch:report>
|
|
380
|
+
</sch:rule>
|
|
381
|
+
|
|
382
|
+
<sch:rule context="//dcc:nonSIUnit">
|
|
383
|
+
<sch:assert role="error" test="count(preceding-sibling::dcc:nonSIDefinition)=1">
|
|
384
|
+
Missing non-SI unit definition: The non-SI unit '<sch:value-of select="text()"/>' must have a
|
|
385
|
+
corresponding definition in dcc:nonSIDefinition.
|
|
386
|
+
</sch:assert>
|
|
387
|
+
</sch:rule>
|
|
388
|
+
|
|
389
|
+
<sch:rule context="//dcc:nonSIDefinition">
|
|
390
|
+
<sch:assert role="error" test="count(following-sibling::dcc:nonSIUnit)=1">
|
|
391
|
+
Missing non-SI unit declaration: The non-SI unit definition must have a corresponding unit declaration
|
|
392
|
+
in dcc:nonSIUnit.
|
|
393
|
+
</sch:assert>
|
|
394
|
+
</sch:rule>
|
|
395
|
+
</sch:pattern>
|
|
396
|
+
|
|
397
|
+
<sch:pattern>
|
|
398
|
+
<xsl:comment>
|
|
399
|
+
This pattern validates that language codes are not declared multiple times.
|
|
400
|
+
</xsl:comment>
|
|
401
|
+
|
|
402
|
+
<sch:rule context="dcc:usedLangCodeISO639_1">
|
|
403
|
+
<sch:report role="error"
|
|
404
|
+
test="text()=preceding-sibling::dcc:usedLangCodeISO639_1/text() or text()=following-sibling::dcc:usedLangCodeISO639_1/text()">
|
|
405
|
+
Duplicate language code: The language code '<sch:value-of select="text()"/>' is declared multiple times.
|
|
406
|
+
Each language code may only be declared once.
|
|
407
|
+
</sch:report>
|
|
408
|
+
</sch:rule>
|
|
409
|
+
</sch:pattern>
|
|
410
|
+
|
|
411
|
+
<sch:pattern>
|
|
412
|
+
<xsl:comment>
|
|
413
|
+
This pattern validates XML list formatting to ensure proper spacing between entries.
|
|
414
|
+
XML lists must contain exactly one space between entries, no leading/trailing spaces, and no multiple
|
|
415
|
+
consecutive spaces.
|
|
416
|
+
</xsl:comment>
|
|
417
|
+
|
|
418
|
+
<sch:rule context="//si:valueXMLList">
|
|
419
|
+
<sch:assert role="error" test="(matches(., '^([^\s]+\s)*([^\s]+)$'))">
|
|
420
|
+
Invalid list formatting: XML list contains improper spacing. Ensure exactly one space separates entries
|
|
421
|
+
with no leading/trailing spaces.
|
|
422
|
+
</sch:assert>
|
|
423
|
+
</sch:rule>
|
|
424
|
+
|
|
425
|
+
<sch:rule context="//si:unitXMLList">
|
|
426
|
+
<sch:assert role="error" test="(matches(., '^([^\s]+\s)*([^\s]+)$'))">
|
|
427
|
+
Invalid list formatting: Unit XML list contains improper spacing. Ensure exactly one space separates
|
|
428
|
+
entries with no leading/trailing spaces.
|
|
429
|
+
</sch:assert>
|
|
430
|
+
</sch:rule>
|
|
431
|
+
|
|
432
|
+
<sch:rule context="//si:labelXMLList">
|
|
433
|
+
<sch:assert role="error" test="(matches(., '^([^\s]+\s)*([^\s]+)$'))">
|
|
434
|
+
Invalid list formatting: Label XML list contains improper spacing. Ensure exactly one space separates
|
|
435
|
+
entries with no leading/trailing spaces.
|
|
436
|
+
</sch:assert>
|
|
437
|
+
</sch:rule>
|
|
438
|
+
|
|
439
|
+
<sch:rule context="//si:dateTimeXMLList">
|
|
440
|
+
<sch:assert role="error" test="(matches(., '^([^\s]+\s)*([^\s]+)$'))">
|
|
441
|
+
Invalid list formatting: DateTime XML list contains improper spacing. Ensure exactly one space separates
|
|
442
|
+
entries with no leading/trailing spaces.
|
|
443
|
+
</sch:assert>
|
|
444
|
+
</sch:rule>
|
|
445
|
+
|
|
446
|
+
<sch:rule context="//si:uncertaintyXMLList">
|
|
447
|
+
<sch:assert role="error" test="(matches(., '^([^\s]+\s)*([^\s]+)$'))">
|
|
448
|
+
Invalid list formatting: Uncertainty XML list contains improper spacing. Ensure exactly one space
|
|
449
|
+
separates entries with no leading/trailing spaces.
|
|
450
|
+
</sch:assert>
|
|
451
|
+
</sch:rule>
|
|
452
|
+
|
|
453
|
+
<sch:rule context="//si:coverageFactorXMLList">
|
|
454
|
+
<sch:assert role="error" test="(matches(., '^([^\s]+\s)*([^\s]+)$'))">
|
|
455
|
+
Invalid list formatting: Coverage factor XML list contains improper spacing. Ensure exactly one space
|
|
456
|
+
separates entries with no leading/trailing spaces.
|
|
457
|
+
</sch:assert>
|
|
458
|
+
</sch:rule>
|
|
459
|
+
|
|
460
|
+
<sch:rule context="//si:coverageProbabilityXMLList">
|
|
461
|
+
<sch:assert role="error" test="(matches(., '^([^\s]+\s)*([^\s]+)$'))">
|
|
462
|
+
Invalid list formatting: Coverage probability XML list contains improper spacing. Ensure exactly one
|
|
463
|
+
space separates entries with no leading/trailing spaces.
|
|
464
|
+
</sch:assert>
|
|
465
|
+
</sch:rule>
|
|
466
|
+
|
|
467
|
+
<sch:rule context="//si:distributionXMLList">
|
|
468
|
+
<sch:assert role="error" test="(matches(., '^([^\s]+\s)*([^\s]+)$'))">
|
|
469
|
+
Invalid list formatting: Distribution XML list contains improper spacing. Ensure exactly one space
|
|
470
|
+
separates entries with no leading/trailing spaces.
|
|
471
|
+
</sch:assert>
|
|
472
|
+
</sch:rule>
|
|
473
|
+
|
|
474
|
+
<sch:rule context="//si:standardUncXMLList">
|
|
475
|
+
<sch:assert role="error" test="(matches(., '^([^\s]+\s)*([^\s]+)$'))">
|
|
476
|
+
Invalid list formatting: Standard uncertainty XML list contains improper spacing. Ensure exactly one
|
|
477
|
+
space separates entries with no leading/trailing spaces.
|
|
478
|
+
</sch:assert>
|
|
479
|
+
</sch:rule>
|
|
480
|
+
|
|
481
|
+
<sch:rule context="//si:intervalMinXMLList">
|
|
482
|
+
<sch:assert role="error" test="(matches(., '^([^\s]+\s)*([^\s]+)$'))">
|
|
483
|
+
Invalid list formatting: Interval minimum XML list contains improper spacing. Ensure exactly one space
|
|
484
|
+
separates entries with no leading/trailing spaces.
|
|
485
|
+
</sch:assert>
|
|
486
|
+
</sch:rule>
|
|
487
|
+
|
|
488
|
+
<sch:rule context="//si:intervalMaxXMLList">
|
|
489
|
+
<sch:assert role="error" test="(matches(., '^([^\s]+\s)*([^\s]+)$'))">
|
|
490
|
+
Invalid list formatting: Interval maximum XML list contains improper spacing. Ensure exactly one space
|
|
491
|
+
separates entries with no leading/trailing spaces.
|
|
492
|
+
</sch:assert>
|
|
493
|
+
</sch:rule>
|
|
494
|
+
|
|
495
|
+
<sch:rule context="//dcc:dateTimeXMLListType">
|
|
496
|
+
<sch:assert role="error" test="(matches(., '^([^\s]+\s)*([^\s]+)$'))">
|
|
497
|
+
Invalid list formatting: DateTime list contains improper spacing. Ensure exactly one space separates
|
|
498
|
+
entries with no leading/trailing spaces.
|
|
499
|
+
</sch:assert>
|
|
500
|
+
</sch:rule>
|
|
501
|
+
|
|
502
|
+
<sch:rule context="//dcc:stringConformityStatementStatusXMLListType">
|
|
503
|
+
<sch:assert role="error" test="(matches(., '^([^\s]+\s)*([^\s]+)$'))">
|
|
504
|
+
Invalid list formatting: Conformity statement status list contains improper spacing. Ensure exactly one
|
|
505
|
+
space separates entries with no leading/trailing spaces.
|
|
506
|
+
</sch:assert>
|
|
507
|
+
</sch:rule>
|
|
508
|
+
|
|
509
|
+
<sch:rule context="//@refType">
|
|
510
|
+
<sch:assert role="error" test="(matches(., '^([^\s]+\s)*([^\s]+)$'))">
|
|
511
|
+
Invalid attribute formatting: The refType attribute '<sch:value-of select="."/>' contains improper
|
|
512
|
+
spacing. Ensure exactly one space separates entries with no leading/trailing spaces.
|
|
513
|
+
</sch:assert>
|
|
514
|
+
</sch:rule>
|
|
515
|
+
|
|
516
|
+
<sch:rule context="//@refId">
|
|
517
|
+
<sch:assert role="error" test="(matches(., '^([^\s]+\s)*([^\s]+)$'))">
|
|
518
|
+
Invalid attribute formatting: The refId attribute '<sch:value-of select="."/>' contains improper
|
|
519
|
+
spacing. Ensure exactly one space separates entries with no leading/trailing spaces.
|
|
520
|
+
</sch:assert>
|
|
521
|
+
</sch:rule>
|
|
522
|
+
</sch:pattern>
|
|
523
|
+
</sch:schema>
|