diff --git a/pom.xml b/pom.xml index 633c25c..6e50bc6 100644 --- a/pom.xml +++ b/pom.xml @@ -33,17 +33,18 @@ 11 + ${java.version} ${java.version} ${java.version} - 1.4.0-SNAPSHOT - 2.0.0-SNAPSHOT + 1.4.0 + 2.0.0-alpha.4 4.4 3.12.0 7.11.1 - 8.44.0.Final + 8.44.2.Final 3.0.11 2.14.1 4.0.0 @@ -58,8 +59,8 @@ 2.3.0 - 3.10.1 - 3.3.0 + 3.13.0 + 3.6.0 @@ -384,12 +385,12 @@ org.apache.maven.plugins maven-compiler-plugin - ${version.compiler.version} + ${version.compiler.plugin} org.apache.maven.plugins maven-shade-plugin - ${version.compiler.plugin} + ${version.shade.plugin} org.kie diff --git a/src/main/java/eu/europa/ted/eforms/sdk/analysis/domain/schematron/SchematronAssert.java b/src/main/java/eu/europa/ted/eforms/sdk/analysis/domain/schematron/SchematronAssert.java index 276d6da..f2b541d 100644 --- a/src/main/java/eu/europa/ted/eforms/sdk/analysis/domain/schematron/SchematronAssert.java +++ b/src/main/java/eu/europa/ted/eforms/sdk/analysis/domain/schematron/SchematronAssert.java @@ -2,6 +2,7 @@ public class SchematronAssert { private final String id; + private String diagnostics; public SchematronAssert(String id) { this.id = id; @@ -10,4 +11,12 @@ public SchematronAssert(String id) { public String getId() { return id; } + + public String getDiagnostics() { + return diagnostics; + } + + public void setDiagnostics(String diagnostics) { + this.diagnostics = diagnostics; + } } diff --git a/src/main/java/eu/europa/ted/eforms/sdk/analysis/domain/schematron/SchematronDiagnostic.java b/src/main/java/eu/europa/ted/eforms/sdk/analysis/domain/schematron/SchematronDiagnostic.java new file mode 100644 index 0000000..f9ac97d --- /dev/null +++ b/src/main/java/eu/europa/ted/eforms/sdk/analysis/domain/schematron/SchematronDiagnostic.java @@ -0,0 +1,13 @@ +package eu.europa.ted.eforms.sdk.analysis.domain.schematron; + +public class SchematronDiagnostic { + private final String id; + + public SchematronDiagnostic(String id) { + this.id = id; + } + + public String getId() { + return id; + } +} diff --git a/src/main/java/eu/europa/ted/eforms/sdk/analysis/domain/schematron/SchematronFile.java b/src/main/java/eu/europa/ted/eforms/sdk/analysis/domain/schematron/SchematronFile.java index 799beb3..4d209cd 100644 --- a/src/main/java/eu/europa/ted/eforms/sdk/analysis/domain/schematron/SchematronFile.java +++ b/src/main/java/eu/europa/ted/eforms/sdk/analysis/domain/schematron/SchematronFile.java @@ -5,22 +5,48 @@ public class SchematronFile { private final Path path; - private final List asserts; + private List phases; + private List patterns; + private List diagnostics; + private List asserts; public SchematronFile(Path path) { - this(path, null); - } - - public SchematronFile(Path path, List asserts) { this.path = path; - this.asserts = asserts; } public Path getPath() { return path; } + public List getPhases() { + return phases; + } + + public void setPhases(List phases) { + this.phases = phases; + } + + public List getPatterns() { + return patterns; + } + + public void setPatterns(List patterns) { + this.patterns = patterns; + } + + public List getDiagnostics() { + return diagnostics; + } + + public void setDiagnostics(List diagnostics) { + this.diagnostics = diagnostics; + } + public List getAsserts() { return asserts; } + + public void setAsserts(List asserts) { + this.asserts = asserts; + } } diff --git a/src/main/java/eu/europa/ted/eforms/sdk/analysis/domain/schematron/SchematronPattern.java b/src/main/java/eu/europa/ted/eforms/sdk/analysis/domain/schematron/SchematronPattern.java new file mode 100644 index 0000000..58a921c --- /dev/null +++ b/src/main/java/eu/europa/ted/eforms/sdk/analysis/domain/schematron/SchematronPattern.java @@ -0,0 +1,13 @@ +package eu.europa.ted.eforms.sdk.analysis.domain.schematron; + +public class SchematronPattern { + private final String id; + + public SchematronPattern(String id) { + this.id = id; + } + + public String getId() { + return id; + } +} diff --git a/src/main/java/eu/europa/ted/eforms/sdk/analysis/domain/schematron/SchematronPhase.java b/src/main/java/eu/europa/ted/eforms/sdk/analysis/domain/schematron/SchematronPhase.java new file mode 100644 index 0000000..ba9e6cc --- /dev/null +++ b/src/main/java/eu/europa/ted/eforms/sdk/analysis/domain/schematron/SchematronPhase.java @@ -0,0 +1,25 @@ +package eu.europa.ted.eforms.sdk.analysis.domain.schematron; + +import java.util.ArrayList; +import java.util.List; + +public class SchematronPhase { + private final String id; + private final List activePatterns = new ArrayList<>(); + + public SchematronPhase(String id) { + this.id = id; + } + + public String getId() { + return id; + } + + public List getActivePatterns() { + return activePatterns; + } + + public void addActivePattern(String patternId) { + activePatterns.add(patternId); + } +} diff --git a/src/main/java/eu/europa/ted/eforms/sdk/analysis/fact/SchematronFileFact.java b/src/main/java/eu/europa/ted/eforms/sdk/analysis/fact/SchematronFileFact.java index 7ac28ea..97140a7 100644 --- a/src/main/java/eu/europa/ted/eforms/sdk/analysis/fact/SchematronFileFact.java +++ b/src/main/java/eu/europa/ted/eforms/sdk/analysis/fact/SchematronFileFact.java @@ -6,7 +6,10 @@ import java.util.stream.Collectors; import eu.europa.ted.eforms.sdk.analysis.domain.schematron.SchematronAssert; +import eu.europa.ted.eforms.sdk.analysis.domain.schematron.SchematronDiagnostic; import eu.europa.ted.eforms.sdk.analysis.domain.schematron.SchematronFile; +import eu.europa.ted.eforms.sdk.analysis.domain.schematron.SchematronPattern; +import eu.europa.ted.eforms.sdk.analysis.domain.schematron.SchematronPhase; /** * Represents a complete set of schematron rules. @@ -25,12 +28,41 @@ public List getAsserts() { return schematronFile.getAsserts(); } + public List getDiagnostics() { + return schematronFile.getDiagnostics(); + } + + public List getPhases() { + return schematronFile.getPhases(); + } + + public List getPatterns() { + return schematronFile.getPatterns(); + } + public List getDuplicateAssertIds() { Set set = new HashSet(); return getAsserts().stream().map(SchematronAssert::getId).filter(id -> !set.add(id)) .collect(Collectors.toList()); } + /** + * Returns the list of diagnostic identifiers that are referenced in an assert but not defined by + * a diagnostic element. + * + * @return List of diagnostic identifiers missing a definition. + */ + public List getMissingDiagnostics() { + Set definedDiagnosticIds = getDiagnostics().stream() + .map(SchematronDiagnostic::getId) + .collect(Collectors.toSet()); + + return getAsserts().stream() + .map(SchematronAssert::getDiagnostics) + .filter(id -> !definedDiagnosticIds.contains(id)) + .collect(Collectors.toList()); + } + @Override public String getId() { return schematronFile.getPath().toString(); diff --git a/src/main/java/eu/europa/ted/eforms/sdk/analysis/util/SchematronParser.java b/src/main/java/eu/europa/ted/eforms/sdk/analysis/util/SchematronParser.java index 8b88582..1a2cbf9 100644 --- a/src/main/java/eu/europa/ted/eforms/sdk/analysis/util/SchematronParser.java +++ b/src/main/java/eu/europa/ted/eforms/sdk/analysis/util/SchematronParser.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Locale; +import java.util.stream.Collectors; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -15,9 +16,13 @@ import com.helger.xml.microdom.IMicroDocument; import com.helger.xml.microdom.IMicroElement; import com.helger.xml.microdom.IMicroNode; +import com.helger.xml.microdom.serialize.MicroReader; import eu.europa.ted.eforms.sdk.analysis.domain.schematron.SchematronAssert; +import eu.europa.ted.eforms.sdk.analysis.domain.schematron.SchematronDiagnostic; import eu.europa.ted.eforms.sdk.analysis.domain.schematron.SchematronFile; +import eu.europa.ted.eforms.sdk.analysis.domain.schematron.SchematronPattern; +import eu.europa.ted.eforms.sdk.analysis.domain.schematron.SchematronPhase; public class SchematronParser { private static final Logger logger = LoggerFactory.getLogger(SchematronParser.class); @@ -27,32 +32,92 @@ private SchematronParser() {} public static SchematronFile loadSchematronFile(Path schematronFilePath) { logger.debug("Loading Schematron file " + schematronFilePath.toString()); + SchematronFile schematronFile = new SchematronFile(schematronFilePath); + IReadableResource schematron = new FileSystemResource(schematronFilePath); + + final IMicroDocument doc = MicroReader.readMicroXML(schematron); + if (doc == null || doc.getAllChildren() == null) { + logger.error("Schematron file {} could not be loaded as XML", schematronFilePath); + return null; + } + List children = doc.getAllChildrenRecursive(); + if (children == null) { + logger.error("Schematron file {} has unexpected structure", schematronFilePath); + return null; + } + + // Parse phase definitions + List phases = new ArrayList<>(); + children.stream() + .filter(node -> node.isElement() && "phase".equals(node.getNodeName())) + .forEach(node -> { + IMicroElement element = (IMicroElement)node; + String id = element.getAttributeValue("id"); + SchematronPhase phase = new SchematronPhase(id); + List phaseRefs = element.getAllChildren(); + if (phaseRefs == null) { + logger.error("Incorrect definition for phase {}", id); + return; + } + phaseRefs.stream() + .filter(n -> n.isElement() && "active".equals(n.getNodeName())) + .map(n -> ((IMicroElement)n).getAttributeValue("pattern")) + .forEach(s -> phase.addActivePattern(s)); + + phases.add(phase); + }); + + schematronFile.setPhases(phases); + + // Parse list diagnostic definitions + List diagnostics = children.stream() + .filter(node -> node.isElement() && "diagnostic".equals(node.getNodeName())) + .map(n -> ((IMicroElement)n).getAttributeValue("id")) + .map(s -> new SchematronDiagnostic(s)) + .collect(Collectors.toList()); + + schematronFile.setDiagnostics(diagnostics); + // Resolve all included files, so that they also get loaded. - final IMicroDocument doc = SchematronHelper.getWithResolvedSchematronIncludes(schematron, + final IMicroDocument docResolved = SchematronHelper.getWithResolvedSchematronIncludes(schematron, e -> handleError(e, schematronFilePath)); - if (doc == null) { - logger.error("Schematron file {} could not be loaded as XML", schematronFilePath); + if (docResolved == null) { + logger.error("Schematron file {} with resolved includes could not be loaded as XML", + schematronFilePath); return null; } - List asserts = new ArrayList<>(); - List allChildren = doc.getAllChildrenRecursive(); + List allChildren = docResolved.getAllChildrenRecursive(); if (allChildren == null) { logger.error("Schematron file {} does not have the expected content", schematronFilePath); return null; } + + // Parse all patterns + List patterns = allChildren.stream() + .filter(node -> node.isElement() && "pattern".equals(node.getNodeName())) + .map(n -> ((IMicroElement)n).getAttributeValue("id")) + .map(s -> new SchematronPattern(s)) + .collect(Collectors.toList()); - for (IMicroNode node : allChildren) { - if (node != null && node.isElement() && "assert".equals(node.getNodeName())) { - IMicroElement element = (IMicroElement)node; - SchematronAssert schAssert = new SchematronAssert(element.getAttributeValue("id")); - asserts.add(schAssert); - } - } + schematronFile.setPatterns(patterns); + + // Parse all asserts + List asserts = new ArrayList<>(); + allChildren.stream() + .filter(node -> node.isElement() && "assert".equals(node.getNodeName())) + .forEach(n -> { + IMicroElement element = (IMicroElement)n; + String id = element.getAttributeValue("id"); + SchematronAssert schematronAssert = new SchematronAssert(id); + String diag = element.getAttributeValue("diagnostics"); + schematronAssert.setDiagnostics(diag); + asserts.add(schematronAssert); + }); - SchematronFile schematronFile = new SchematronFile(schematronFilePath, asserts); + schematronFile.setAsserts(asserts); return schematronFile; } diff --git a/src/main/resources/eu/europa/ted/eforms/sdk/analysis/drools/schematronRules.drl b/src/main/resources/eu/europa/ted/eforms/sdk/analysis/drools/schematronRules.drl index f8a6af4..47d4c54 100644 --- a/src/main/resources/eu/europa/ted/eforms/sdk/analysis/drools/schematronRules.drl +++ b/src/main/resources/eu/europa/ted/eforms/sdk/analysis/drools/schematronRules.drl @@ -15,3 +15,27 @@ when then results.add(new ValidationResult($sch, "Schematron contains duplicate assert ids: " + $duplicates, ValidationStatusEnum.ERROR)); end + +rule "All expected phases are present" +when + /schematrons[ $sch: this, $schId: id ]; + /noticeTypes[ $expected: id ] + not (exists /schematrons[ id == $schId ]/phases[ id == "eforms-" + $expected ]) +then + results.add(new ValidationResult($sch, "Schematron is missing phase for: " + $expected, ValidationStatusEnum.ERROR)); +end + +rule "Every pattern is part of at least one phase" +when + /schematrons[ $sch: this, $schId: id ]/patterns[ $patternId: id ] + not (exists /schematrons[ id == $schId ]/phases[ activePatterns contains $patternId ]) +then + results.add(new ValidationResult($sch, "Schematron has pattern that is not part of any phase: " + $patternId, ValidationStatusEnum.ERROR)); +end + +rule "Every assert diagnostics is defined in the schematron file" +when + $missing : /schematrons[ $sch: this]/missingDiagnostics +then + results.add(new ValidationResult($sch, "Schematron is missing diagnostic definitions for: " + $missing, ValidationStatusEnum.ERROR)); +end diff --git a/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/notice-types/1.json b/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/notice-types/1.json new file mode 100644 index 0000000..f4a8a55 --- /dev/null +++ b/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/notice-types/1.json @@ -0,0 +1,48 @@ +{ + "ublVersion" : "2.3", + "sdkVersion" : "1.10.0", + "metadataDatabase" : { + "version" : "1.10.0", + "createdOn" : "2023-11-15T14:00:00" + }, + "noticeId" : "1", + "metadata" : [ { + "id" : "BT-02-notice", + "contentType" : "field", + "displayType" : "COMBOBOX", + "description" : "Notice Type", + "_label" : "field|name|BT-02-notice", + "readOnly" : true + } ], + "content" : [ { + "id" : "GR-Buyer", + "contentType" : "group", + "displayType" : "SECTION", + "description" : "Contracting Party and Provider related Information", + "_label" : "group|name|GR-Buyer", + "content" : [ { + "id" : "GR-ContractingAuthority", + "contentType" : "group", + "nodeId" : "ND-ContractingParty", + "displayType" : "GROUP", + "description" : "Contracting Party related Information (URL, Legal Type, Contracting Type, Activity, …)", + "_label" : "group|name|ND-ContractingParty", + "_repeatable" : true, + "content" : [ { + "id" : "GR-ContractingAuthority-Buyer", + "contentType" : "group", + "displayType" : "GROUP", + "description" : "Contracting Party related Information (URL, Legal Type, Contracting Type, Activity, …)", + "_label" : "group|name|GR-ContractingAuthority-Buyer", + "content" : [ { + "id" : "OPT-300-Procedure-Buyer", + "contentType" : "field", + "displayType" : "COMBOBOX", + "description" : "Buyer Technical Identifier Reference", + "_label" : "field|name|OPT-300-Procedure-Buyer", + "_idSchemes" : [ "ORG" ] + } ] + } ] + } ] + } ] +} \ No newline at end of file diff --git a/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/notice-types/16.json b/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/notice-types/16.json new file mode 100644 index 0000000..d5a465c --- /dev/null +++ b/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/notice-types/16.json @@ -0,0 +1,48 @@ +{ + "ublVersion" : "2.3", + "sdkVersion" : "1.10.0", + "metadataDatabase" : { + "version" : "1.10.0", + "createdOn" : "2023-11-15T14:00:00" + }, + "noticeId" : "16", + "metadata" : [ { + "id" : "BT-02-notice", + "contentType" : "field", + "displayType" : "COMBOBOX", + "description" : "Notice Type", + "_label" : "field|name|BT-02-notice", + "readOnly" : true + } ], + "content" : [ { + "id" : "GR-Buyer", + "contentType" : "group", + "displayType" : "SECTION", + "description" : "Contracting Party and Provider related Information", + "_label" : "group|name|GR-Buyer", + "content" : [ { + "id" : "GR-ContractingAuthority", + "contentType" : "group", + "nodeId" : "ND-ContractingParty", + "displayType" : "GROUP", + "description" : "Contracting Party related Information (URL, Legal Type, Contracting Type, Activity, …)", + "_label" : "group|name|ND-ContractingParty", + "_repeatable" : true, + "content" : [ { + "id" : "GR-ContractingAuthority-Buyer", + "contentType" : "group", + "displayType" : "GROUP", + "description" : "Contracting Party related Information (URL, Legal Type, Contracting Type, Activity, …)", + "_label" : "group|name|GR-ContractingAuthority-Buyer", + "content" : [ { + "id" : "OPT-300-Procedure-Buyer", + "contentType" : "field", + "displayType" : "COMBOBOX", + "description" : "Buyer Technical Identifier Reference", + "_label" : "field|name|OPT-300-Procedure-Buyer", + "_idSchemes" : [ "ORG" ] + } ] + } ] + } ] + } ] +} \ No newline at end of file diff --git a/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/notice-types/notice-types.json b/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/notice-types/notice-types.json new file mode 100644 index 0000000..13d7343 --- /dev/null +++ b/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/notice-types/notice-types.json @@ -0,0 +1,148 @@ +{ + "ublVersion" : "2.3", + "sdkVersion" : "1.10.0", + "metadataDatabase" : { + "version" : "1.10.0", + "createdOn" : "2023-11-15T14:00:00" + }, + "noticeSubTypes" : [ { + "documentType" : "PIN", + "legalBasis" : "32014L0024", + "formType" : "planning", + "type" : "pin-buyer", + "description" : "Notice of the publication of a prior information notice on a buyer profile - general directive", + "subTypeId" : "1", + "_label" : "notice|name|1", + "viewTemplateIds" : [ "1", "summary" ] + }, { + "documentType" : "CN", + "legalBasis" : "32014L0024", + "formType" : "competition", + "type" : "cn-standard", + "description" : "Contract notice – general directive, standard regime", + "subTypeId" : "16", + "_label" : "notice|name|16", + "viewTemplateIds" : [ "16", "summary" ] + } ], + "documentTypes" : [ { + "id" : "BRIN", + "namespace" : "http://data.europa.eu/p27/eforms-business-registration-information-notice/1", + "rootElement" : "BusinessRegistrationInformationNotice", + "schemaLocation" : "schemas/maindoc/EFORMS-BusinessRegistrationInformationNotice.xsd", + "additionalNamespaces" : [ { + "prefix" : "cac", + "uri" : "urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2", + "schemaLocation" : "schemas/common/UBL-CommonAggregateComponents-2.3.xsd" + }, { + "prefix" : "cbc", + "uri" : "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2", + "schemaLocation" : "schemas/common/UBL-CommonBasicComponents-2.3.xsd" + }, { + "prefix" : "ext", + "uri" : "urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2", + "schemaLocation" : "schemas/common/UBL-CommonExtensionComponents-2.3.xsd" + }, { + "prefix" : "efext", + "uri" : "http://data.europa.eu/p27/eforms-ubl-extensions/1", + "schemaLocation" : "schemas/common/EFORMS-ExtensionApex-2.3.xsd" + }, { + "prefix" : "efac", + "uri" : "http://data.europa.eu/p27/eforms-ubl-extension-aggregate-components/1", + "schemaLocation" : "schemas/common/EFORMS-ExtensionAggregateComponents-2.3.xsd" + }, { + "prefix" : "efbc", + "uri" : "http://data.europa.eu/p27/eforms-ubl-extension-basic-components/1", + "schemaLocation" : "schemas/common/EFORMS-ExtensionBasicComponents-2.3.xsd" + } ] + }, { + "id" : "CAN", + "namespace" : "urn:oasis:names:specification:ubl:schema:xsd:ContractAwardNotice-2", + "rootElement" : "ContractAwardNotice", + "schemaLocation" : "schemas/maindoc/UBL-ContractAwardNotice-2.3.xsd", + "additionalNamespaces" : [ { + "prefix" : "cac", + "uri" : "urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2", + "schemaLocation" : "schemas/common/UBL-CommonAggregateComponents-2.3.xsd" + }, { + "prefix" : "cbc", + "uri" : "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2", + "schemaLocation" : "schemas/common/UBL-CommonBasicComponents-2.3.xsd" + }, { + "prefix" : "ext", + "uri" : "urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2", + "schemaLocation" : "schemas/common/UBL-CommonExtensionComponents-2.3.xsd" + }, { + "prefix" : "efext", + "uri" : "http://data.europa.eu/p27/eforms-ubl-extensions/1", + "schemaLocation" : "schemas/common/EFORMS-ExtensionApex-2.3.xsd" + }, { + "prefix" : "efac", + "uri" : "http://data.europa.eu/p27/eforms-ubl-extension-aggregate-components/1", + "schemaLocation" : "schemas/common/EFORMS-ExtensionAggregateComponents-2.3.xsd" + }, { + "prefix" : "efbc", + "uri" : "http://data.europa.eu/p27/eforms-ubl-extension-basic-components/1", + "schemaLocation" : "schemas/common/EFORMS-ExtensionBasicComponents-2.3.xsd" + } ] + }, { + "id" : "CN", + "namespace" : "urn:oasis:names:specification:ubl:schema:xsd:ContractNotice-2", + "rootElement" : "ContractNotice", + "schemaLocation" : "schemas/maindoc/UBL-ContractNotice-2.3.xsd", + "additionalNamespaces" : [ { + "prefix" : "cac", + "uri" : "urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2", + "schemaLocation" : "schemas/common/UBL-CommonAggregateComponents-2.3.xsd" + }, { + "prefix" : "cbc", + "uri" : "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2", + "schemaLocation" : "schemas/common/UBL-CommonBasicComponents-2.3.xsd" + }, { + "prefix" : "ext", + "uri" : "urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2", + "schemaLocation" : "schemas/common/UBL-CommonExtensionComponents-2.3.xsd" + }, { + "prefix" : "efext", + "uri" : "http://data.europa.eu/p27/eforms-ubl-extensions/1", + "schemaLocation" : "schemas/common/EFORMS-ExtensionApex-2.3.xsd" + }, { + "prefix" : "efac", + "uri" : "http://data.europa.eu/p27/eforms-ubl-extension-aggregate-components/1", + "schemaLocation" : "schemas/common/EFORMS-ExtensionAggregateComponents-2.3.xsd" + }, { + "prefix" : "efbc", + "uri" : "http://data.europa.eu/p27/eforms-ubl-extension-basic-components/1", + "schemaLocation" : "schemas/common/EFORMS-ExtensionBasicComponents-2.3.xsd" + } ] + }, { + "id" : "PIN", + "namespace" : "urn:oasis:names:specification:ubl:schema:xsd:PriorInformationNotice-2", + "rootElement" : "PriorInformationNotice", + "schemaLocation" : "schemas/maindoc/UBL-PriorInformationNotice-2.3.xsd", + "additionalNamespaces" : [ { + "prefix" : "cac", + "uri" : "urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2", + "schemaLocation" : "schemas/common/UBL-CommonAggregateComponents-2.3.xsd" + }, { + "prefix" : "cbc", + "uri" : "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2", + "schemaLocation" : "schemas/common/UBL-CommonBasicComponents-2.3.xsd" + }, { + "prefix" : "ext", + "uri" : "urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2", + "schemaLocation" : "schemas/common/UBL-CommonExtensionComponents-2.3.xsd" + }, { + "prefix" : "efext", + "uri" : "http://data.europa.eu/p27/eforms-ubl-extensions/1", + "schemaLocation" : "schemas/common/EFORMS-ExtensionApex-2.3.xsd" + }, { + "prefix" : "efac", + "uri" : "http://data.europa.eu/p27/eforms-ubl-extension-aggregate-components/1", + "schemaLocation" : "schemas/common/EFORMS-ExtensionAggregateComponents-2.3.xsd" + }, { + "prefix" : "efbc", + "uri" : "http://data.europa.eu/p27/eforms-ubl-extension-basic-components/1", + "schemaLocation" : "schemas/common/EFORMS-ExtensionBasicComponents-2.3.xsd" + } ] + } ] +} \ No newline at end of file diff --git a/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/schematrons/dynamic/complete-validation.sch b/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/schematrons/dynamic/complete-validation.sch new file mode 100644 index 0000000..01ac52a --- /dev/null +++ b/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/schematrons/dynamic/complete-validation.sch @@ -0,0 +1,317 @@ + + + + + eForms schematron rules + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cac:ProcessJustification + cac:AwardingTerms + cac:TechnicalCommitteePerson/cbc:FamilyName + cac:PostalAddress + cac:Contact + cac:BusinessParty + cac:PartyLegalEntity[cbc:CompanyID/@schemeName = 'EU']/cbc:CompanyID + cac:PartyLegalEntity[cbc:CompanyID/@schemeName = 'national']/cbc:CompanyID + cac:Party + cac:ServiceProviderParty/cac:Party/cac:PartyIdentification/cbc:ID + efac:Change + efac:Company + cac:PostalAddress/cbc:Department + cac:PartyLegalEntity/cbc:CompanyID + cac:Contact/cbc:Name + cac:Contact/cbc:Telephone + cac:Contact/cbc:ElectronicMail + cac:PostalAddress/cbc:CountrySubentityCode + cac:PostalAddress/cbc:StreetName + cac:PostalAddress/cbc:AdditionalStreetName + cac:PostalAddress/cac:AddressLine/cbc:Line + cac:PostalAddress/cbc:PostalZone + cac:PostalAddress/cbc:CityName + cac:PostalAddress/cac:Country/cbc:IdentificationCode + cac:Contact/cbc:Telefax + efac:ConcessionRevenue + efac:Funding + efac:ContractModification + efac:Change/efac:ChangedSection/efbc:ChangedSectionIdentifier + cac:ContractingParty + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:FieldsPrivacy + cac:SpecificTendererRequirement + cac:ContractExecutionRequirement + efac:DurationJustification + cac:FrameworkAgreement + efac:Funding + cac:AdditionalDocumentReference + cac:LotsGroup + cac:ProcurementProjectLotReference/cbc:ID[@schemeName='Lot'] + efac:InterestExpressionReceptionPeriod + cac:PartyLegalEntity + cac:AwardingCriterion + cac:SubordinateAwardingCriterion/cbc:AwardingCriterionTypeCode[@listName='award-criterion-type'] + efac:FieldsPrivacy + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:FieldsPrivacy + efac:AwardCriterionParameter[efbc:ParameterCode/@listName='number-fixed']/efbc:ParameterNumeric + efac:AwardCriterionParameter[efbc:ParameterCode/@listName='number-threshold']/efbc:ParameterNumeric + efac:AwardCriterionParameter[efbc:ParameterCode/@listName='number-weight']/efbc:ParameterNumeric + efac:FieldsPrivacy + cac:LotDistribution + cac:LotsGroup/cbc:LotsGroupID + cac:PlannedPeriod + cac:EmploymentLegislationDocumentReference + cac:EnvironmentalLegislationDocumentReference + cac:FiscalLegislationDocumentReference + cac:Address/cbc:CountrySubentityCode + cac:Address/cbc:StreetName + cac:Address/cbc:AdditionalStreetName + cac:Address/cac:AddressLine/cbc:Line + cac:Address/cbc:PostalZone + cac:Address/cbc:CityName + cac:Address/cac:Country/cbc:IdentificationCode + cac:Address/cbc:Region + cac:NoticeDocumentReference + cac:CallForTendersDocumentReference + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:OfficialLanguages/cac:Language/cbc:ID + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:NonOfficialLanguages/cac:Language/cbc:ID + cac:ProcurementProject + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='strategic-procurement']/cbc:ProcurementTypeCode + cac:MainCommodityClassification/cbc:ItemClassificationCode + cac:AdditionalCommodityClassification/cbc:ItemClassificationCode + cac:RequestedTenderTotal/ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efbc:FrameworkMaximumAmount + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='contract-nature']/cbc:ProcurementTypeCode + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='accessibility']/cbc:ProcurementTypeCode + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='environmental-impact']/cbc:ProcurementTypeCode + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='social-objective']/cbc:ProcurementTypeCode + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='innovative-acquisition']/cbc:ProcurementTypeCode + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='gpp-criteria']/cbc:ProcurementTypeCode + cac:TendererQualificationRequest + cac:SpecificTendererRequirement[cbc:TendererRequirementTypeCode/@listName='reserved-procurement']/cbc:TendererRequirementTypeCode + efac:LotResult + efac:FrameworkAgreementValues + efac:AppealRequestsStatistics[efbc:StatisticsCode/@listName='irregularity-type']/efbc:StatisticsCode + efac:AppealRequestsStatistics[efbc:StatisticsCode/@listName='review-type']/efbc:StatisticsCode + efac:ReceivedSubmissionsStatistics/efbc:StatisticsNumeric + efac:ReceivedSubmissionsStatistics/efbc:StatisticsCode + cac:FinancingParty/cac:PartyIdentification/cbc:ID + cac:PayerParty/cac:PartyIdentification/cbc:ID + efac:SettledContract/cbc:ID + efac:LotTender/cbc:ID + cac:AppealTerms + cac:PresentationPeriod/cbc:Description + efac:LotTender + efac:Origin + efac:Origin/efbc:AreaCode + efac:AggregatedAmounts/cbc:PaidAmount + efac:AggregatedAmounts/efbc:PaidAmountDescription + efac:AggregatedAmounts/efbc:PenaltiesAmount + efac:ContractTerm[not(efbc:TermCode/text()='all-rev-tic')][efbc:TermCode/@listName='contract-detail']/efbc:TermCode + efac:ContractTerm[efbc:TermCode/@listName='rewards-penalties']/efbc:TermCode + cac:TenderingProcess + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension + cac:NoticeDocumentReference/cbc:ReferencedDocumentInternalAddress + cac:ParticipationRequestReceptionPeriod/cbc:EndDate + cac:ParticipationRequestReceptionPeriod/cbc:EndTime + cac:TenderSubmissionDeadlinePeriod/cbc:EndDate + cac:TenderSubmissionDeadlinePeriod/cbc:EndTime + cac:OpenTenderEvent/cbc:OccurrenceDate + cac:AdditionalInformationRequestPeriod/cbc:EndDate + cac:AdditionalInformationRequestPeriod/cbc:EndTime + cac:ContractingSystem[cbc:ContractingSystemTypeCode/@listName='framework-agreement']/cbc:ContractingSystemTypeCode + cac:ContractingSystem[cbc:ContractingSystemTypeCode/@listName='dps-usage']/cbc:ContractingSystemTypeCode + cac:TenderingTerms + cac:TenderRecipientParty/cbc:EndpointID + cac:AllowedSubcontractTerms[cbc:SubcontractingConditionsCode/@listName='subcontracting-obligation']/cbc:SubcontractingConditionsCode + cac:ContractExecutionRequirement[cbc:ExecutionRequirementCode/@listName='reserved-execution']/cbc:ExecutionRequirementCode + cac:ContractExecutionRequirement[cbc:ExecutionRequirementCode/@listName='einvoicing']/cbc:ExecutionRequirementCode + cac:ContractExecutionRequirement[cbc:ExecutionRequirementCode/@listName='esignature-submission']/cbc:ExecutionRequirementCode + cac:RequiredFinancialGuarantee/cbc:Description + cac:RequiredFinancialGuarantee/cbc:GuaranteeTypeCode[@listName='tender-guarantee-required'] + cac:TendererQualificationRequest[not(cac:SpecificTendererRequirement)]/cbc:CompanyLegalForm + cac:TendererQualificationRequest[not(cac:SpecificTendererRequirement)]/cbc:CompanyLegalFormCode + cac:ContractExecutionRequirement[cbc:ExecutionRequirementCode/@listName='ecatalog-submission']/cbc:ExecutionRequirementCode + cac:ContractExecutionRequirement[cbc:ExecutionRequirementCode/@listName='nda']/cbc:ExecutionRequirementCode + cac:Language/cbc:ID + cac:ContractExecutionRequirement[cbc:ExecutionRequirementCode/@listName='conditions']/cbc:ExecutionRequirementCode + cac:ContractExecutionRequirement[cbc:ExecutionRequirementCode/@listName='customer-service']/cbc:ExecutionRequirementCode + cac:TenderRecipientParty/cac:PartyIdentification/cbc:ID + cac:RequestedTenderTotal + cac:SubordinateAwardingCriterion/cbc:AwardingCriterionTypeCode[@listName='award-criterion-type'] + efac:FieldsPrivacy + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:FieldsPrivacy + efac:AwardCriterionParameter[efbc:ParameterCode/@listName='number-fixed']/efbc:ParameterNumeric + efac:AwardCriterionParameter[efbc:ParameterCode/@listName='number-threshold']/efbc:ParameterNumeric + efac:AwardCriterionParameter[efbc:ParameterCode/@listName='number-weight']/efbc:ParameterNumeric + efac:FieldsPrivacy + cac:TenderingTerms/cac:AwardingTerms + cac:TenderingProcess/cac:FrameworkAgreement + cac:RequestedTenderTotal/ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efbc:FrameworkMaximumAmount + cac:RequestedTenderTotal + efac:Change + efac:ChangeReason + efac:ChangedSection + cac:ProcessJustification + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension + efac:Funding/efbc:FinancingIdentifier + efac:TenderSubcontractingRequirements/efbc:TenderSubcontractingRequirementsCode + efac:Funding/cbc:FundingProgramCode + efac:SelectionCriteria/cbc:CriterionTypeCode[@listName='selection-criterion'] + efac:DecisionReason/efac:FieldsPrivacy + efac:FieldsPrivacy + efac:NoticeResult + efac:GroupFramework + efac:NoticePurpose + cac:ContractExtension + cac:Renewal/cac:Period/cbc:Description + efac:Organization + efac:TouchPoint/cac:PartyIdentification/cbc:ID + efac:UltimateBeneficialOwner/cbc:ID + efac:Organizations + efac:UltimateBeneficialOwner/cbc:ID + efac:ContractTerm + efac:AnswerReceptionPeriod + cac:ProcurementProjectLot[cbc:ID/@schemeName='Part'] + cac:EmploymentLegislationDocumentReference + cac:EnvironmentalLegislationDocumentReference + cac:FiscalLegislationDocumentReference + cac:Address/cbc:CountrySubentityCode + cac:Address/cbc:StreetName + cac:Address/cbc:AdditionalStreetName + cac:Address/cac:AddressLine/cbc:Line + cac:Address/cbc:PostalZone + cac:Address/cbc:CityName + cac:Address/cac:Country/cbc:IdentificationCode + cac:Address/cbc:Region + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:OfficialLanguages/cac:Language/cbc:ID + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:NonOfficialLanguages/cac:Language/cbc:ID + cac:ProcurementProject + cac:MainCommodityClassification/cbc:ItemClassificationCode + cac:AdditionalCommodityClassification/cbc:ItemClassificationCode + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='contract-nature']/cbc:ProcurementTypeCode + cac:SpecificTendererRequirement[cbc:TendererRequirementTypeCode/@listName='reserved-procurement']/cbc:TendererRequirementTypeCode + cac:AppealTerms + cac:NoticeDocumentReference/cbc:ReferencedDocumentInternalAddress + cac:AdditionalInformationRequestPeriod/cbc:EndDate + cac:AdditionalInformationRequestPeriod/cbc:EndTime + cac:ContractingSystem[cbc:ContractingSystemTypeCode/@listName='framework-agreement']/cbc:ContractingSystemTypeCode + cac:ContractingSystem[cbc:ContractingSystemTypeCode/@listName='dps-usage']/cbc:ContractingSystemTypeCode + cac:TenderingTerms + cac:ContractExecutionRequirement[cbc:ExecutionRequirementCode/@listName='reserved-execution']/cbc:ExecutionRequirementCode + cac:EconomicOperatorShortList + cac:PreSelectedParty/cac:PartyName/cbc:Name + cac:PaymentTerms + cac:PostAwardProcess + cac:Prize + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:FieldsPrivacy + cac:RealizedLocation + cac:ProcurementProject + cac:MainCommodityClassification/cbc:ItemClassificationCode + cac:AdditionalCommodityClassification/cbc:ItemClassificationCode + cac:RequestedTenderTotal/ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efbc:FrameworkMaximumAmount + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='contract-nature']/cbc:ProcurementTypeCode + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='transport-service']/cbc:ProcurementTypeCode + cac:TenderingProcess + cac:NoticeDocumentReference/cbc:ID + cac:TenderingTerms + cac:ProcurementLegislationDocumentReference[not(cbc:ID/text()=('CrossBorderLaw','LocalLegalBasis'))]/cbc:ID + cac:ProcurementLegislationDocumentReference[cbc:ID/text()='LocalLegalBasis']/cbc:ID + cac:ProcurementLegislationDocumentReference[cbc:ID/text()='CrossBorderLaw']/cbc:ID + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:FieldsPrivacy + cac:RequestedTenderTotal + cac:OpenTenderEvent + cac:OccurenceLocation/cbc:Description + efac:ReceivedSubmissionsStatistics + efac:AppealsInformation + efac:AppealRequestsStatistics + efac:AppealedItem/cbc:ID + efac:AppealDecision/efbc:DecisionTypeCode + efac:AppealIrregularity/efbc:IrregularityTypeCode + efac:AppealRemedy/efbc:RemedyTypeCode + efac:AppealProcessingParty/efbc:AppealProcessingPartyTypeCode + efac:AppealingParty/efbc:AppealingPartyTypeCode + efac:AppealProcessingParty/efbc:AppealProcessingPartyTypeDescription + efac:AppealProcessingParty/cac:Party/cac:PartyIdentification/cbc:ID + efac:AppealingParty/cac:Party/cac:PartyIdentification/cbc:ID + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension + efac:Publication/efbc:NoticePublicationID[@schemeName='ojs-notice-id'] + efac:Publication/efbc:GazetteID[@schemeName='ojs-id'] + efac:Publication/efbc:PublicationDate + cac:BusinessCapability/cbc:CapabilityTypeCode + cac:ContractingParty/cac:Party/cac:PartyIdentification/cbc:ID + cac:EconomicOperatorShortList + efac:CriterionParameter + cac:SecurityClearanceTerm + efac:SelectionCriteria + efac:CriterionParameter[efbc:ParameterCode/@listName='number-threshold']/efbc:ParameterNumeric + efac:CriterionParameter[efbc:ParameterCode/@listName='number-weight']/efbc:ParameterNumeric + cac:SenderParty/cac:Contact + efac:SettledContract + efac:LotTender/cbc:ID + efac:Funding/efbc:FinancingIdentifier + efac:Funding/cbc:FundingProgramCode + cac:SignatoryParty/cac:PartyIdentification/cbc:ID + efac:StrategicProcurement + efac:StrategicProcurement + efac:MainContractor/cbc:ID + efac:SubcontractingTerm + cac:AllowedSubcontractTerms + cac:TendererQualificationRequest + efac:Tenderer/cbc:ID + efac:SubContractor/cbc:ID + cac:PostalAddress/cbc:Department + cac:Contact/cbc:Name + cac:Contact/cbc:Telephone + cac:Contact/cbc:ElectronicMail + cac:PostalAddress/cbc:CountrySubentityCode + cac:PostalAddress/cbc:StreetName + cac:PostalAddress/cbc:AdditionalStreetName + cac:PostalAddress/cac:AddressLine/cbc:Line + cac:PostalAddress/cbc:PostalZone + cac:PostalAddress/cbc:CityName + cac:PostalAddress/cac:Country/cbc:IdentificationCode + cac:Contact/cbc:Telefax + cac:Contact/cbc:Telephone + cac:Contact/cbc:ElectronicMail + cac:ResidenceAddress/cbc:CountrySubentityCode + cac:ResidenceAddress/cbc:StreetName + cac:ResidenceAddress/cbc:AdditionalStreetName + cac:ResidenceAddress/cac:AddressLine/cbc:Line + cac:ResidenceAddress/cbc:PostalZone + cac:ResidenceAddress/cbc:CityName + cac:ResidenceAddress/cac:Country/cbc:IdentificationCode + efac:Nationality/cbc:NationalityID + cac:Contact/cbc:Telefax + efac:FieldsPrivacy + + \ No newline at end of file diff --git a/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/schematrons/dynamic/config.sch b/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/schematrons/dynamic/config.sch new file mode 100644 index 0000000..bb6e87b --- /dev/null +++ b/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/schematrons/dynamic/config.sch @@ -0,0 +1,5 @@ + + + diff --git a/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/schematrons/dynamic/validation-stage-1a.sch b/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/schematrons/dynamic/validation-stage-1a.sch new file mode 100644 index 0000000..9ab9877 --- /dev/null +++ b/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/schematrons/dynamic/validation-stage-1a.sch @@ -0,0 +1,21 @@ + + + + + rule|text|P-0001 + + + rule|text|P-0002 + + + + + rule|text|P-0004 + + + + + rule|text|P-0005 + + + diff --git a/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/schematrons/dynamic/validation-stage-1b-1.sch b/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/schematrons/dynamic/validation-stage-1b-1.sch new file mode 100644 index 0000000..2ea90d9 --- /dev/null +++ b/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/schematrons/dynamic/validation-stage-1b-1.sch @@ -0,0 +1,40 @@ + + + + + rule|text|ND-BusinessParty-1 + rule|text|ND-ContractingParty-1 + rule|text|ND-GazetteReference-1 + rule|text|ND-OperationType-1 + rule|text|ND-Part-1 + rule|text|ND-ProcedureProcurementScope-1 + rule|text|ND-ProcedureTenderingProcess-1 + rule|text|ND-RootExtension-1 + rule|text|ND-SenderContact-1 + + + rule|text|ND-Buyer-1 + + + rule|text|ND-ProcedureValueEstimate-1 + + + rule|text|ND-LotDistribution-1 + rule|text|ND-TendererQualificationRequest-1 + + + rule|text|ND-CrossBorderLawUnpublish-1 + + + rule|text|ND-ContractModification-1 + rule|text|ND-NoticeResult-1 + rule|text|ND-Organizations-1 + rule|text|ND-ReviewRequests-1 + + + rule|text|ND-Organization-1 + + + rule|text|ND-Company-1 + + diff --git a/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/schematrons/dynamic/validation-stage-1b-16.sch b/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/schematrons/dynamic/validation-stage-1b-16.sch new file mode 100644 index 0000000..67d8951 --- /dev/null +++ b/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/schematrons/dynamic/validation-stage-1b-16.sch @@ -0,0 +1,85 @@ + + + + + rule|text|ND-BusinessParty-16 + rule|text|ND-ContractingParty-16 + rule|text|ND-GazetteReference-16 + rule|text|ND-OperationType-16 + rule|text|ND-Part-16 + rule|text|ND-ProcedureProcurementScope-16 + rule|text|ND-ProcedureTenderingProcess-16 + rule|text|ND-ProcedureTerms-16 + rule|text|ND-RootExtension-16 + rule|text|ND-SenderContact-16 + + + rule|text|ND-Buyer-16 + + + rule|text|ND-LotProcurementScope-16 + rule|text|ND-LotTenderingProcess-16 + rule|text|ND-LotTenderingTerms-16 + + + rule|text|ND-AuctionTerms-16 + + + rule|text|ND-InterestExpressionReceptionPeriod-16 + rule|text|ND-PMCAnswersDeadline-16 + + + rule|text|ND-LotProcurementDocument-16 + rule|text|ND-LotReservedParticipation-16 + rule|text|ND-LotReviewTerms-16 + rule|text|ND-NonUBLTenderingTerms-16 + rule|text|ND-Participants-16 + rule|text|ND-PostAwardProcess-16 + rule|text|ND-SubcontractingObligation-16 + + + rule|text|ND-LotAwardCriterionNumberComplicatedUnpublish-16 + + + rule|text|ND-LotAwardCriterionTypeUnpublish-16 + + + rule|text|ND-LotAwardCriterionFixNumberUnpublish-16 + + + rule|text|ND-LotsGroupAwardCriterionNumberComplicatedUnpublish-16 + + + rule|text|ND-LotsGroupAwardCriterionTypeUnpublish-16 + + + rule|text|ND-LotsGroupAwardCriterionFixNumberUnpublish-16 + + + rule|text|ND-ProcedureTypeUnpublish-16 + + + rule|text|ND-ProcedureAcceleratedUnpublish-16 + + + rule|text|ND-TendererQualificationRequest-16 + + + rule|text|ND-CrossBorderLawUnpublish-16 + + + rule|text|ND-ExclusionGrounds-16 + + + rule|text|ND-ContractModification-16 + rule|text|ND-NoticeResult-16 + rule|text|ND-Organizations-16 + rule|text|ND-ReviewRequests-16 + + + rule|text|ND-Organization-16 + + + rule|text|ND-Company-16 + + diff --git a/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/schematrons/static/complete-validation.sch b/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/schematrons/static/complete-validation.sch new file mode 100644 index 0000000..c17da2c --- /dev/null +++ b/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/schematrons/static/complete-validation.sch @@ -0,0 +1,316 @@ + + + + + eForms schematron rules + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cac:ProcessJustification + cac:AuctionTerms + cac:AwardingTerms + cac:TechnicalCommitteePerson/cbc:FamilyName + cac:PostalAddress + cac:Contact + cac:BusinessParty + cac:PartyLegalEntity[cbc:CompanyID/@schemeName = 'EU']/cbc:CompanyID + cac:PartyLegalEntity[cbc:CompanyID/@schemeName = 'national']/cbc:CompanyID + cac:Party + cac:ServiceProviderParty/cac:Party/cac:PartyIdentification/cbc:ID + efac:Change + efac:Company + cac:PostalAddress/cbc:Department + cac:PartyLegalEntity/cbc:CompanyID + cac:Contact/cbc:Name + cac:Contact/cbc:Telephone + cac:Contact/cbc:ElectronicMail + cac:PostalAddress/cbc:CountrySubentityCode + cac:PostalAddress/cbc:StreetName + cac:PostalAddress/cbc:AdditionalStreetName + cac:PostalAddress/cac:AddressLine/cbc:Line + cac:PostalAddress/cbc:PostalZone + cac:PostalAddress/cbc:CityName + cac:PostalAddress/cac:Country/cbc:IdentificationCode + cac:Contact/cbc:Telefax + efac:ConcessionRevenue + efac:Funding + efac:ContractModification + efac:Change/efac:ChangedSection/efbc:ChangedSectionIdentifier + cac:ContractingParty + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:FieldsPrivacy + cac:SpecificTendererRequirement + cac:ContractExecutionRequirement + efac:DurationJustification + cac:FrameworkAgreement + efac:Funding + cac:AdditionalDocumentReference + cac:LotsGroup + cac:ProcurementProjectLotReference/cbc:ID[@schemeName='Lot'] + efac:InterestExpressionReceptionPeriod + cac:PartyLegalEntity + cac:AwardingCriterion + cac:SubordinateAwardingCriterion/cbc:AwardingCriterionTypeCode[@listName='award-criterion-type'] + efac:FieldsPrivacy + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:FieldsPrivacy + efac:AwardCriterionParameter[efbc:ParameterCode/@listName='number-fixed']/efbc:ParameterNumeric + efac:AwardCriterionParameter[efbc:ParameterCode/@listName='number-threshold']/efbc:ParameterNumeric + efac:AwardCriterionParameter[efbc:ParameterCode/@listName='number-weight']/efbc:ParameterNumeric + efac:FieldsPrivacy + cac:LotDistribution + cac:LotsGroup/cbc:LotsGroupID + cac:PlannedPeriod + cac:EmploymentLegislationDocumentReference + cac:EnvironmentalLegislationDocumentReference + cac:FiscalLegislationDocumentReference + cac:Address/cbc:CountrySubentityCode + cac:Address/cbc:StreetName + cac:Address/cbc:AdditionalStreetName + cac:Address/cac:AddressLine/cbc:Line + cac:Address/cbc:PostalZone + cac:Address/cbc:CityName + cac:Address/cac:Country/cbc:IdentificationCode + cac:Address/cbc:Region + cac:NoticeDocumentReference + cac:CallForTendersDocumentReference + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:OfficialLanguages/cac:Language/cbc:ID + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:NonOfficialLanguages/cac:Language/cbc:ID + cac:ProcurementProject + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='strategic-procurement']/cbc:ProcurementTypeCode + cac:MainCommodityClassification/cbc:ItemClassificationCode + cac:AdditionalCommodityClassification/cbc:ItemClassificationCode + cac:RequestedTenderTotal/ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efbc:FrameworkMaximumAmount + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='contract-nature']/cbc:ProcurementTypeCode + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='accessibility']/cbc:ProcurementTypeCode + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='environmental-impact']/cbc:ProcurementTypeCode + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='social-objective']/cbc:ProcurementTypeCode + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='innovative-acquisition']/cbc:ProcurementTypeCode + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='gpp-criteria']/cbc:ProcurementTypeCode + cac:TendererQualificationRequest + cac:SpecificTendererRequirement[cbc:TendererRequirementTypeCode/@listName='reserved-procurement']/cbc:TendererRequirementTypeCode + efac:LotResult + efac:FrameworkAgreementValues + efac:AppealRequestsStatistics[efbc:StatisticsCode/@listName='irregularity-type']/efbc:StatisticsCode + efac:AppealRequestsStatistics[efbc:StatisticsCode/@listName='review-type']/efbc:StatisticsCode + efac:ReceivedSubmissionsStatistics/efbc:StatisticsNumeric + efac:ReceivedSubmissionsStatistics/efbc:StatisticsCode + cac:FinancingParty/cac:PartyIdentification/cbc:ID + cac:PayerParty/cac:PartyIdentification/cbc:ID + efac:SettledContract/cbc:ID + efac:LotTender/cbc:ID + cac:AppealTerms + cac:PresentationPeriod/cbc:Description + efac:LotTender + efac:Origin + efac:Origin/efbc:AreaCode + efac:AggregatedAmounts/cbc:PaidAmount + efac:AggregatedAmounts/efbc:PaidAmountDescription + efac:AggregatedAmounts/efbc:PenaltiesAmount + efac:ContractTerm[not(efbc:TermCode/text()='all-rev-tic')][efbc:TermCode/@listName='contract-detail']/efbc:TermCode + efac:ContractTerm[efbc:TermCode/@listName='rewards-penalties']/efbc:TermCode + cac:TenderingProcess + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension + cac:NoticeDocumentReference/cbc:ReferencedDocumentInternalAddress + cac:ParticipationRequestReceptionPeriod/cbc:EndDate + cac:ParticipationRequestReceptionPeriod/cbc:EndTime + cac:TenderSubmissionDeadlinePeriod/cbc:EndDate + cac:TenderSubmissionDeadlinePeriod/cbc:EndTime + cac:OpenTenderEvent/cbc:OccurrenceDate + cac:AdditionalInformationRequestPeriod/cbc:EndDate + cac:AdditionalInformationRequestPeriod/cbc:EndTime + cac:ContractingSystem[cbc:ContractingSystemTypeCode/@listName='framework-agreement']/cbc:ContractingSystemTypeCode + cac:ContractingSystem[cbc:ContractingSystemTypeCode/@listName='dps-usage']/cbc:ContractingSystemTypeCode + cac:TenderingTerms + cac:TenderRecipientParty/cbc:EndpointID + cac:AllowedSubcontractTerms[cbc:SubcontractingConditionsCode/@listName='subcontracting-obligation']/cbc:SubcontractingConditionsCode + cac:ContractExecutionRequirement[cbc:ExecutionRequirementCode/@listName='reserved-execution']/cbc:ExecutionRequirementCode + cac:ContractExecutionRequirement[cbc:ExecutionRequirementCode/@listName='einvoicing']/cbc:ExecutionRequirementCode + cac:ContractExecutionRequirement[cbc:ExecutionRequirementCode/@listName='esignature-submission']/cbc:ExecutionRequirementCode + cac:RequiredFinancialGuarantee/cbc:Description + cac:RequiredFinancialGuarantee/cbc:GuaranteeTypeCode[@listName='tender-guarantee-required'] + cac:TendererQualificationRequest[not(cac:SpecificTendererRequirement)]/cbc:CompanyLegalForm + cac:TendererQualificationRequest[not(cac:SpecificTendererRequirement)]/cbc:CompanyLegalFormCode + cac:ContractExecutionRequirement[cbc:ExecutionRequirementCode/@listName='ecatalog-submission']/cbc:ExecutionRequirementCode + cac:ContractExecutionRequirement[cbc:ExecutionRequirementCode/@listName='nda']/cbc:ExecutionRequirementCode + cac:Language/cbc:ID + cac:ContractExecutionRequirement[cbc:ExecutionRequirementCode/@listName='conditions']/cbc:ExecutionRequirementCode + cac:ContractExecutionRequirement[cbc:ExecutionRequirementCode/@listName='customer-service']/cbc:ExecutionRequirementCode + cac:TenderRecipientParty/cac:PartyIdentification/cbc:ID + cac:RequestedTenderTotal + cac:SubordinateAwardingCriterion/cbc:AwardingCriterionTypeCode[@listName='award-criterion-type'] + efac:FieldsPrivacy + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:FieldsPrivacy + efac:AwardCriterionParameter[efbc:ParameterCode/@listName='number-fixed']/efbc:ParameterNumeric + efac:AwardCriterionParameter[efbc:ParameterCode/@listName='number-threshold']/efbc:ParameterNumeric + efac:AwardCriterionParameter[efbc:ParameterCode/@listName='number-weight']/efbc:ParameterNumeric + efac:FieldsPrivacy + cac:TenderingTerms/cac:AwardingTerms + cac:TenderingProcess/cac:FrameworkAgreement + cac:RequestedTenderTotal/ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efbc:FrameworkMaximumAmount + cac:RequestedTenderTotal + efac:Change + efac:ChangeReason + efac:ChangedSection + cac:ProcessJustification + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension + efac:Funding/efbc:FinancingIdentifier + efac:TenderSubcontractingRequirements/efbc:TenderSubcontractingRequirementsCode + efac:Funding/cbc:FundingProgramCode + efac:SelectionCriteria/cbc:CriterionTypeCode[@listName='selection-criterion'] + efac:DecisionReason/efac:FieldsPrivacy + efac:FieldsPrivacy + efac:NoticeResult + efac:GroupFramework + efac:NoticePurpose + cac:ContractExtension + cac:Renewal/cac:Period/cbc:Description + efac:Organization + efac:TouchPoint/cac:PartyIdentification/cbc:ID + efac:UltimateBeneficialOwner/cbc:ID + efac:Organizations + efac:UltimateBeneficialOwner/cbc:ID + efac:ContractTerm + efac:AnswerReceptionPeriod + cac:ProcurementProjectLot[cbc:ID/@schemeName='Part'] + cac:EmploymentLegislationDocumentReference + cac:EnvironmentalLegislationDocumentReference + cac:FiscalLegislationDocumentReference + cac:Address/cbc:CountrySubentityCode + cac:Address/cbc:StreetName + cac:Address/cbc:AdditionalStreetName + cac:Address/cac:AddressLine/cbc:Line + cac:Address/cbc:PostalZone + cac:Address/cbc:CityName + cac:Address/cac:Country/cbc:IdentificationCode + cac:Address/cbc:Region + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:OfficialLanguages/cac:Language/cbc:ID + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:NonOfficialLanguages/cac:Language/cbc:ID + cac:ProcurementProject + cac:MainCommodityClassification/cbc:ItemClassificationCode + cac:AdditionalCommodityClassification/cbc:ItemClassificationCode + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='contract-nature']/cbc:ProcurementTypeCode + cac:SpecificTendererRequirement[cbc:TendererRequirementTypeCode/@listName='reserved-procurement']/cbc:TendererRequirementTypeCode + cac:AppealTerms + cac:NoticeDocumentReference/cbc:ReferencedDocumentInternalAddress + cac:AdditionalInformationRequestPeriod/cbc:EndDate + cac:AdditionalInformationRequestPeriod/cbc:EndTime + cac:ContractingSystem[cbc:ContractingSystemTypeCode/@listName='framework-agreement']/cbc:ContractingSystemTypeCode + cac:ContractingSystem[cbc:ContractingSystemTypeCode/@listName='dps-usage']/cbc:ContractingSystemTypeCode + cac:TenderingTerms + cac:ContractExecutionRequirement[cbc:ExecutionRequirementCode/@listName='reserved-execution']/cbc:ExecutionRequirementCode + cac:EconomicOperatorShortList + cac:PreSelectedParty/cac:PartyName/cbc:Name + cac:PaymentTerms + cac:PostAwardProcess + cac:Prize + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:FieldsPrivacy + cac:RealizedLocation + cac:ProcurementProject + cac:MainCommodityClassification/cbc:ItemClassificationCode + cac:AdditionalCommodityClassification/cbc:ItemClassificationCode + cac:RequestedTenderTotal/ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efbc:FrameworkMaximumAmount + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='contract-nature']/cbc:ProcurementTypeCode + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='transport-service']/cbc:ProcurementTypeCode + cac:TenderingProcess + cac:NoticeDocumentReference/cbc:ID + cac:TenderingTerms + cac:ProcurementLegislationDocumentReference[not(cbc:ID/text()=('CrossBorderLaw','LocalLegalBasis'))]/cbc:ID + cac:ProcurementLegislationDocumentReference[cbc:ID/text()='LocalLegalBasis']/cbc:ID + cac:ProcurementLegislationDocumentReference[cbc:ID/text()='CrossBorderLaw']/cbc:ID + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:FieldsPrivacy + cac:RequestedTenderTotal + cac:OpenTenderEvent + cac:OccurenceLocation/cbc:Description + efac:ReceivedSubmissionsStatistics + efac:AppealsInformation + efac:AppealRequestsStatistics + efac:AppealedItem/cbc:ID + efac:AppealDecision/efbc:DecisionTypeCode + efac:AppealIrregularity/efbc:IrregularityTypeCode + efac:AppealRemedy/efbc:RemedyTypeCode + efac:AppealProcessingParty/efbc:AppealProcessingPartyTypeCode + efac:AppealingParty/efbc:AppealingPartyTypeCode + efac:AppealProcessingParty/efbc:AppealProcessingPartyTypeDescription + efac:AppealProcessingParty/cac:Party/cac:PartyIdentification/cbc:ID + efac:AppealingParty/cac:Party/cac:PartyIdentification/cbc:ID + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension + efac:Publication/efbc:NoticePublicationID[@schemeName='ojs-notice-id'] + efac:Publication/efbc:GazetteID[@schemeName='ojs-id'] + efac:Publication/efbc:PublicationDate + cac:BusinessCapability/cbc:CapabilityTypeCode + cac:ContractingParty/cac:Party/cac:PartyIdentification/cbc:ID + cac:EconomicOperatorShortList + efac:CriterionParameter + cac:SecurityClearanceTerm + efac:SelectionCriteria + efac:CriterionParameter[efbc:ParameterCode/@listName='number-threshold']/efbc:ParameterNumeric + efac:CriterionParameter[efbc:ParameterCode/@listName='number-weight']/efbc:ParameterNumeric + cac:SenderParty/cac:Contact + efac:SettledContract + efac:LotTender/cbc:ID + efac:Funding/efbc:FinancingIdentifier + efac:Funding/cbc:FundingProgramCode + cac:SignatoryParty/cac:PartyIdentification/cbc:ID + efac:StrategicProcurement + efac:StrategicProcurement + efac:MainContractor/cbc:ID + efac:SubcontractingTerm + cac:AllowedSubcontractTerms + cac:TendererQualificationRequest + efac:Tenderer/cbc:ID + efac:SubContractor/cbc:ID + cac:PostalAddress/cbc:Department + cac:Contact/cbc:Name + cac:Contact/cbc:Telephone + cac:Contact/cbc:ElectronicMail + cac:PostalAddress/cbc:CountrySubentityCode + cac:PostalAddress/cbc:StreetName + cac:PostalAddress/cbc:AdditionalStreetName + cac:PostalAddress/cac:AddressLine/cbc:Line + cac:PostalAddress/cbc:PostalZone + cac:PostalAddress/cbc:CityName + cac:PostalAddress/cac:Country/cbc:IdentificationCode + cac:Contact/cbc:Telefax + cac:Contact/cbc:Telephone + cac:Contact/cbc:ElectronicMail + cac:ResidenceAddress/cbc:CountrySubentityCode + cac:ResidenceAddress/cbc:StreetName + cac:ResidenceAddress/cbc:AdditionalStreetName + cac:ResidenceAddress/cac:AddressLine/cbc:Line + cac:ResidenceAddress/cbc:PostalZone + cac:ResidenceAddress/cbc:CityName + cac:ResidenceAddress/cac:Country/cbc:IdentificationCode + efac:Nationality/cbc:NationalityID + cac:Contact/cbc:Telefax + efac:FieldsPrivacy + + \ No newline at end of file diff --git a/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/schematrons/static/validation-stage-1a.sch b/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/schematrons/static/validation-stage-1a.sch new file mode 100644 index 0000000..9ab9877 --- /dev/null +++ b/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/schematrons/static/validation-stage-1a.sch @@ -0,0 +1,21 @@ + + + + + rule|text|P-0001 + + + rule|text|P-0002 + + + + + rule|text|P-0004 + + + + + rule|text|P-0005 + + + diff --git a/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/schematrons/static/validation-stage-1b-1.sch b/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/schematrons/static/validation-stage-1b-1.sch new file mode 100644 index 0000000..1bd476f --- /dev/null +++ b/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/schematrons/static/validation-stage-1b-1.sch @@ -0,0 +1,40 @@ + + + + + rule|text|ND-BusinessParty-1 + rule|text|ND-ContractingParty-1 + rule|text|ND-GazetteReference-1 + rule|text|ND-OperationType-1 + rule|text|ND-Part-1 + rule|text|ND-ProcedureProcurementScope-1 + rule|text|ND-ProcedureTenderingProcess-1 + rule|text|ND-RootExtension-1 + rule|text|ND-SenderContact-1 + + + rule|text|ND-Buyer-1 + + + rule|text|ND-ProcedureValueEstimate-1 + + + rule|text|ND-LotDistribution-1 + rule|text|ND-TendererQualificationRequest-1 + + + rule|text|ND-CrossBorderLawUnpublish-1 + + + rule|text|ND-ContractModification-1 + rule|text|ND-NoticeResult-1 + rule|text|ND-Organizations-1 + rule|text|ND-ReviewRequests-1 + + + rule|text|ND-Organization-1 + + + rule|text|ND-Company-1 + + diff --git a/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/schematrons/static/validation-stage-1b-16.sch b/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/schematrons/static/validation-stage-1b-16.sch new file mode 100644 index 0000000..67d8951 --- /dev/null +++ b/src/test/resources/eforms-sdk-tests/tedefo-2768/invalid/schematrons/static/validation-stage-1b-16.sch @@ -0,0 +1,85 @@ + + + + + rule|text|ND-BusinessParty-16 + rule|text|ND-ContractingParty-16 + rule|text|ND-GazetteReference-16 + rule|text|ND-OperationType-16 + rule|text|ND-Part-16 + rule|text|ND-ProcedureProcurementScope-16 + rule|text|ND-ProcedureTenderingProcess-16 + rule|text|ND-ProcedureTerms-16 + rule|text|ND-RootExtension-16 + rule|text|ND-SenderContact-16 + + + rule|text|ND-Buyer-16 + + + rule|text|ND-LotProcurementScope-16 + rule|text|ND-LotTenderingProcess-16 + rule|text|ND-LotTenderingTerms-16 + + + rule|text|ND-AuctionTerms-16 + + + rule|text|ND-InterestExpressionReceptionPeriod-16 + rule|text|ND-PMCAnswersDeadline-16 + + + rule|text|ND-LotProcurementDocument-16 + rule|text|ND-LotReservedParticipation-16 + rule|text|ND-LotReviewTerms-16 + rule|text|ND-NonUBLTenderingTerms-16 + rule|text|ND-Participants-16 + rule|text|ND-PostAwardProcess-16 + rule|text|ND-SubcontractingObligation-16 + + + rule|text|ND-LotAwardCriterionNumberComplicatedUnpublish-16 + + + rule|text|ND-LotAwardCriterionTypeUnpublish-16 + + + rule|text|ND-LotAwardCriterionFixNumberUnpublish-16 + + + rule|text|ND-LotsGroupAwardCriterionNumberComplicatedUnpublish-16 + + + rule|text|ND-LotsGroupAwardCriterionTypeUnpublish-16 + + + rule|text|ND-LotsGroupAwardCriterionFixNumberUnpublish-16 + + + rule|text|ND-ProcedureTypeUnpublish-16 + + + rule|text|ND-ProcedureAcceleratedUnpublish-16 + + + rule|text|ND-TendererQualificationRequest-16 + + + rule|text|ND-CrossBorderLawUnpublish-16 + + + rule|text|ND-ExclusionGrounds-16 + + + rule|text|ND-ContractModification-16 + rule|text|ND-NoticeResult-16 + rule|text|ND-Organizations-16 + rule|text|ND-ReviewRequests-16 + + + rule|text|ND-Organization-16 + + + rule|text|ND-Company-16 + + diff --git a/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/notice-types/1.json b/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/notice-types/1.json new file mode 100644 index 0000000..f4a8a55 --- /dev/null +++ b/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/notice-types/1.json @@ -0,0 +1,48 @@ +{ + "ublVersion" : "2.3", + "sdkVersion" : "1.10.0", + "metadataDatabase" : { + "version" : "1.10.0", + "createdOn" : "2023-11-15T14:00:00" + }, + "noticeId" : "1", + "metadata" : [ { + "id" : "BT-02-notice", + "contentType" : "field", + "displayType" : "COMBOBOX", + "description" : "Notice Type", + "_label" : "field|name|BT-02-notice", + "readOnly" : true + } ], + "content" : [ { + "id" : "GR-Buyer", + "contentType" : "group", + "displayType" : "SECTION", + "description" : "Contracting Party and Provider related Information", + "_label" : "group|name|GR-Buyer", + "content" : [ { + "id" : "GR-ContractingAuthority", + "contentType" : "group", + "nodeId" : "ND-ContractingParty", + "displayType" : "GROUP", + "description" : "Contracting Party related Information (URL, Legal Type, Contracting Type, Activity, …)", + "_label" : "group|name|ND-ContractingParty", + "_repeatable" : true, + "content" : [ { + "id" : "GR-ContractingAuthority-Buyer", + "contentType" : "group", + "displayType" : "GROUP", + "description" : "Contracting Party related Information (URL, Legal Type, Contracting Type, Activity, …)", + "_label" : "group|name|GR-ContractingAuthority-Buyer", + "content" : [ { + "id" : "OPT-300-Procedure-Buyer", + "contentType" : "field", + "displayType" : "COMBOBOX", + "description" : "Buyer Technical Identifier Reference", + "_label" : "field|name|OPT-300-Procedure-Buyer", + "_idSchemes" : [ "ORG" ] + } ] + } ] + } ] + } ] +} \ No newline at end of file diff --git a/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/notice-types/16.json b/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/notice-types/16.json new file mode 100644 index 0000000..d5a465c --- /dev/null +++ b/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/notice-types/16.json @@ -0,0 +1,48 @@ +{ + "ublVersion" : "2.3", + "sdkVersion" : "1.10.0", + "metadataDatabase" : { + "version" : "1.10.0", + "createdOn" : "2023-11-15T14:00:00" + }, + "noticeId" : "16", + "metadata" : [ { + "id" : "BT-02-notice", + "contentType" : "field", + "displayType" : "COMBOBOX", + "description" : "Notice Type", + "_label" : "field|name|BT-02-notice", + "readOnly" : true + } ], + "content" : [ { + "id" : "GR-Buyer", + "contentType" : "group", + "displayType" : "SECTION", + "description" : "Contracting Party and Provider related Information", + "_label" : "group|name|GR-Buyer", + "content" : [ { + "id" : "GR-ContractingAuthority", + "contentType" : "group", + "nodeId" : "ND-ContractingParty", + "displayType" : "GROUP", + "description" : "Contracting Party related Information (URL, Legal Type, Contracting Type, Activity, …)", + "_label" : "group|name|ND-ContractingParty", + "_repeatable" : true, + "content" : [ { + "id" : "GR-ContractingAuthority-Buyer", + "contentType" : "group", + "displayType" : "GROUP", + "description" : "Contracting Party related Information (URL, Legal Type, Contracting Type, Activity, …)", + "_label" : "group|name|GR-ContractingAuthority-Buyer", + "content" : [ { + "id" : "OPT-300-Procedure-Buyer", + "contentType" : "field", + "displayType" : "COMBOBOX", + "description" : "Buyer Technical Identifier Reference", + "_label" : "field|name|OPT-300-Procedure-Buyer", + "_idSchemes" : [ "ORG" ] + } ] + } ] + } ] + } ] +} \ No newline at end of file diff --git a/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/notice-types/notice-types.json b/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/notice-types/notice-types.json new file mode 100644 index 0000000..13d7343 --- /dev/null +++ b/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/notice-types/notice-types.json @@ -0,0 +1,148 @@ +{ + "ublVersion" : "2.3", + "sdkVersion" : "1.10.0", + "metadataDatabase" : { + "version" : "1.10.0", + "createdOn" : "2023-11-15T14:00:00" + }, + "noticeSubTypes" : [ { + "documentType" : "PIN", + "legalBasis" : "32014L0024", + "formType" : "planning", + "type" : "pin-buyer", + "description" : "Notice of the publication of a prior information notice on a buyer profile - general directive", + "subTypeId" : "1", + "_label" : "notice|name|1", + "viewTemplateIds" : [ "1", "summary" ] + }, { + "documentType" : "CN", + "legalBasis" : "32014L0024", + "formType" : "competition", + "type" : "cn-standard", + "description" : "Contract notice – general directive, standard regime", + "subTypeId" : "16", + "_label" : "notice|name|16", + "viewTemplateIds" : [ "16", "summary" ] + } ], + "documentTypes" : [ { + "id" : "BRIN", + "namespace" : "http://data.europa.eu/p27/eforms-business-registration-information-notice/1", + "rootElement" : "BusinessRegistrationInformationNotice", + "schemaLocation" : "schemas/maindoc/EFORMS-BusinessRegistrationInformationNotice.xsd", + "additionalNamespaces" : [ { + "prefix" : "cac", + "uri" : "urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2", + "schemaLocation" : "schemas/common/UBL-CommonAggregateComponents-2.3.xsd" + }, { + "prefix" : "cbc", + "uri" : "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2", + "schemaLocation" : "schemas/common/UBL-CommonBasicComponents-2.3.xsd" + }, { + "prefix" : "ext", + "uri" : "urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2", + "schemaLocation" : "schemas/common/UBL-CommonExtensionComponents-2.3.xsd" + }, { + "prefix" : "efext", + "uri" : "http://data.europa.eu/p27/eforms-ubl-extensions/1", + "schemaLocation" : "schemas/common/EFORMS-ExtensionApex-2.3.xsd" + }, { + "prefix" : "efac", + "uri" : "http://data.europa.eu/p27/eforms-ubl-extension-aggregate-components/1", + "schemaLocation" : "schemas/common/EFORMS-ExtensionAggregateComponents-2.3.xsd" + }, { + "prefix" : "efbc", + "uri" : "http://data.europa.eu/p27/eforms-ubl-extension-basic-components/1", + "schemaLocation" : "schemas/common/EFORMS-ExtensionBasicComponents-2.3.xsd" + } ] + }, { + "id" : "CAN", + "namespace" : "urn:oasis:names:specification:ubl:schema:xsd:ContractAwardNotice-2", + "rootElement" : "ContractAwardNotice", + "schemaLocation" : "schemas/maindoc/UBL-ContractAwardNotice-2.3.xsd", + "additionalNamespaces" : [ { + "prefix" : "cac", + "uri" : "urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2", + "schemaLocation" : "schemas/common/UBL-CommonAggregateComponents-2.3.xsd" + }, { + "prefix" : "cbc", + "uri" : "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2", + "schemaLocation" : "schemas/common/UBL-CommonBasicComponents-2.3.xsd" + }, { + "prefix" : "ext", + "uri" : "urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2", + "schemaLocation" : "schemas/common/UBL-CommonExtensionComponents-2.3.xsd" + }, { + "prefix" : "efext", + "uri" : "http://data.europa.eu/p27/eforms-ubl-extensions/1", + "schemaLocation" : "schemas/common/EFORMS-ExtensionApex-2.3.xsd" + }, { + "prefix" : "efac", + "uri" : "http://data.europa.eu/p27/eforms-ubl-extension-aggregate-components/1", + "schemaLocation" : "schemas/common/EFORMS-ExtensionAggregateComponents-2.3.xsd" + }, { + "prefix" : "efbc", + "uri" : "http://data.europa.eu/p27/eforms-ubl-extension-basic-components/1", + "schemaLocation" : "schemas/common/EFORMS-ExtensionBasicComponents-2.3.xsd" + } ] + }, { + "id" : "CN", + "namespace" : "urn:oasis:names:specification:ubl:schema:xsd:ContractNotice-2", + "rootElement" : "ContractNotice", + "schemaLocation" : "schemas/maindoc/UBL-ContractNotice-2.3.xsd", + "additionalNamespaces" : [ { + "prefix" : "cac", + "uri" : "urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2", + "schemaLocation" : "schemas/common/UBL-CommonAggregateComponents-2.3.xsd" + }, { + "prefix" : "cbc", + "uri" : "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2", + "schemaLocation" : "schemas/common/UBL-CommonBasicComponents-2.3.xsd" + }, { + "prefix" : "ext", + "uri" : "urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2", + "schemaLocation" : "schemas/common/UBL-CommonExtensionComponents-2.3.xsd" + }, { + "prefix" : "efext", + "uri" : "http://data.europa.eu/p27/eforms-ubl-extensions/1", + "schemaLocation" : "schemas/common/EFORMS-ExtensionApex-2.3.xsd" + }, { + "prefix" : "efac", + "uri" : "http://data.europa.eu/p27/eforms-ubl-extension-aggregate-components/1", + "schemaLocation" : "schemas/common/EFORMS-ExtensionAggregateComponents-2.3.xsd" + }, { + "prefix" : "efbc", + "uri" : "http://data.europa.eu/p27/eforms-ubl-extension-basic-components/1", + "schemaLocation" : "schemas/common/EFORMS-ExtensionBasicComponents-2.3.xsd" + } ] + }, { + "id" : "PIN", + "namespace" : "urn:oasis:names:specification:ubl:schema:xsd:PriorInformationNotice-2", + "rootElement" : "PriorInformationNotice", + "schemaLocation" : "schemas/maindoc/UBL-PriorInformationNotice-2.3.xsd", + "additionalNamespaces" : [ { + "prefix" : "cac", + "uri" : "urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2", + "schemaLocation" : "schemas/common/UBL-CommonAggregateComponents-2.3.xsd" + }, { + "prefix" : "cbc", + "uri" : "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2", + "schemaLocation" : "schemas/common/UBL-CommonBasicComponents-2.3.xsd" + }, { + "prefix" : "ext", + "uri" : "urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2", + "schemaLocation" : "schemas/common/UBL-CommonExtensionComponents-2.3.xsd" + }, { + "prefix" : "efext", + "uri" : "http://data.europa.eu/p27/eforms-ubl-extensions/1", + "schemaLocation" : "schemas/common/EFORMS-ExtensionApex-2.3.xsd" + }, { + "prefix" : "efac", + "uri" : "http://data.europa.eu/p27/eforms-ubl-extension-aggregate-components/1", + "schemaLocation" : "schemas/common/EFORMS-ExtensionAggregateComponents-2.3.xsd" + }, { + "prefix" : "efbc", + "uri" : "http://data.europa.eu/p27/eforms-ubl-extension-basic-components/1", + "schemaLocation" : "schemas/common/EFORMS-ExtensionBasicComponents-2.3.xsd" + } ] + } ] +} \ No newline at end of file diff --git a/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/schematrons/dynamic/complete-validation.sch b/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/schematrons/dynamic/complete-validation.sch new file mode 100644 index 0000000..c0a36f9 --- /dev/null +++ b/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/schematrons/dynamic/complete-validation.sch @@ -0,0 +1,318 @@ + + + + + eForms schematron rules + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cac:ProcessJustification + cac:AuctionTerms + cac:AwardingTerms + cac:TechnicalCommitteePerson/cbc:FamilyName + cac:PostalAddress + cac:Contact + cac:BusinessParty + cac:PartyLegalEntity[cbc:CompanyID/@schemeName = 'EU']/cbc:CompanyID + cac:PartyLegalEntity[cbc:CompanyID/@schemeName = 'national']/cbc:CompanyID + cac:Party + cac:ServiceProviderParty/cac:Party/cac:PartyIdentification/cbc:ID + efac:Change + efac:Company + cac:PostalAddress/cbc:Department + cac:PartyLegalEntity/cbc:CompanyID + cac:Contact/cbc:Name + cac:Contact/cbc:Telephone + cac:Contact/cbc:ElectronicMail + cac:PostalAddress/cbc:CountrySubentityCode + cac:PostalAddress/cbc:StreetName + cac:PostalAddress/cbc:AdditionalStreetName + cac:PostalAddress/cac:AddressLine/cbc:Line + cac:PostalAddress/cbc:PostalZone + cac:PostalAddress/cbc:CityName + cac:PostalAddress/cac:Country/cbc:IdentificationCode + cac:Contact/cbc:Telefax + efac:ConcessionRevenue + efac:Funding + efac:ContractModification + efac:Change/efac:ChangedSection/efbc:ChangedSectionIdentifier + cac:ContractingParty + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:FieldsPrivacy + cac:SpecificTendererRequirement + cac:ContractExecutionRequirement + efac:DurationJustification + cac:FrameworkAgreement + efac:Funding + cac:AdditionalDocumentReference + cac:LotsGroup + cac:ProcurementProjectLotReference/cbc:ID[@schemeName='Lot'] + efac:InterestExpressionReceptionPeriod + cac:PartyLegalEntity + cac:AwardingCriterion + cac:SubordinateAwardingCriterion/cbc:AwardingCriterionTypeCode[@listName='award-criterion-type'] + efac:FieldsPrivacy + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:FieldsPrivacy + efac:AwardCriterionParameter[efbc:ParameterCode/@listName='number-fixed']/efbc:ParameterNumeric + efac:AwardCriterionParameter[efbc:ParameterCode/@listName='number-threshold']/efbc:ParameterNumeric + efac:AwardCriterionParameter[efbc:ParameterCode/@listName='number-weight']/efbc:ParameterNumeric + efac:FieldsPrivacy + cac:LotDistribution + cac:LotsGroup/cbc:LotsGroupID + cac:PlannedPeriod + cac:EmploymentLegislationDocumentReference + cac:EnvironmentalLegislationDocumentReference + cac:FiscalLegislationDocumentReference + cac:Address/cbc:CountrySubentityCode + cac:Address/cbc:StreetName + cac:Address/cbc:AdditionalStreetName + cac:Address/cac:AddressLine/cbc:Line + cac:Address/cbc:PostalZone + cac:Address/cbc:CityName + cac:Address/cac:Country/cbc:IdentificationCode + cac:Address/cbc:Region + cac:NoticeDocumentReference + cac:CallForTendersDocumentReference + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:OfficialLanguages/cac:Language/cbc:ID + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:NonOfficialLanguages/cac:Language/cbc:ID + cac:ProcurementProject + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='strategic-procurement']/cbc:ProcurementTypeCode + cac:MainCommodityClassification/cbc:ItemClassificationCode + cac:AdditionalCommodityClassification/cbc:ItemClassificationCode + cac:RequestedTenderTotal/ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efbc:FrameworkMaximumAmount + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='contract-nature']/cbc:ProcurementTypeCode + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='accessibility']/cbc:ProcurementTypeCode + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='environmental-impact']/cbc:ProcurementTypeCode + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='social-objective']/cbc:ProcurementTypeCode + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='innovative-acquisition']/cbc:ProcurementTypeCode + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='gpp-criteria']/cbc:ProcurementTypeCode + cac:TendererQualificationRequest + cac:SpecificTendererRequirement[cbc:TendererRequirementTypeCode/@listName='reserved-procurement']/cbc:TendererRequirementTypeCode + efac:LotResult + efac:FrameworkAgreementValues + efac:AppealRequestsStatistics[efbc:StatisticsCode/@listName='irregularity-type']/efbc:StatisticsCode + efac:AppealRequestsStatistics[efbc:StatisticsCode/@listName='review-type']/efbc:StatisticsCode + efac:ReceivedSubmissionsStatistics/efbc:StatisticsNumeric + efac:ReceivedSubmissionsStatistics/efbc:StatisticsCode + cac:FinancingParty/cac:PartyIdentification/cbc:ID + cac:PayerParty/cac:PartyIdentification/cbc:ID + efac:SettledContract/cbc:ID + efac:LotTender/cbc:ID + cac:AppealTerms + cac:PresentationPeriod/cbc:Description + efac:LotTender + efac:Origin + efac:Origin/efbc:AreaCode + efac:AggregatedAmounts/cbc:PaidAmount + efac:AggregatedAmounts/efbc:PaidAmountDescription + efac:AggregatedAmounts/efbc:PenaltiesAmount + efac:ContractTerm[not(efbc:TermCode/text()='all-rev-tic')][efbc:TermCode/@listName='contract-detail']/efbc:TermCode + efac:ContractTerm[efbc:TermCode/@listName='rewards-penalties']/efbc:TermCode + cac:TenderingProcess + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension + cac:NoticeDocumentReference/cbc:ReferencedDocumentInternalAddress + cac:ParticipationRequestReceptionPeriod/cbc:EndDate + cac:ParticipationRequestReceptionPeriod/cbc:EndTime + cac:TenderSubmissionDeadlinePeriod/cbc:EndDate + cac:TenderSubmissionDeadlinePeriod/cbc:EndTime + cac:OpenTenderEvent/cbc:OccurrenceDate + cac:AdditionalInformationRequestPeriod/cbc:EndDate + cac:AdditionalInformationRequestPeriod/cbc:EndTime + cac:ContractingSystem[cbc:ContractingSystemTypeCode/@listName='framework-agreement']/cbc:ContractingSystemTypeCode + cac:ContractingSystem[cbc:ContractingSystemTypeCode/@listName='dps-usage']/cbc:ContractingSystemTypeCode + cac:TenderingTerms + cac:TenderRecipientParty/cbc:EndpointID + cac:AllowedSubcontractTerms[cbc:SubcontractingConditionsCode/@listName='subcontracting-obligation']/cbc:SubcontractingConditionsCode + cac:ContractExecutionRequirement[cbc:ExecutionRequirementCode/@listName='reserved-execution']/cbc:ExecutionRequirementCode + cac:ContractExecutionRequirement[cbc:ExecutionRequirementCode/@listName='einvoicing']/cbc:ExecutionRequirementCode + cac:ContractExecutionRequirement[cbc:ExecutionRequirementCode/@listName='esignature-submission']/cbc:ExecutionRequirementCode + cac:RequiredFinancialGuarantee/cbc:Description + cac:RequiredFinancialGuarantee/cbc:GuaranteeTypeCode[@listName='tender-guarantee-required'] + cac:TendererQualificationRequest[not(cac:SpecificTendererRequirement)]/cbc:CompanyLegalForm + cac:TendererQualificationRequest[not(cac:SpecificTendererRequirement)]/cbc:CompanyLegalFormCode + cac:ContractExecutionRequirement[cbc:ExecutionRequirementCode/@listName='ecatalog-submission']/cbc:ExecutionRequirementCode + cac:ContractExecutionRequirement[cbc:ExecutionRequirementCode/@listName='nda']/cbc:ExecutionRequirementCode + cac:Language/cbc:ID + cac:ContractExecutionRequirement[cbc:ExecutionRequirementCode/@listName='conditions']/cbc:ExecutionRequirementCode + cac:ContractExecutionRequirement[cbc:ExecutionRequirementCode/@listName='customer-service']/cbc:ExecutionRequirementCode + cac:TenderRecipientParty/cac:PartyIdentification/cbc:ID + cac:RequestedTenderTotal + cac:SubordinateAwardingCriterion/cbc:AwardingCriterionTypeCode[@listName='award-criterion-type'] + efac:FieldsPrivacy + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:FieldsPrivacy + efac:AwardCriterionParameter[efbc:ParameterCode/@listName='number-fixed']/efbc:ParameterNumeric + efac:AwardCriterionParameter[efbc:ParameterCode/@listName='number-threshold']/efbc:ParameterNumeric + efac:AwardCriterionParameter[efbc:ParameterCode/@listName='number-weight']/efbc:ParameterNumeric + efac:FieldsPrivacy + cac:TenderingTerms/cac:AwardingTerms + cac:TenderingProcess/cac:FrameworkAgreement + cac:RequestedTenderTotal/ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efbc:FrameworkMaximumAmount + cac:RequestedTenderTotal + efac:Change + efac:ChangeReason + efac:ChangedSection + cac:ProcessJustification + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension + efac:Funding/efbc:FinancingIdentifier + efac:TenderSubcontractingRequirements/efbc:TenderSubcontractingRequirementsCode + efac:Funding/cbc:FundingProgramCode + efac:SelectionCriteria/cbc:CriterionTypeCode[@listName='selection-criterion'] + efac:DecisionReason/efac:FieldsPrivacy + efac:FieldsPrivacy + efac:NoticeResult + efac:GroupFramework + efac:NoticePurpose + cac:ContractExtension + cac:Renewal/cac:Period/cbc:Description + efac:Organization + efac:TouchPoint/cac:PartyIdentification/cbc:ID + efac:UltimateBeneficialOwner/cbc:ID + efac:Organizations + efac:UltimateBeneficialOwner/cbc:ID + efac:ContractTerm + efac:AnswerReceptionPeriod + cac:ProcurementProjectLot[cbc:ID/@schemeName='Part'] + cac:EmploymentLegislationDocumentReference + cac:EnvironmentalLegislationDocumentReference + cac:FiscalLegislationDocumentReference + cac:Address/cbc:CountrySubentityCode + cac:Address/cbc:StreetName + cac:Address/cbc:AdditionalStreetName + cac:Address/cac:AddressLine/cbc:Line + cac:Address/cbc:PostalZone + cac:Address/cbc:CityName + cac:Address/cac:Country/cbc:IdentificationCode + cac:Address/cbc:Region + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:OfficialLanguages/cac:Language/cbc:ID + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:NonOfficialLanguages/cac:Language/cbc:ID + cac:ProcurementProject + cac:MainCommodityClassification/cbc:ItemClassificationCode + cac:AdditionalCommodityClassification/cbc:ItemClassificationCode + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='contract-nature']/cbc:ProcurementTypeCode + cac:SpecificTendererRequirement[cbc:TendererRequirementTypeCode/@listName='reserved-procurement']/cbc:TendererRequirementTypeCode + cac:AppealTerms + cac:NoticeDocumentReference/cbc:ReferencedDocumentInternalAddress + cac:AdditionalInformationRequestPeriod/cbc:EndDate + cac:AdditionalInformationRequestPeriod/cbc:EndTime + cac:ContractingSystem[cbc:ContractingSystemTypeCode/@listName='framework-agreement']/cbc:ContractingSystemTypeCode + cac:ContractingSystem[cbc:ContractingSystemTypeCode/@listName='dps-usage']/cbc:ContractingSystemTypeCode + cac:TenderingTerms + cac:ContractExecutionRequirement[cbc:ExecutionRequirementCode/@listName='reserved-execution']/cbc:ExecutionRequirementCode + cac:EconomicOperatorShortList + cac:PreSelectedParty/cac:PartyName/cbc:Name + cac:PaymentTerms + cac:PostAwardProcess + cac:Prize + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:FieldsPrivacy + cac:RealizedLocation + cac:ProcurementProject + cac:MainCommodityClassification/cbc:ItemClassificationCode + cac:AdditionalCommodityClassification/cbc:ItemClassificationCode + cac:RequestedTenderTotal/ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efbc:FrameworkMaximumAmount + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='contract-nature']/cbc:ProcurementTypeCode + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='transport-service']/cbc:ProcurementTypeCode + cac:TenderingProcess + cac:NoticeDocumentReference/cbc:ID + cac:TenderingTerms + cac:ProcurementLegislationDocumentReference[not(cbc:ID/text()=('CrossBorderLaw','LocalLegalBasis'))]/cbc:ID + cac:ProcurementLegislationDocumentReference[cbc:ID/text()='LocalLegalBasis']/cbc:ID + cac:ProcurementLegislationDocumentReference[cbc:ID/text()='CrossBorderLaw']/cbc:ID + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:FieldsPrivacy + cac:RequestedTenderTotal + cac:OpenTenderEvent + cac:OccurenceLocation/cbc:Description + efac:ReceivedSubmissionsStatistics + efac:AppealsInformation + efac:AppealRequestsStatistics + efac:AppealedItem/cbc:ID + efac:AppealDecision/efbc:DecisionTypeCode + efac:AppealIrregularity/efbc:IrregularityTypeCode + efac:AppealRemedy/efbc:RemedyTypeCode + efac:AppealProcessingParty/efbc:AppealProcessingPartyTypeCode + efac:AppealingParty/efbc:AppealingPartyTypeCode + efac:AppealProcessingParty/efbc:AppealProcessingPartyTypeDescription + efac:AppealProcessingParty/cac:Party/cac:PartyIdentification/cbc:ID + efac:AppealingParty/cac:Party/cac:PartyIdentification/cbc:ID + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension + efac:Publication/efbc:NoticePublicationID[@schemeName='ojs-notice-id'] + efac:Publication/efbc:GazetteID[@schemeName='ojs-id'] + efac:Publication/efbc:PublicationDate + cac:BusinessCapability/cbc:CapabilityTypeCode + cac:ContractingParty/cac:Party/cac:PartyIdentification/cbc:ID + cac:EconomicOperatorShortList + efac:CriterionParameter + cac:SecurityClearanceTerm + efac:SelectionCriteria + efac:CriterionParameter[efbc:ParameterCode/@listName='number-threshold']/efbc:ParameterNumeric + efac:CriterionParameter[efbc:ParameterCode/@listName='number-weight']/efbc:ParameterNumeric + cac:SenderParty/cac:Contact + efac:SettledContract + efac:LotTender/cbc:ID + efac:Funding/efbc:FinancingIdentifier + efac:Funding/cbc:FundingProgramCode + cac:SignatoryParty/cac:PartyIdentification/cbc:ID + efac:StrategicProcurement + efac:StrategicProcurement + efac:MainContractor/cbc:ID + efac:SubcontractingTerm + cac:AllowedSubcontractTerms + cac:TendererQualificationRequest + efac:Tenderer/cbc:ID + efac:SubContractor/cbc:ID + cac:PostalAddress/cbc:Department + cac:Contact/cbc:Name + cac:Contact/cbc:Telephone + cac:Contact/cbc:ElectronicMail + cac:PostalAddress/cbc:CountrySubentityCode + cac:PostalAddress/cbc:StreetName + cac:PostalAddress/cbc:AdditionalStreetName + cac:PostalAddress/cac:AddressLine/cbc:Line + cac:PostalAddress/cbc:PostalZone + cac:PostalAddress/cbc:CityName + cac:PostalAddress/cac:Country/cbc:IdentificationCode + cac:Contact/cbc:Telefax + cac:Contact/cbc:Telephone + cac:Contact/cbc:ElectronicMail + cac:ResidenceAddress/cbc:CountrySubentityCode + cac:ResidenceAddress/cbc:StreetName + cac:ResidenceAddress/cbc:AdditionalStreetName + cac:ResidenceAddress/cac:AddressLine/cbc:Line + cac:ResidenceAddress/cbc:PostalZone + cac:ResidenceAddress/cbc:CityName + cac:ResidenceAddress/cac:Country/cbc:IdentificationCode + efac:Nationality/cbc:NationalityID + cac:Contact/cbc:Telefax + efac:FieldsPrivacy + + \ No newline at end of file diff --git a/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/schematrons/dynamic/config.sch b/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/schematrons/dynamic/config.sch new file mode 100644 index 0000000..bb6e87b --- /dev/null +++ b/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/schematrons/dynamic/config.sch @@ -0,0 +1,5 @@ + + + diff --git a/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/schematrons/dynamic/validation-stage-1a.sch b/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/schematrons/dynamic/validation-stage-1a.sch new file mode 100644 index 0000000..9ab9877 --- /dev/null +++ b/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/schematrons/dynamic/validation-stage-1a.sch @@ -0,0 +1,21 @@ + + + + + rule|text|P-0001 + + + rule|text|P-0002 + + + + + rule|text|P-0004 + + + + + rule|text|P-0005 + + + diff --git a/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/schematrons/dynamic/validation-stage-1b-1.sch b/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/schematrons/dynamic/validation-stage-1b-1.sch new file mode 100644 index 0000000..e51be47 --- /dev/null +++ b/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/schematrons/dynamic/validation-stage-1b-1.sch @@ -0,0 +1,40 @@ + + + + + rule|text|ND-BusinessParty-1 + rule|text|ND-ContractingParty-1 + rule|text|ND-GazetteReference-1 + rule|text|ND-OperationType-1 + rule|text|ND-Part-1 + rule|text|ND-ProcedureProcurementScope-1 + rule|text|ND-ProcedureTenderingProcess-1 + rule|text|ND-RootExtension-1 + rule|text|ND-SenderContact-1 + + + rule|text|ND-Buyer-1 + + + rule|text|ND-ProcedureValueEstimate-1 + + + rule|text|ND-LotDistribution-1 + rule|text|ND-TendererQualificationRequest-1 + + + rule|text|ND-CrossBorderLawUnpublish-1 + + + rule|text|ND-ContractModification-1 + rule|text|ND-NoticeResult-1 + rule|text|ND-Organizations-1 + rule|text|ND-ReviewRequests-1 + + + rule|text|ND-Organization-1 + + + rule|text|ND-Company-1 + + diff --git a/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/schematrons/dynamic/validation-stage-1b-16.sch b/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/schematrons/dynamic/validation-stage-1b-16.sch new file mode 100644 index 0000000..67d8951 --- /dev/null +++ b/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/schematrons/dynamic/validation-stage-1b-16.sch @@ -0,0 +1,85 @@ + + + + + rule|text|ND-BusinessParty-16 + rule|text|ND-ContractingParty-16 + rule|text|ND-GazetteReference-16 + rule|text|ND-OperationType-16 + rule|text|ND-Part-16 + rule|text|ND-ProcedureProcurementScope-16 + rule|text|ND-ProcedureTenderingProcess-16 + rule|text|ND-ProcedureTerms-16 + rule|text|ND-RootExtension-16 + rule|text|ND-SenderContact-16 + + + rule|text|ND-Buyer-16 + + + rule|text|ND-LotProcurementScope-16 + rule|text|ND-LotTenderingProcess-16 + rule|text|ND-LotTenderingTerms-16 + + + rule|text|ND-AuctionTerms-16 + + + rule|text|ND-InterestExpressionReceptionPeriod-16 + rule|text|ND-PMCAnswersDeadline-16 + + + rule|text|ND-LotProcurementDocument-16 + rule|text|ND-LotReservedParticipation-16 + rule|text|ND-LotReviewTerms-16 + rule|text|ND-NonUBLTenderingTerms-16 + rule|text|ND-Participants-16 + rule|text|ND-PostAwardProcess-16 + rule|text|ND-SubcontractingObligation-16 + + + rule|text|ND-LotAwardCriterionNumberComplicatedUnpublish-16 + + + rule|text|ND-LotAwardCriterionTypeUnpublish-16 + + + rule|text|ND-LotAwardCriterionFixNumberUnpublish-16 + + + rule|text|ND-LotsGroupAwardCriterionNumberComplicatedUnpublish-16 + + + rule|text|ND-LotsGroupAwardCriterionTypeUnpublish-16 + + + rule|text|ND-LotsGroupAwardCriterionFixNumberUnpublish-16 + + + rule|text|ND-ProcedureTypeUnpublish-16 + + + rule|text|ND-ProcedureAcceleratedUnpublish-16 + + + rule|text|ND-TendererQualificationRequest-16 + + + rule|text|ND-CrossBorderLawUnpublish-16 + + + rule|text|ND-ExclusionGrounds-16 + + + rule|text|ND-ContractModification-16 + rule|text|ND-NoticeResult-16 + rule|text|ND-Organizations-16 + rule|text|ND-ReviewRequests-16 + + + rule|text|ND-Organization-16 + + + rule|text|ND-Company-16 + + diff --git a/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/schematrons/static/complete-validation.sch b/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/schematrons/static/complete-validation.sch new file mode 100644 index 0000000..4c2ca60 --- /dev/null +++ b/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/schematrons/static/complete-validation.sch @@ -0,0 +1,316 @@ + + + + + eForms schematron rules + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cac:ProcessJustification + cac:AuctionTerms + cac:AwardingTerms + cac:TechnicalCommitteePerson/cbc:FamilyName + cac:PostalAddress + cac:Contact + cac:BusinessParty + cac:PartyLegalEntity[cbc:CompanyID/@schemeName = 'EU']/cbc:CompanyID + cac:PartyLegalEntity[cbc:CompanyID/@schemeName = 'national']/cbc:CompanyID + cac:Party + cac:ServiceProviderParty/cac:Party/cac:PartyIdentification/cbc:ID + efac:Change + efac:Company + cac:PostalAddress/cbc:Department + cac:PartyLegalEntity/cbc:CompanyID + cac:Contact/cbc:Name + cac:Contact/cbc:Telephone + cac:Contact/cbc:ElectronicMail + cac:PostalAddress/cbc:CountrySubentityCode + cac:PostalAddress/cbc:StreetName + cac:PostalAddress/cbc:AdditionalStreetName + cac:PostalAddress/cac:AddressLine/cbc:Line + cac:PostalAddress/cbc:PostalZone + cac:PostalAddress/cbc:CityName + cac:PostalAddress/cac:Country/cbc:IdentificationCode + cac:Contact/cbc:Telefax + efac:ConcessionRevenue + efac:Funding + efac:ContractModification + efac:Change/efac:ChangedSection/efbc:ChangedSectionIdentifier + cac:ContractingParty + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:FieldsPrivacy + cac:SpecificTendererRequirement + cac:ContractExecutionRequirement + efac:DurationJustification + cac:FrameworkAgreement + efac:Funding + cac:AdditionalDocumentReference + cac:LotsGroup + cac:ProcurementProjectLotReference/cbc:ID[@schemeName='Lot'] + efac:InterestExpressionReceptionPeriod + cac:PartyLegalEntity + cac:AwardingCriterion + cac:SubordinateAwardingCriterion/cbc:AwardingCriterionTypeCode[@listName='award-criterion-type'] + efac:FieldsPrivacy + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:FieldsPrivacy + efac:AwardCriterionParameter[efbc:ParameterCode/@listName='number-fixed']/efbc:ParameterNumeric + efac:AwardCriterionParameter[efbc:ParameterCode/@listName='number-threshold']/efbc:ParameterNumeric + efac:AwardCriterionParameter[efbc:ParameterCode/@listName='number-weight']/efbc:ParameterNumeric + efac:FieldsPrivacy + cac:LotDistribution + cac:LotsGroup/cbc:LotsGroupID + cac:PlannedPeriod + cac:EmploymentLegislationDocumentReference + cac:EnvironmentalLegislationDocumentReference + cac:FiscalLegislationDocumentReference + cac:Address/cbc:CountrySubentityCode + cac:Address/cbc:StreetName + cac:Address/cbc:AdditionalStreetName + cac:Address/cac:AddressLine/cbc:Line + cac:Address/cbc:PostalZone + cac:Address/cbc:CityName + cac:Address/cac:Country/cbc:IdentificationCode + cac:Address/cbc:Region + cac:NoticeDocumentReference + cac:CallForTendersDocumentReference + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:OfficialLanguages/cac:Language/cbc:ID + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:NonOfficialLanguages/cac:Language/cbc:ID + cac:ProcurementProject + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='strategic-procurement']/cbc:ProcurementTypeCode + cac:MainCommodityClassification/cbc:ItemClassificationCode + cac:AdditionalCommodityClassification/cbc:ItemClassificationCode + cac:RequestedTenderTotal/ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efbc:FrameworkMaximumAmount + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='contract-nature']/cbc:ProcurementTypeCode + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='accessibility']/cbc:ProcurementTypeCode + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='environmental-impact']/cbc:ProcurementTypeCode + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='social-objective']/cbc:ProcurementTypeCode + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='innovative-acquisition']/cbc:ProcurementTypeCode + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='gpp-criteria']/cbc:ProcurementTypeCode + cac:TendererQualificationRequest + cac:SpecificTendererRequirement[cbc:TendererRequirementTypeCode/@listName='reserved-procurement']/cbc:TendererRequirementTypeCode + efac:LotResult + efac:FrameworkAgreementValues + efac:AppealRequestsStatistics[efbc:StatisticsCode/@listName='irregularity-type']/efbc:StatisticsCode + efac:AppealRequestsStatistics[efbc:StatisticsCode/@listName='review-type']/efbc:StatisticsCode + efac:ReceivedSubmissionsStatistics/efbc:StatisticsNumeric + efac:ReceivedSubmissionsStatistics/efbc:StatisticsCode + cac:FinancingParty/cac:PartyIdentification/cbc:ID + cac:PayerParty/cac:PartyIdentification/cbc:ID + efac:SettledContract/cbc:ID + efac:LotTender/cbc:ID + cac:AppealTerms + cac:PresentationPeriod/cbc:Description + efac:LotTender + efac:Origin + efac:Origin/efbc:AreaCode + efac:AggregatedAmounts/cbc:PaidAmount + efac:AggregatedAmounts/efbc:PaidAmountDescription + efac:AggregatedAmounts/efbc:PenaltiesAmount + efac:ContractTerm[not(efbc:TermCode/text()='all-rev-tic')][efbc:TermCode/@listName='contract-detail']/efbc:TermCode + efac:ContractTerm[efbc:TermCode/@listName='rewards-penalties']/efbc:TermCode + cac:TenderingProcess + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension + cac:NoticeDocumentReference/cbc:ReferencedDocumentInternalAddress + cac:ParticipationRequestReceptionPeriod/cbc:EndDate + cac:ParticipationRequestReceptionPeriod/cbc:EndTime + cac:TenderSubmissionDeadlinePeriod/cbc:EndDate + cac:TenderSubmissionDeadlinePeriod/cbc:EndTime + cac:OpenTenderEvent/cbc:OccurrenceDate + cac:AdditionalInformationRequestPeriod/cbc:EndDate + cac:AdditionalInformationRequestPeriod/cbc:EndTime + cac:ContractingSystem[cbc:ContractingSystemTypeCode/@listName='framework-agreement']/cbc:ContractingSystemTypeCode + cac:ContractingSystem[cbc:ContractingSystemTypeCode/@listName='dps-usage']/cbc:ContractingSystemTypeCode + cac:TenderingTerms + cac:TenderRecipientParty/cbc:EndpointID + cac:AllowedSubcontractTerms[cbc:SubcontractingConditionsCode/@listName='subcontracting-obligation']/cbc:SubcontractingConditionsCode + cac:ContractExecutionRequirement[cbc:ExecutionRequirementCode/@listName='reserved-execution']/cbc:ExecutionRequirementCode + cac:ContractExecutionRequirement[cbc:ExecutionRequirementCode/@listName='einvoicing']/cbc:ExecutionRequirementCode + cac:ContractExecutionRequirement[cbc:ExecutionRequirementCode/@listName='esignature-submission']/cbc:ExecutionRequirementCode + cac:RequiredFinancialGuarantee/cbc:Description + cac:RequiredFinancialGuarantee/cbc:GuaranteeTypeCode[@listName='tender-guarantee-required'] + cac:TendererQualificationRequest[not(cac:SpecificTendererRequirement)]/cbc:CompanyLegalForm + cac:TendererQualificationRequest[not(cac:SpecificTendererRequirement)]/cbc:CompanyLegalFormCode + cac:ContractExecutionRequirement[cbc:ExecutionRequirementCode/@listName='ecatalog-submission']/cbc:ExecutionRequirementCode + cac:ContractExecutionRequirement[cbc:ExecutionRequirementCode/@listName='nda']/cbc:ExecutionRequirementCode + cac:Language/cbc:ID + cac:ContractExecutionRequirement[cbc:ExecutionRequirementCode/@listName='conditions']/cbc:ExecutionRequirementCode + cac:ContractExecutionRequirement[cbc:ExecutionRequirementCode/@listName='customer-service']/cbc:ExecutionRequirementCode + cac:TenderRecipientParty/cac:PartyIdentification/cbc:ID + cac:RequestedTenderTotal + cac:SubordinateAwardingCriterion/cbc:AwardingCriterionTypeCode[@listName='award-criterion-type'] + efac:FieldsPrivacy + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:FieldsPrivacy + efac:AwardCriterionParameter[efbc:ParameterCode/@listName='number-fixed']/efbc:ParameterNumeric + efac:AwardCriterionParameter[efbc:ParameterCode/@listName='number-threshold']/efbc:ParameterNumeric + efac:AwardCriterionParameter[efbc:ParameterCode/@listName='number-weight']/efbc:ParameterNumeric + efac:FieldsPrivacy + cac:TenderingTerms/cac:AwardingTerms + cac:TenderingProcess/cac:FrameworkAgreement + cac:RequestedTenderTotal/ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efbc:FrameworkMaximumAmount + cac:RequestedTenderTotal + efac:Change + efac:ChangeReason + efac:ChangedSection + cac:ProcessJustification + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension + efac:Funding/efbc:FinancingIdentifier + efac:TenderSubcontractingRequirements/efbc:TenderSubcontractingRequirementsCode + efac:Funding/cbc:FundingProgramCode + efac:SelectionCriteria/cbc:CriterionTypeCode[@listName='selection-criterion'] + efac:DecisionReason/efac:FieldsPrivacy + efac:FieldsPrivacy + efac:NoticeResult + efac:GroupFramework + efac:NoticePurpose + cac:ContractExtension + cac:Renewal/cac:Period/cbc:Description + efac:Organization + efac:TouchPoint/cac:PartyIdentification/cbc:ID + efac:UltimateBeneficialOwner/cbc:ID + efac:Organizations + efac:UltimateBeneficialOwner/cbc:ID + efac:ContractTerm + efac:AnswerReceptionPeriod + cac:ProcurementProjectLot[cbc:ID/@schemeName='Part'] + cac:EmploymentLegislationDocumentReference + cac:EnvironmentalLegislationDocumentReference + cac:FiscalLegislationDocumentReference + cac:Address/cbc:CountrySubentityCode + cac:Address/cbc:StreetName + cac:Address/cbc:AdditionalStreetName + cac:Address/cac:AddressLine/cbc:Line + cac:Address/cbc:PostalZone + cac:Address/cbc:CityName + cac:Address/cac:Country/cbc:IdentificationCode + cac:Address/cbc:Region + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:OfficialLanguages/cac:Language/cbc:ID + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:NonOfficialLanguages/cac:Language/cbc:ID + cac:ProcurementProject + cac:MainCommodityClassification/cbc:ItemClassificationCode + cac:AdditionalCommodityClassification/cbc:ItemClassificationCode + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='contract-nature']/cbc:ProcurementTypeCode + cac:SpecificTendererRequirement[cbc:TendererRequirementTypeCode/@listName='reserved-procurement']/cbc:TendererRequirementTypeCode + cac:AppealTerms + cac:NoticeDocumentReference/cbc:ReferencedDocumentInternalAddress + cac:AdditionalInformationRequestPeriod/cbc:EndDate + cac:AdditionalInformationRequestPeriod/cbc:EndTime + cac:ContractingSystem[cbc:ContractingSystemTypeCode/@listName='framework-agreement']/cbc:ContractingSystemTypeCode + cac:ContractingSystem[cbc:ContractingSystemTypeCode/@listName='dps-usage']/cbc:ContractingSystemTypeCode + cac:TenderingTerms + cac:ContractExecutionRequirement[cbc:ExecutionRequirementCode/@listName='reserved-execution']/cbc:ExecutionRequirementCode + cac:EconomicOperatorShortList + cac:PreSelectedParty/cac:PartyName/cbc:Name + cac:PaymentTerms + cac:PostAwardProcess + cac:Prize + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:FieldsPrivacy + cac:RealizedLocation + cac:ProcurementProject + cac:MainCommodityClassification/cbc:ItemClassificationCode + cac:AdditionalCommodityClassification/cbc:ItemClassificationCode + cac:RequestedTenderTotal/ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efbc:FrameworkMaximumAmount + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='contract-nature']/cbc:ProcurementTypeCode + cac:ProcurementAdditionalType[cbc:ProcurementTypeCode/@listName='transport-service']/cbc:ProcurementTypeCode + cac:TenderingProcess + cac:NoticeDocumentReference/cbc:ID + cac:TenderingTerms + cac:ProcurementLegislationDocumentReference[not(cbc:ID/text()=('CrossBorderLaw','LocalLegalBasis'))]/cbc:ID + cac:ProcurementLegislationDocumentReference[cbc:ID/text()='LocalLegalBasis']/cbc:ID + cac:ProcurementLegislationDocumentReference[cbc:ID/text()='CrossBorderLaw']/cbc:ID + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:FieldsPrivacy + cac:RequestedTenderTotal + cac:OpenTenderEvent + cac:OccurenceLocation/cbc:Description + efac:ReceivedSubmissionsStatistics + efac:AppealsInformation + efac:AppealRequestsStatistics + efac:AppealedItem/cbc:ID + efac:AppealDecision/efbc:DecisionTypeCode + efac:AppealIrregularity/efbc:IrregularityTypeCode + efac:AppealRemedy/efbc:RemedyTypeCode + efac:AppealProcessingParty/efbc:AppealProcessingPartyTypeCode + efac:AppealingParty/efbc:AppealingPartyTypeCode + efac:AppealProcessingParty/efbc:AppealProcessingPartyTypeDescription + efac:AppealProcessingParty/cac:Party/cac:PartyIdentification/cbc:ID + efac:AppealingParty/cac:Party/cac:PartyIdentification/cbc:ID + ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension + efac:Publication/efbc:NoticePublicationID[@schemeName='ojs-notice-id'] + efac:Publication/efbc:GazetteID[@schemeName='ojs-id'] + efac:Publication/efbc:PublicationDate + cac:BusinessCapability/cbc:CapabilityTypeCode + cac:ContractingParty/cac:Party/cac:PartyIdentification/cbc:ID + cac:EconomicOperatorShortList + efac:CriterionParameter + cac:SecurityClearanceTerm + efac:SelectionCriteria + efac:CriterionParameter[efbc:ParameterCode/@listName='number-threshold']/efbc:ParameterNumeric + efac:CriterionParameter[efbc:ParameterCode/@listName='number-weight']/efbc:ParameterNumeric + cac:SenderParty/cac:Contact + efac:SettledContract + efac:LotTender/cbc:ID + efac:Funding/efbc:FinancingIdentifier + efac:Funding/cbc:FundingProgramCode + cac:SignatoryParty/cac:PartyIdentification/cbc:ID + efac:StrategicProcurement + efac:StrategicProcurement + efac:MainContractor/cbc:ID + efac:SubcontractingTerm + cac:AllowedSubcontractTerms + cac:TendererQualificationRequest + efac:Tenderer/cbc:ID + efac:SubContractor/cbc:ID + cac:PostalAddress/cbc:Department + cac:Contact/cbc:Name + cac:Contact/cbc:Telephone + cac:Contact/cbc:ElectronicMail + cac:PostalAddress/cbc:CountrySubentityCode + cac:PostalAddress/cbc:StreetName + cac:PostalAddress/cbc:AdditionalStreetName + cac:PostalAddress/cac:AddressLine/cbc:Line + cac:PostalAddress/cbc:PostalZone + cac:PostalAddress/cbc:CityName + cac:PostalAddress/cac:Country/cbc:IdentificationCode + cac:Contact/cbc:Telefax + cac:Contact/cbc:Telephone + cac:Contact/cbc:ElectronicMail + cac:ResidenceAddress/cbc:CountrySubentityCode + cac:ResidenceAddress/cbc:StreetName + cac:ResidenceAddress/cbc:AdditionalStreetName + cac:ResidenceAddress/cac:AddressLine/cbc:Line + cac:ResidenceAddress/cbc:PostalZone + cac:ResidenceAddress/cbc:CityName + cac:ResidenceAddress/cac:Country/cbc:IdentificationCode + efac:Nationality/cbc:NationalityID + cac:Contact/cbc:Telefax + efac:FieldsPrivacy + + \ No newline at end of file diff --git a/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/schematrons/static/validation-stage-1a.sch b/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/schematrons/static/validation-stage-1a.sch new file mode 100644 index 0000000..9ab9877 --- /dev/null +++ b/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/schematrons/static/validation-stage-1a.sch @@ -0,0 +1,21 @@ + + + + + rule|text|P-0001 + + + rule|text|P-0002 + + + + + rule|text|P-0004 + + + + + rule|text|P-0005 + + + diff --git a/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/schematrons/static/validation-stage-1b-1.sch b/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/schematrons/static/validation-stage-1b-1.sch new file mode 100644 index 0000000..e51be47 --- /dev/null +++ b/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/schematrons/static/validation-stage-1b-1.sch @@ -0,0 +1,40 @@ + + + + + rule|text|ND-BusinessParty-1 + rule|text|ND-ContractingParty-1 + rule|text|ND-GazetteReference-1 + rule|text|ND-OperationType-1 + rule|text|ND-Part-1 + rule|text|ND-ProcedureProcurementScope-1 + rule|text|ND-ProcedureTenderingProcess-1 + rule|text|ND-RootExtension-1 + rule|text|ND-SenderContact-1 + + + rule|text|ND-Buyer-1 + + + rule|text|ND-ProcedureValueEstimate-1 + + + rule|text|ND-LotDistribution-1 + rule|text|ND-TendererQualificationRequest-1 + + + rule|text|ND-CrossBorderLawUnpublish-1 + + + rule|text|ND-ContractModification-1 + rule|text|ND-NoticeResult-1 + rule|text|ND-Organizations-1 + rule|text|ND-ReviewRequests-1 + + + rule|text|ND-Organization-1 + + + rule|text|ND-Company-1 + + diff --git a/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/schematrons/static/validation-stage-1b-16.sch b/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/schematrons/static/validation-stage-1b-16.sch new file mode 100644 index 0000000..67d8951 --- /dev/null +++ b/src/test/resources/eforms-sdk-tests/tedefo-2768/valid/schematrons/static/validation-stage-1b-16.sch @@ -0,0 +1,85 @@ + + + + + rule|text|ND-BusinessParty-16 + rule|text|ND-ContractingParty-16 + rule|text|ND-GazetteReference-16 + rule|text|ND-OperationType-16 + rule|text|ND-Part-16 + rule|text|ND-ProcedureProcurementScope-16 + rule|text|ND-ProcedureTenderingProcess-16 + rule|text|ND-ProcedureTerms-16 + rule|text|ND-RootExtension-16 + rule|text|ND-SenderContact-16 + + + rule|text|ND-Buyer-16 + + + rule|text|ND-LotProcurementScope-16 + rule|text|ND-LotTenderingProcess-16 + rule|text|ND-LotTenderingTerms-16 + + + rule|text|ND-AuctionTerms-16 + + + rule|text|ND-InterestExpressionReceptionPeriod-16 + rule|text|ND-PMCAnswersDeadline-16 + + + rule|text|ND-LotProcurementDocument-16 + rule|text|ND-LotReservedParticipation-16 + rule|text|ND-LotReviewTerms-16 + rule|text|ND-NonUBLTenderingTerms-16 + rule|text|ND-Participants-16 + rule|text|ND-PostAwardProcess-16 + rule|text|ND-SubcontractingObligation-16 + + + rule|text|ND-LotAwardCriterionNumberComplicatedUnpublish-16 + + + rule|text|ND-LotAwardCriterionTypeUnpublish-16 + + + rule|text|ND-LotAwardCriterionFixNumberUnpublish-16 + + + rule|text|ND-LotsGroupAwardCriterionNumberComplicatedUnpublish-16 + + + rule|text|ND-LotsGroupAwardCriterionTypeUnpublish-16 + + + rule|text|ND-LotsGroupAwardCriterionFixNumberUnpublish-16 + + + rule|text|ND-ProcedureTypeUnpublish-16 + + + rule|text|ND-ProcedureAcceleratedUnpublish-16 + + + rule|text|ND-TendererQualificationRequest-16 + + + rule|text|ND-CrossBorderLawUnpublish-16 + + + rule|text|ND-ExclusionGrounds-16 + + + rule|text|ND-ContractModification-16 + rule|text|ND-NoticeResult-16 + rule|text|ND-Organizations-16 + rule|text|ND-ReviewRequests-16 + + + rule|text|ND-Organization-16 + + + rule|text|ND-Company-16 + + diff --git a/src/test/resources/eu/europa/ted/eforms/sdk/analysis/cucumber/tedefo-2768.feature b/src/test/resources/eu/europa/ted/eforms/sdk/analysis/cucumber/tedefo-2768.feature new file mode 100644 index 0000000..58c1ea1 --- /dev/null +++ b/src/test/resources/eu/europa/ted/eforms/sdk/analysis/cucumber/tedefo-2768.feature @@ -0,0 +1,31 @@ +@tedefo-2768 +Feature: Schematron files - Consistency validation + TEDEFO-2768: Check schematron files are complete and consistent + Test files under "src/test/resources/eforms-sdk-tests/tedefo-2768" + + Background: + Given The following rules + | All expected phases are present | + | Every pattern is part of at least one phase | + | Every assert diagnostics is defined in the schematron file | + + Scenario: All schematron files are consistent + Given A "tedefo-2768" folder with "valid" files + When I load all schematron files + And I load all notice types + And I execute validation + Then I should get 0 SDK validation errors + + Scenario Outline: Some schematron files are inconsistent + Given A "tedefo-2768" folder with "invalid" files + When I load all schematron files + And I load all notice types + And I execute validation + Then Rule "" should have been fired + And I should get 5 SDK validation errors + + Examples: + | expected rule | + | All expected phases are present | + | Every pattern is part of at least one phase | + | Every assert diagnostics is defined in the schematron file |