Skip to content

Commit

Permalink
add XercesValidator (OpenModelica#1257)
Browse files Browse the repository at this point in the history
* add XercesValidator

* add validation tests

* add ssp schema

* use absolute path to schema location

* print full file path for error reporting

* add_compile_definitions "SCHEMA_ROOT"

* add schema/CMakeLists.txt

* add module whereami.c to get the executable path

* Trigger build

* fix docker image for alpine

* add linux-headers for alpine/Dockerfile

* use wai_getModulePath to locate the schema

* do not free the path

* add getExecutablePath()

* report as logWarning

* expected output

* update tests

* expected output

* fix typos

* set separate working directory for random failing tests
  • Loading branch information
arun3688 committed Sep 25, 2023
1 parent fd1ec2e commit 661db67
Show file tree
Hide file tree
Showing 29 changed files with 4,127 additions and 8 deletions.
2 changes: 1 addition & 1 deletion .CI/alpine/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# We need gcc 8 for filesystem support
FROM alpine:3.12

RUN apk add -U libtool automake g++ git cmake make readline-dev musl-dev
RUN apk add -U libtool automake g++ git cmake make readline-dev musl-dev util-linux linux-headers
2 changes: 2 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@ endif()

add_subdirectory(doc)

add_subdirectory(schema)

## Add the testsuite directory (which adds the target testsuite-depends which in turn depends
## on omc-diff and testssuite-resources) only if OMSimulator is being used standalone.
option(OM_OMS_ENABLE_TESTSUITE "enable the OMSimulator testsuite" OFF)
Expand Down
2 changes: 2 additions & 0 deletions schema/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
install(DIRECTORY fmi2 fmi3 ssp
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/OMSimulator/schema)
480 changes: 480 additions & 0 deletions schema/ssp/SystemStructureCommon.xsd

Large diffs are not rendered by default.

950 changes: 950 additions & 0 deletions schema/ssp/SystemStructureDescription.xsd

Large diffs are not rendered by default.

922 changes: 922 additions & 0 deletions schema/ssp/SystemStructureDescription11.xsd

Large diffs are not rendered by default.

119 changes: 119 additions & 0 deletions schema/ssp/SystemStructureParameterMapping.xsd
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
xmlns:ssm="http://ssp-standard.org/SSP1/SystemStructureParameterMapping"
xmlns:ssc="http://ssp-standard.org/SSP1/SystemStructureCommon"
targetNamespace="http://ssp-standard.org/SSP1/SystemStructureParameterMapping">
<xs:annotation>
<xs:documentation xml:lang="en">
This is the normative XML Schema 1.0 schema for the MAP SSP
SystemStructureParameterMapping 1.0 format.

Version: 1.0

Copyright 2016 -- 2019 Modelica Association Project "SSP"

Redistribution and use in source and binary forms, with or
without modification, are permitted provided that the
following conditions are met:

1. Redistributions of source code must retain the above
copyright notice, this list of conditions and the
following disclaimer.

2. Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the
following disclaimer in the documentation and/or other
materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
</xs:documentation>
</xs:annotation>

<xs:import namespace="http://ssp-standard.org/SSP1/SystemStructureCommon" schemaLocation="SystemStructureCommon.xsd"/>

<xs:element name="ParameterMapping">
<xs:complexType>
<xs:sequence>
<xs:element name="MappingEntry" minOccurs="0" maxOccurs="unbounded" type="ssm:TMappingEntry"/>
<xs:element name="Annotations" minOccurs="0" type="ssc:TAnnotations"/>
</xs:sequence>
<xs:attribute name="version" use="required">
<xs:annotation>
<xs:documentation xml:lang="en">
Version of SSM format, 1.0 for this release.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:normalizedString">
<xs:pattern value="1[.][0-9]+(-.*)?"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attributeGroup ref="ssc:ABaseElement"/>
<xs:attributeGroup ref="ssc:ATopLevelMetaData"/>
</xs:complexType>
</xs:element>

<xs:complexType name="TMappingEntry">
<xs:sequence>
<xs:group ref="ssc:GTransformationChoice" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation xml:lang="en">
This optional element specifies a transformation that is to be applied to
the parameter value prior to its application to its target parameter.
</xs:documentation>
</xs:annotation>
</xs:group>
<xs:element name="Annotations" minOccurs="0" type="ssc:TAnnotations"/>
</xs:sequence>
<xs:attributeGroup ref="ssc:ABaseElement"/>
<xs:attribute name="source" type="xs:string" use="required">
<xs:annotation>
<xs:documentation xml:lang="en">
This attribute specifies the name of the parameter in the parameter source
that is to be mapped to a new name and/or provided with a transformation
in this mapping entry.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="target" type="xs:string" use="required">
<xs:annotation>
<xs:documentation xml:lang="en">
This attribute specifies the name of the parameter in the system or
component that is to be parametrized, i.e. that is the target of this
mapping entry.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="suppressUnitConversion" type="xs:boolean" use="optional" default="false">
<xs:annotation>
<xs:documentation xml:lang="en">
This attribute specifies whether automatic conversions between start
and end connector are performed using unit information potentially
available for both start and end definitions. If this attribute is
supplied and its value is true, then the environment will not perform
any automatic unit conversions, otherwise automatic unit
conversions can be performed. This is also useful in conjunction with
the optional linear transformation supplied via the LinearTransformation
element: With suppressUnitConversion = true, the linear transformation
is performed instead of any unit conversions, whereas otherwise the
linear transformation is performed in addition to any unit conversions.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>

</xs:schema>
218 changes: 218 additions & 0 deletions schema/ssp/SystemStructureParameterValues.xsd
Original file line number Diff line number Diff line change
@@ -0,0 +1,218 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
xmlns:ssv="http://ssp-standard.org/SSP1/SystemStructureParameterValues"
xmlns:ssc="http://ssp-standard.org/SSP1/SystemStructureCommon"
targetNamespace="http://ssp-standard.org/SSP1/SystemStructureParameterValues">
<xs:annotation>
<xs:documentation xml:lang="en">
This is the normative XML Schema 1.0 schema for the MAP SSP
SystemStructureParameterValues 1.0 format.

Version: 1.0

Copyright 2016 -- 2019 Modelica Association Project "SSP"

Redistribution and use in source and binary forms, with or
without modification, are permitted provided that the
following conditions are met:

1. Redistributions of source code must retain the above
copyright notice, this list of conditions and the
following disclaimer.

2. Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the
following disclaimer in the documentation and/or other
materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
</xs:documentation>
</xs:annotation>

<xs:import namespace="http://ssp-standard.org/SSP1/SystemStructureCommon" schemaLocation="SystemStructureCommon.xsd"/>

<xs:element name="ParameterSet">
<xs:complexType>
<xs:sequence>
<xs:element name="Parameters" type="ssv:TParameters"/>
<xs:element name="Enumerations" minOccurs="0" type="ssc:TEnumerations"/>
<xs:element name="Units" minOccurs="0" type="ssc:TUnits"/>
<xs:element name="Annotations" minOccurs="0" type="ssc:TAnnotations"/>
</xs:sequence>
<xs:attribute name="version" use="required">
<xs:annotation>
<xs:documentation xml:lang="en">
Version of SSV format, 1.0 for this release.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:normalizedString">
<xs:pattern value="1[.][0-9]+(-.*)?"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attributeGroup ref="ssc:ABaseElement"/>
<xs:attribute name="name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation xml:lang="en">
Name of the Parameter Set.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attributeGroup ref="ssc:ATopLevelMetaData"/>
</xs:complexType>
</xs:element>

<xs:complexType name="TParameters">
<xs:sequence>
<xs:element name="Parameter" minOccurs="0" maxOccurs="unbounded" type="ssv:TParameter"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TParameter">
<xs:sequence>
<xs:choice>
<xs:element name="Real">
<xs:complexType>
<xs:attribute name="value" type="xs:double" use="required">
<xs:annotation>
<xs:documentation xml:lang="en">
This attribute gives the value of the parameter.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="unit" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation xml:lang="en">
This attribute gives the unit of the parameter value and must
reference one of the unit definitions provided in the Units
element of the enclosing file.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="Integer">
<xs:complexType>
<xs:attribute name="value" type="xs:int" use="required">
<xs:annotation>
<xs:documentation xml:lang="en">
This attribute gives the value of the parameter.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="Boolean">
<xs:complexType>
<xs:attribute name="value" type="xs:boolean" use="required">
<xs:annotation>
<xs:documentation xml:lang="en">
This attribute gives the value of the parameter.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="String">
<xs:complexType>
<xs:attribute name="value" type="xs:string" use="required">
<xs:annotation>
<xs:documentation xml:lang="en">
This attribute gives the value of the parameter.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="Enumeration">
<xs:complexType>
<xs:attribute name="value" type="xs:string" use="required">
<xs:annotation>
<xs:documentation xml:lang="en">
This attribute gives the value of the parameter as
the enumeration item name. Note that the actual
numeric value this value is mapped to at run time
will depend on the item mapping of the enumeration
type of the variables being parameterized.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="name" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation xml:lang="en">
This attribute specifies the name of the enumeration
which references into the set of defined enumerations
of the system structure description, as contained in
the Enumerations element of the root element.

This attribute is optional; if it is not specified, then
the list of valid enumeration items with their names and
values is not specified, and the interpretation of the
enumeration value is left solely to the variables that
are being parameterized.

If the attribute is specified, implementations MAY use
that information for user interface purposes, and/or
for additional consistency checking.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="Binary">
<xs:complexType>
<xs:attribute name="mime-type" type="xs:string" default="application/octet-stream">
<xs:annotation>
<xs:documentation xml:lang="en">
This optional attribute specifies the MIME type of the
underlying binary data, which defaults to the non-specific
application/octet-stream type. This information can be
used by the implementation to detect mismatches between
binary parameters, or provide automatic conversions
between different formats. It should be noted that the
implementation is not required to provide this service,
i.e. it remains the responsibility of the operator to
ensure only compatible binary connectors/parameters are
connected.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="value" type="xs:hexBinary" use="required">
<xs:annotation>
<xs:documentation xml:lang="en">
This attribute gives the value of the parameter as a
hex encoded binary value.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:choice>
<xs:element name="Annotations" minOccurs="0" type="ssc:TAnnotations"/>
</xs:sequence>
<xs:attributeGroup ref="ssc:ABaseElement"/>
<xs:attribute name="name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation xml:lang="en">
This attribute specifies the name of the parameter in the parameter set,
which must be unique within in the parameter set.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>

</xs:schema>
Loading

0 comments on commit 661db67

Please sign in to comment.