diff --git a/basyx/aas/adapter/json/json_deserialization.py b/basyx/aas/adapter/json/json_deserialization.py
index 262aebea4..ee46b8c0f 100644
--- a/basyx/aas/adapter/json/json_deserialization.py
+++ b/basyx/aas/adapter/json/json_deserialization.py
@@ -70,7 +70,7 @@ def _get_ts(dct: Dict[str, object], key: str, type_: Type[T]) -> T:
return val
-def _expect_type(object_: object, type_: Type, context: str, failsafe: bool) -> bool:
+def _is_of_type(object_: object, type_: Type, context: str, failsafe: bool) -> bool:
"""
Helper function to check type of an embedded object.
@@ -232,48 +232,72 @@ def _amend_abstract_attributes(cls, obj: object, dct: Dict[str, object]) -> None
:param dct: The object's dict representation from JSON
"""
if isinstance(obj, model.Referable):
- if 'idShort' in dct:
- obj.id_short = _get_ts(dct, 'idShort', str)
- if 'category' in dct:
- obj.category = _get_ts(dct, 'category', str)
- if 'displayName' in dct:
- obj.display_name = cls._construct_lang_string_set(_get_ts(dct, 'displayName', list),
- model.MultiLanguageNameType)
- if 'description' in dct:
- obj.description = cls._construct_lang_string_set(_get_ts(dct, 'description', list),
- model.MultiLanguageTextType)
+ cls._amend_referable_attrs(obj, dct)
if isinstance(obj, model.Identifiable):
- if 'administration' in dct:
- obj.administration = cls._construct_administrative_information(_get_ts(dct, 'administration', dict))
+ cls._amend_identifiable_attrs(obj, dct)
if isinstance(obj, model.HasSemantics):
- if 'semanticId' in dct:
- obj.semantic_id = cls._construct_reference(_get_ts(dct, 'semanticId', dict))
- if 'supplementalSemanticIds' in dct:
- for ref in _get_ts(dct, 'supplementalSemanticIds', list):
- obj.supplemental_semantic_id.append(cls._construct_reference(ref))
+ cls._amend_has_semantics_attrs(obj, dct)
# `HasKind` provides only mandatory, immutable attributes; so we cannot do anything here, after object creation.
# However, the `cls._get_kind()` function may assist by retrieving them from the JSON object
if isinstance(obj, model.Qualifiable) and not cls.stripped:
- if 'qualifiers' in dct:
- for constraint_dct in _get_ts(dct, 'qualifiers', list):
- constraint = cls._construct_qualifier(constraint_dct)
- obj.qualifier.add(constraint)
+ cls._amend_qualifiable_attrs(obj, dct)
if isinstance(obj, model.HasDataSpecification) and not cls.stripped:
- if 'embeddedDataSpecifications' in dct:
- for dspec in _get_ts(dct, 'embeddedDataSpecifications', list):
- obj.embedded_data_specifications.append(
- # TODO: remove the following type: ignore comment when mypy supports abstract types for Type[T]
- # see https://github.com/python/mypy/issues/5374
- model.EmbeddedDataSpecification(
- data_specification=cls._construct_reference(_get_ts(dspec, 'dataSpecification', dict)),
- data_specification_content=_get_ts(dspec, 'dataSpecificationContent',
- model.DataSpecificationContent) # type: ignore
- )
- )
+ cls._amend_has_data_specification_attrs(obj, dct)
if isinstance(obj, model.HasExtension) and not cls.stripped:
- if 'extensions' in dct:
- for extension in _get_ts(dct, 'extensions', list):
- obj.extension.add(cls._construct_extension(extension))
+ cls._amend_has_extension_attrs(obj, dct)
+
+ @classmethod
+ def _amend_referable_attrs(cls, obj: model.Referable, dct: Dict[str, object]):
+ if 'idShort' in dct:
+ obj.id_short = _get_ts(dct, 'idShort', str)
+ if 'category' in dct:
+ obj.category = _get_ts(dct, 'category', str)
+ if 'displayName' in dct:
+ obj.display_name = cls._construct_lang_string_set(_get_ts(dct, 'displayName', list),
+ model.MultiLanguageNameType)
+ if 'description' in dct:
+ obj.description = cls._construct_lang_string_set(_get_ts(dct, 'description', list),
+ model.MultiLanguageTextType)
+
+ @classmethod
+ def _amend_identifiable_attrs(cls, obj: model.Identifiable, dct: Dict[str, object]):
+ if 'administration' in dct:
+ obj.administration = cls._construct_administrative_information(_get_ts(dct, 'administration', dict))
+
+ @classmethod
+ def _amend_has_semantics_attrs(cls, obj: model.HasSemantics, dct: Dict[str, object]):
+ if 'semanticId' in dct:
+ obj.semantic_id = cls._construct_reference(_get_ts(dct, 'semanticId', dict))
+ if 'supplementalSemanticIds' in dct:
+ for ref in _get_ts(dct, 'supplementalSemanticIds', list):
+ obj.supplemental_semantic_id.append(cls._construct_reference(ref))
+
+ @classmethod
+ def _amend_qualifiable_attrs(cls, obj: model.Qualifiable, dct: Dict[str, object]):
+ if 'qualifiers' in dct:
+ for constraint_dct in _get_ts(dct, 'qualifiers', list):
+ constraint = cls._construct_qualifier(constraint_dct)
+ obj.qualifier.add(constraint)
+
+ @classmethod
+ def _amend_has_data_specification_attrs(cls, obj: model.HasDataSpecification, dct: Dict[str, object]):
+ if 'embeddedDataSpecifications' in dct:
+ for dspec in _get_ts(dct, 'embeddedDataSpecifications', list):
+ obj.embedded_data_specifications.append(
+ # TODO: remove the following type: ignore comment when mypy supports abstract types for Type[T]
+ # see https://github.com/python/mypy/issues/5374
+ model.EmbeddedDataSpecification(
+ data_specification=cls._construct_reference(_get_ts(dspec, 'dataSpecification', dict)),
+ data_specification_content=_get_ts(dspec, 'dataSpecificationContent',
+ model.DataSpecificationContent) # type: ignore
+ )
+ )
+
+ @classmethod
+ def _amend_has_extension_attrs(cls, obj: model.HasExtension, dct: Dict[str, object]):
+ if 'extensions' in dct:
+ for extension in _get_ts(dct, 'extensions', list):
+ obj.extension.add(cls._construct_extension(extension))
@classmethod
def _get_kind(cls, dct: Dict[str, object]) -> model.ModellingKind:
@@ -517,7 +541,7 @@ def _construct_entity(cls, dct: Dict[str, object], object_class=model.Entity) ->
cls._amend_abstract_attributes(ret, dct)
if not cls.stripped and 'statements' in dct:
for element in _get_ts(dct, "statements", list):
- if _expect_type(element, model.SubmodelElement, str(ret), cls.failsafe):
+ if _is_of_type(element, model.SubmodelElement, str(ret), cls.failsafe):
ret.statement.add(element)
return ret
@@ -554,7 +578,7 @@ def _construct_submodel(cls, dct: Dict[str, object], object_class=model.Submodel
cls._amend_abstract_attributes(ret, dct)
if not cls.stripped and 'submodelElements' in dct:
for element in _get_ts(dct, "submodelElements", list):
- if _expect_type(element, model.SubmodelElement, str(ret), cls.failsafe):
+ if _is_of_type(element, model.SubmodelElement, str(ret), cls.failsafe):
ret.submodel_element.add(element)
return ret
@@ -633,7 +657,7 @@ def _construct_annotated_relationship_element(
cls._amend_abstract_attributes(ret, dct)
if not cls.stripped and 'annotations' in dct:
for element in _get_ts(dct, 'annotations', list):
- if _expect_type(element, model.DataElement, str(ret), cls.failsafe):
+ if _is_of_type(element, model.DataElement, str(ret), cls.failsafe):
ret.annotation.add(element)
return ret
@@ -645,7 +669,7 @@ def _construct_submodel_element_collection(cls, dct: Dict[str, object],
cls._amend_abstract_attributes(ret, dct)
if not cls.stripped and 'value' in dct:
for element in _get_ts(dct, "value", list):
- if _expect_type(element, model.SubmodelElement, str(ret), cls.failsafe):
+ if _is_of_type(element, model.SubmodelElement, str(ret), cls.failsafe):
ret.value.add(element)
return ret
@@ -670,7 +694,7 @@ def _construct_submodel_element_list(cls, dct: Dict[str, object], object_class=m
cls._amend_abstract_attributes(ret, dct)
if not cls.stripped and 'value' in dct:
for element in _get_ts(dct, 'value', list):
- if _expect_type(element, type_value_list_element, str(ret), cls.failsafe):
+ if _is_of_type(element, type_value_list_element, str(ret), cls.failsafe):
ret.value.add(element)
return ret
diff --git a/basyx/aas/adapter/json/json_serialization.py b/basyx/aas/adapter/json/json_serialization.py
index 17fff2680..705682415 100644
--- a/basyx/aas/adapter/json/json_serialization.py
+++ b/basyx/aas/adapter/json/json_serialization.py
@@ -62,7 +62,7 @@ def default(self, obj: object) -> object:
:param obj: The object to serialize to json
:return: The serialized object
"""
- mapping: Dict[Type, Callable] = {
+ serialization_methods: Dict[Type, Callable] = {
model.AdministrativeInformation: self._administrative_information_to_json,
model.AnnotatedRelationshipElement: self._annotated_relationship_element_to_json,
model.AssetAdministrationShell: self._asset_administration_shell_to_json,
@@ -92,10 +92,10 @@ def default(self, obj: object) -> object:
model.SubmodelElementList: self._submodel_element_list_to_json,
model.ValueReferencePair: self._value_reference_pair_to_json,
}
- for typ in mapping:
+ for typ in serialization_methods:
if isinstance(obj, typ):
- mapping_method = mapping[typ]
- return mapping_method(obj)
+ serialization_method = serialization_methods[typ]
+ return serialization_method(obj)
return super().default(obj)
@classmethod
@@ -108,48 +108,75 @@ def _abstract_classes_to_json(cls, obj: object) -> Dict[str, object]:
"""
data: Dict[str, object] = {}
if isinstance(obj, model.HasExtension) and not cls.stripped:
- if obj.extension:
- data['extensions'] = list(obj.extension)
+ cls._extend_with_has_extension_attrs(data, obj)
if isinstance(obj, model.HasDataSpecification) and not cls.stripped:
- if obj.embedded_data_specifications:
- data['embeddedDataSpecifications'] = [
- {'dataSpecification': spec.data_specification,
- 'dataSpecificationContent': spec.data_specification_content}
- for spec in obj.embedded_data_specifications
- ]
-
+ cls._extend_with_has_data_specification_specific_attrs(data, obj)
if isinstance(obj, model.Referable):
- if obj.id_short and not isinstance(obj.parent, model.SubmodelElementList):
- data['idShort'] = obj.id_short
- if obj.display_name:
- data['displayName'] = obj.display_name
- if obj.category:
- data['category'] = obj.category
- if obj.description:
- data['description'] = obj.description
- try:
- ref_type = next(iter(t for t in inspect.getmro(type(obj)) if t in model.KEY_TYPES_CLASSES))
- except StopIteration as e:
- raise TypeError("Object of type {} is Referable but does not inherit from a known AAS type"
- .format(obj.__class__.__name__)) from e
- data['modelType'] = ref_type.__name__
+ cls._extend_with_referable_attrs(data, obj)
if isinstance(obj, model.Identifiable):
- data['id'] = obj.id
- if obj.administration:
- data['administration'] = obj.administration
+ cls._extend_with_identifiable_attrs(data, obj)
if isinstance(obj, model.HasSemantics):
- if obj.semantic_id:
- data['semanticId'] = obj.semantic_id
- if obj.supplemental_semantic_id:
- data['supplementalSemanticIds'] = list(obj.supplemental_semantic_id)
+ cls._extend_with_has_semantics_attrs(data, obj)
if isinstance(obj, model.HasKind):
- if obj.kind is model.ModellingKind.TEMPLATE:
- data['kind'] = _generic.MODELLING_KIND[obj.kind]
+ cls._extend_with_has_kind_attrs(data, obj)
if isinstance(obj, model.Qualifiable) and not cls.stripped:
- if obj.qualifier:
- data['qualifiers'] = list(obj.qualifier)
+ cls._extend_with_qualifiable_attrs(data, obj)
return data
+ @classmethod
+ def _extend_with_has_extension_attrs(cls, data: Dict[str, object], obj: model.HasExtension):
+ if obj.extension:
+ data['extensions'] = list(obj.extension)
+
+ @classmethod
+ def _extend_with_has_data_specification_specific_attrs(cls, data: Dict[str, object], obj: model.HasDataSpecification):
+ if obj.embedded_data_specifications:
+ data['embeddedDataSpecifications'] = [
+ {'dataSpecification': spec.data_specification,
+ 'dataSpecificationContent': spec.data_specification_content}
+ for spec in obj.embedded_data_specifications
+ ]
+
+ @classmethod
+ def _extend_with_referable_attrs(cls, data: Dict[str, object], obj: model.Referable):
+ if obj.id_short and not isinstance(obj.parent, model.SubmodelElementList):
+ data['idShort'] = obj.id_short
+ if obj.display_name:
+ data['displayName'] = obj.display_name
+ if obj.category:
+ data['category'] = obj.category
+ if obj.description:
+ data['description'] = obj.description
+ try:
+ ref_type = next(iter(t for t in inspect.getmro(type(obj)) if t in model.KEY_TYPES_CLASSES))
+ except StopIteration as e:
+ raise TypeError("Object of type {} is Referable but does not inherit from a known AAS type"
+ .format(obj.__class__.__name__)) from e
+ data['modelType'] = ref_type.__name__
+
+ @classmethod
+ def _extend_with_identifiable_attrs(cls, data: Dict[str, object], obj: model.Identifiable):
+ data['id'] = obj.id
+ if obj.administration:
+ data['administration'] = obj.administration
+
+ @classmethod
+ def _extend_with_has_semantics_attrs(cls, data: Dict[str, object], obj: model.HasSemantics):
+ if obj.semantic_id:
+ data['semanticId'] = obj.semantic_id
+ if obj.supplemental_semantic_id:
+ data['supplementalSemanticIds'] = list(obj.supplemental_semantic_id)
+
+ @classmethod
+ def _extend_with_has_kind_attrs(cls, data: Dict[str, object], obj: model.HasKind):
+ if obj.kind is model.ModellingKind.TEMPLATE:
+ data['kind'] = _generic.MODELLING_KIND[obj.kind]
+
+ @classmethod
+ def _extend_with_qualifiable_attrs(cls, data: Dict[str, object], obj: model.Qualifiable):
+ if obj.qualifier:
+ data['qualifiers'] = list(obj.qualifier)
+
# #############################################################
# transformation functions to serialize classes from model.base
# #############################################################
diff --git a/basyx/aas/adapter/xml/AAS.xsd b/basyx/aas/adapter/xml/AAS.xsd
index 76c1fd544..25d7a52b9 100644
--- a/basyx/aas/adapter/xml/AAS.xsd
+++ b/basyx/aas/adapter/xml/AAS.xsd
@@ -18,20 +18,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -112,6 +125,7 @@
+
@@ -119,21 +133,21 @@
-
+
-
+
-
+
@@ -148,6 +162,7 @@
+
@@ -249,7 +264,14 @@
-
+
+
+
+
+
+
+
+
@@ -338,6 +360,7 @@
+
@@ -345,17 +368,11 @@
-
-
-
-
-
-
-
-
+
+
@@ -365,12 +382,19 @@
+
-
-
+
+
+
+
+
+
+
+
@@ -382,6 +406,7 @@
+
@@ -390,6 +415,7 @@
+
@@ -467,21 +493,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -526,6 +538,7 @@
+
@@ -545,6 +558,7 @@
+
@@ -575,6 +589,14 @@
+
+
+
+
+
+
+
+
@@ -629,7 +651,7 @@
-
+
@@ -671,11 +693,12 @@
+
-
+
@@ -683,8 +706,8 @@
-
-
+
+
@@ -694,13 +717,15 @@
+
-
+
+
@@ -719,13 +744,6 @@
-
-
-
-
-
-
-
@@ -788,6 +806,7 @@
+
@@ -796,6 +815,7 @@
+
@@ -808,6 +828,7 @@
+
@@ -815,10 +836,11 @@
+
-
+
@@ -840,7 +862,6 @@
-
@@ -862,6 +883,9 @@
+
+
+
@@ -869,9 +893,6 @@
-
-
-
@@ -905,7 +926,14 @@
-
+
+
+
+
+
+
+
+
@@ -942,9 +970,9 @@
+
-
@@ -955,23 +983,20 @@
-
-
-
-
+
-
-
-
+
+
-
+
+
+
+
+
-
-
-
@@ -1011,45 +1036,32 @@
-
-
-
+
+
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1075,11 +1087,14 @@
-
-
-
-
-
+
+
+
+
+
+
+
+
@@ -1225,6 +1240,11 @@
+
+
+
+
+
@@ -1321,4 +1341,4 @@
-
\ No newline at end of file
+
diff --git a/basyx/aas/adapter/xml/xml_deserialization.py b/basyx/aas/adapter/xml/xml_deserialization.py
index a2acc55a2..952046d8d 100644
--- a/basyx/aas/adapter/xml/xml_deserialization.py
+++ b/basyx/aas/adapter/xml/xml_deserialization.py
@@ -436,52 +436,76 @@ def _amend_abstract_attributes(cls, obj: object, element: etree.Element) -> None
:return: None
"""
if isinstance(obj, model.Referable):
- id_short = _get_text_or_none(element.find(NS_AAS + "idShort"))
- if id_short is not None:
- obj.id_short = id_short
- category = _get_text_or_none(element.find(NS_AAS + "category"))
- display_name = _failsafe_construct(element.find(NS_AAS + "displayName"),
- cls.construct_multi_language_name_type, cls.failsafe)
- if display_name is not None:
- obj.display_name = display_name
- if category is not None:
- obj.category = category
- description = _failsafe_construct(element.find(NS_AAS + "description"),
- cls.construct_multi_language_text_type, cls.failsafe)
- if description is not None:
- obj.description = description
+ cls._amend_referable_attrs(element, obj)
if isinstance(obj, model.Identifiable):
- administration = _failsafe_construct(element.find(NS_AAS + "administration"),
- cls.construct_administrative_information, cls.failsafe)
- if administration:
- obj.administration = administration
+ cls._amend_identifiable_attrs(element, obj)
if isinstance(obj, model.HasSemantics):
- semantic_id = _failsafe_construct(element.find(NS_AAS + "semanticId"), cls.construct_reference,
- cls.failsafe)
- if semantic_id is not None:
- obj.semantic_id = semantic_id
- supplemental_semantic_ids = element.find(NS_AAS + "supplementalSemanticIds")
- if supplemental_semantic_ids is not None:
- for supplemental_semantic_id in _child_construct_multiple(supplemental_semantic_ids,
- NS_AAS + "reference", cls.construct_reference,
- cls.failsafe):
- obj.supplemental_semantic_id.append(supplemental_semantic_id)
+ cls._amend_has_semantics_attrs(element, obj)
if isinstance(obj, model.Qualifiable) and not cls.stripped:
- qualifiers_elem = element.find(NS_AAS + "qualifiers")
- if qualifiers_elem is not None and len(qualifiers_elem) > 0:
- for qualifier in _failsafe_construct_multiple(qualifiers_elem, cls.construct_qualifier, cls.failsafe):
- obj.qualifier.add(qualifier)
+ cls._amend_qualifiable_attrs(element, obj)
if isinstance(obj, model.HasDataSpecification) and not cls.stripped:
- embedded_data_specifications_elem = element.find(NS_AAS + "embeddedDataSpecifications")
- if embedded_data_specifications_elem is not None:
- for eds in _failsafe_construct_multiple(embedded_data_specifications_elem,
- cls.construct_embedded_data_specification, cls.failsafe):
- obj.embedded_data_specifications.append(eds)
+ cls.amend_has_data_specification_attrs(element, obj)
if isinstance(obj, model.HasExtension) and not cls.stripped:
- extension_elem = element.find(NS_AAS + "extension")
- if extension_elem is not None:
- for extension in _failsafe_construct_multiple(extension_elem, cls.construct_extension, cls.failsafe):
- obj.extension.add(extension)
+ cls._amend_extension_attrs(element, obj)
+
+ @classmethod
+ def _amend_referable_attrs(cls, element: etree.Element, obj: model.Referable):
+ id_short = _get_text_or_none(element.find(NS_AAS + "idShort"))
+ if id_short is not None:
+ obj.id_short = id_short
+ display_name = _failsafe_construct(element.find(NS_AAS + "displayName"),
+ cls.construct_multi_language_name_type, cls.failsafe)
+ if display_name is not None:
+ obj.display_name = display_name
+ category = _get_text_or_none(element.find(NS_AAS + "category"))
+ if category is not None:
+ obj.category = category
+ description = _failsafe_construct(element.find(NS_AAS + "description"),
+ cls.construct_multi_language_text_type, cls.failsafe)
+ if description is not None:
+ obj.description = description
+
+ @classmethod
+ def _amend_identifiable_attrs(cls, element: etree.Element, obj: model.Identifiable):
+ administration = _failsafe_construct(element.find(NS_AAS + "administration"),
+ cls.construct_administrative_information, cls.failsafe)
+ if administration:
+ obj.administration = administration
+
+ @classmethod
+ def _amend_has_semantics_attrs(cls, element: etree.Element, obj: model.HasSemantics):
+ semantic_id = _failsafe_construct(element.find(NS_AAS + "semanticId"), cls.construct_reference,
+ cls.failsafe)
+ if semantic_id is not None:
+ obj.semantic_id = semantic_id
+ supplemental_semantic_ids = element.find(NS_AAS + "supplementalSemanticIds")
+ if supplemental_semantic_ids is not None:
+ for supplemental_semantic_id in _child_construct_multiple(supplemental_semantic_ids,
+ NS_AAS + "reference", cls.construct_reference,
+ cls.failsafe):
+ obj.supplemental_semantic_id.append(supplemental_semantic_id)
+
+ @classmethod
+ def _amend_qualifiable_attrs(cls, element: etree.Element, obj: model.Qualifiable):
+ qualifiers_elem = element.find(NS_AAS + "qualifiers")
+ if qualifiers_elem is not None and len(qualifiers_elem) > 0:
+ for qualifier in _failsafe_construct_multiple(qualifiers_elem, cls.construct_qualifier, cls.failsafe):
+ obj.qualifier.add(qualifier)
+
+ @classmethod
+ def amend_has_data_specification_attrs(cls, element: etree.Element, obj: model.HasDataSpecification):
+ embedded_data_specifications_elem = element.find(NS_AAS + "embeddedDataSpecifications")
+ if embedded_data_specifications_elem is not None:
+ for eds in _failsafe_construct_multiple(embedded_data_specifications_elem,
+ cls.construct_embedded_data_specification, cls.failsafe):
+ obj.embedded_data_specifications.append(eds)
+
+ @classmethod
+ def _amend_extension_attrs(cls, element: etree.Element, obj: model.HasExtension):
+ extension_elem = element.find(NS_AAS + "extension")
+ if extension_elem is not None:
+ for extension in _failsafe_construct_multiple(extension_elem, cls.construct_extension, cls.failsafe):
+ obj.extension.add(extension)
@classmethod
def _construct_relationship_element_internal(cls, element: etree.Element, object_class: Type[RE], **_kwargs: Any) \
@@ -692,8 +716,10 @@ def construct_extension(cls, element: etree.Element, object_class=model.Extensio
value = _get_text_or_none(element.find(NS_AAS + "value"))
if value is not None:
extension.value = model.datatypes.from_xsd(value, extension.value_type)
- extension.refers_to = _failsafe_construct_multiple(element.findall(NS_AAS + "refersTo"),
- cls._construct_referable_reference, cls.failsafe)
+ extension.refers_to = _failsafe_construct_multiple(
+ element.find(NS_AAS + "refersTo").findall(NS_AAS + "reference"),
+ cls._construct_referable_reference, cls.failsafe
+ )
cls._amend_abstract_attributes(extension, element)
return extension
@@ -703,16 +729,16 @@ def construct_submodel_element(cls, element: etree.Element, **kwargs: Any) -> mo
This function doesn't support the object_class parameter.
Overwrite each individual SubmodelElement/DataElement constructor function instead.
"""
- submodel_elements: Dict[str, Callable[..., model.SubmodelElement]] = {NS_AAS + k: v for k, v in {
- "annotatedRelationshipElement": cls.construct_annotated_relationship_element,
- "basicEventElement": cls.construct_basic_event_element,
- "capability": cls.construct_capability,
- "entity": cls.construct_entity,
- "operation": cls.construct_operation,
- "relationshipElement": cls.construct_relationship_element,
- "submodelElementCollection": cls.construct_submodel_element_collection,
- "submodelElementList": cls.construct_submodel_element_list
- }.items()}
+ submodel_elements: Dict[str, Callable[..., model.SubmodelElement]] = {
+ f"{NS_AAS}annotatedRelationshipElement": cls.construct_annotated_relationship_element,
+ f"{NS_AAS}basicEventElement": cls.construct_basic_event_element,
+ f"{NS_AAS}capability": cls.construct_capability,
+ f"{NS_AAS}entity": cls.construct_entity,
+ f"{NS_AAS}operation": cls.construct_operation,
+ f"{NS_AAS}relationshipElement": cls.construct_relationship_element,
+ f"{NS_AAS}submodelElementCollection": cls.construct_submodel_element_collection,
+ f"{NS_AAS}submodelElementList": cls.construct_submodel_element_list
+ }
if element.tag not in submodel_elements:
return cls.construct_data_element(element, abstract_class_name="SubmodelElement", **kwargs)
return submodel_elements[element.tag](element, **kwargs)
@@ -724,14 +750,14 @@ def construct_data_element(cls, element: etree.Element, abstract_class_name: str
This function does not support the object_class parameter.
Overwrite each individual DataElement constructor function instead.
"""
- data_elements: Dict[str, Callable[..., model.DataElement]] = {NS_AAS + k: v for k, v in {
- "blob": cls.construct_blob,
- "file": cls.construct_file,
- "multiLanguageProperty": cls.construct_multi_language_property,
- "property": cls.construct_property,
- "range": cls.construct_range,
- "referenceElement": cls.construct_reference_element,
- }.items()}
+ data_elements: Dict[str, Callable[..., model.DataElement]] = {
+ f"{NS_AAS}blob": cls.construct_blob,
+ f"{NS_AAS}file": cls.construct_file,
+ f"{NS_AAS}multiLanguageProperty": cls.construct_multi_language_property,
+ f"{NS_AAS}property": cls.construct_property,
+ f"{NS_AAS}range": cls.construct_range,
+ f"{NS_AAS}referenceElement": cls.construct_reference_element,
+ }
if element.tag not in data_elements:
raise KeyError(_element_pretty_identifier(element) + f" is not a valid {abstract_class_name}!")
return data_elements[element.tag](element, **kwargs)
@@ -1086,9 +1112,9 @@ def construct_data_specification_content(cls, element: etree.Element, **kwargs:
Overwrite each individual DataSpecificationContent constructor function instead.
"""
data_specification_contents: Dict[str, Callable[..., model.DataSpecificationContent]] = \
- {NS_AAS + k: v for k, v in {
- "dataSpecificationIec61360": cls.construct_data_specification_iec61360,
- }.items()}
+ {
+ f"{NS_AAS}dataSpecificationIec61360": cls.construct_data_specification_iec61360,
+ }
if element.tag not in data_specification_contents:
raise KeyError(f"{_element_pretty_identifier(element)} is not a valid DataSpecificationContent!")
return data_specification_contents[element.tag](element, **kwargs)
@@ -1293,86 +1319,52 @@ def read_aas_xml_element(file: IO, construct: XMLConstructables, failsafe: bool
decoder_ = _select_decoder(failsafe, stripped, decoder)
constructor: Callable[..., object]
- if construct == XMLConstructables.KEY:
- constructor = decoder_.construct_key
- elif construct == XMLConstructables.REFERENCE:
- constructor = decoder_.construct_reference
- elif construct == XMLConstructables.MODEL_REFERENCE:
- constructor = decoder_.construct_model_reference
- elif construct == XMLConstructables.GLOBAL_REFERENCE:
- constructor = decoder_.construct_external_reference
- elif construct == XMLConstructables.ADMINISTRATIVE_INFORMATION:
- constructor = decoder_.construct_administrative_information
- elif construct == XMLConstructables.QUALIFIER:
- constructor = decoder_.construct_qualifier
- elif construct == XMLConstructables.ANNOTATED_RELATIONSHIP_ELEMENT:
- constructor = decoder_.construct_annotated_relationship_element
- elif construct == XMLConstructables.BASIC_EVENT_ELEMENT:
- constructor = decoder_.construct_basic_event_element
- elif construct == XMLConstructables.BLOB:
- constructor = decoder_.construct_blob
- elif construct == XMLConstructables.CAPABILITY:
- constructor = decoder_.construct_capability
- elif construct == XMLConstructables.ENTITY:
- constructor = decoder_.construct_entity
- elif construct == XMLConstructables.EXTENSION:
- constructor = decoder_.construct_extension
- elif construct == XMLConstructables.FILE:
- constructor = decoder_.construct_file
- elif construct == XMLConstructables.RESOURCE:
- constructor = decoder_.construct_resource
- elif construct == XMLConstructables.MULTI_LANGUAGE_PROPERTY:
- constructor = decoder_.construct_multi_language_property
- elif construct == XMLConstructables.OPERATION:
- constructor = decoder_.construct_operation
- elif construct == XMLConstructables.PROPERTY:
- constructor = decoder_.construct_property
- elif construct == XMLConstructables.RANGE:
- constructor = decoder_.construct_range
- elif construct == XMLConstructables.REFERENCE_ELEMENT:
- constructor = decoder_.construct_reference_element
- elif construct == XMLConstructables.RELATIONSHIP_ELEMENT:
- constructor = decoder_.construct_relationship_element
- elif construct == XMLConstructables.SUBMODEL_ELEMENT_COLLECTION:
- constructor = decoder_.construct_submodel_element_collection
- elif construct == XMLConstructables.SUBMODEL_ELEMENT_LIST:
- constructor = decoder_.construct_submodel_element_list
- elif construct == XMLConstructables.ASSET_ADMINISTRATION_SHELL:
- constructor = decoder_.construct_asset_administration_shell
- elif construct == XMLConstructables.ASSET_INFORMATION:
- constructor = decoder_.construct_asset_information
- elif construct == XMLConstructables.SPECIFIC_ASSET_ID:
- constructor = decoder_.construct_specific_asset_id
- elif construct == XMLConstructables.SUBMODEL:
- constructor = decoder_.construct_submodel
- elif construct == XMLConstructables.VALUE_REFERENCE_PAIR:
- constructor = decoder_.construct_value_reference_pair
- elif construct == XMLConstructables.CONCEPT_DESCRIPTION:
- constructor = decoder_.construct_concept_description
- elif construct == XMLConstructables.MULTI_LANGUAGE_NAME_TYPE:
- constructor = decoder_.construct_multi_language_name_type
- elif construct == XMLConstructables.MULTI_LANGUAGE_TEXT_TYPE:
- constructor = decoder_.construct_multi_language_text_type
- elif construct == XMLConstructables.DEFINITION_TYPE_IEC61360:
- constructor = decoder_.construct_definition_type_iec61360
- elif construct == XMLConstructables.PREFERRED_NAME_TYPE_IEC61360:
- constructor = decoder_.construct_preferred_name_type_iec61360
- elif construct == XMLConstructables.SHORT_NAME_TYPE_IEC61360:
- constructor = decoder_.construct_short_name_type_iec61360
- elif construct == XMLConstructables.EMBEDDED_DATA_SPECIFICATION:
- constructor = decoder_.construct_embedded_data_specification
- elif construct == XMLConstructables.DATA_SPECIFICATION_IEC61360:
- constructor = decoder_.construct_data_specification_iec61360
- # the following constructors decide which constructor to call based on the elements tag
- elif construct == XMLConstructables.DATA_ELEMENT:
- constructor = decoder_.construct_data_element
- elif construct == XMLConstructables.SUBMODEL_ELEMENT:
- constructor = decoder_.construct_submodel_element
- elif construct == XMLConstructables.DATA_SPECIFICATION_CONTENT:
- constructor = decoder_.construct_data_specification_content
- # type aliases
- elif construct == XMLConstructables.VALUE_LIST:
- constructor = decoder_.construct_value_list
+ type_constructors = {
+ XMLConstructables.KEY: decoder_.construct_key,
+ XMLConstructables.REFERENCE: decoder_.construct_reference,
+ XMLConstructables.MODEL_REFERENCE: decoder_.construct_model_reference,
+ XMLConstructables.GLOBAL_REFERENCE: decoder_.construct_external_reference,
+ XMLConstructables.ADMINISTRATIVE_INFORMATION: decoder_.construct_administrative_information,
+ XMLConstructables.QUALIFIER: decoder_.construct_qualifier,
+ XMLConstructables.ANNOTATED_RELATIONSHIP_ELEMENT: decoder_.construct_annotated_relationship_element,
+ XMLConstructables.BASIC_EVENT_ELEMENT: decoder_.construct_basic_event_element,
+ XMLConstructables.BLOB: decoder_.construct_blob,
+ XMLConstructables.CAPABILITY: decoder_.construct_capability,
+ XMLConstructables.ENTITY: decoder_.construct_entity,
+ XMLConstructables.EXTENSION: decoder_.construct_extension,
+ XMLConstructables.FILE: decoder_.construct_file,
+ XMLConstructables.RESOURCE: decoder_.construct_resource,
+ XMLConstructables.MULTI_LANGUAGE_PROPERTY: decoder_.construct_multi_language_property,
+ XMLConstructables.OPERATION: decoder_.construct_operation,
+ XMLConstructables.PROPERTY: decoder_.construct_property,
+ XMLConstructables.RANGE: decoder_.construct_range,
+ XMLConstructables.REFERENCE_ELEMENT: decoder_.construct_reference_element,
+ XMLConstructables.RELATIONSHIP_ELEMENT: decoder_.construct_relationship_element,
+ XMLConstructables.SUBMODEL_ELEMENT_COLLECTION: decoder_.construct_submodel_element_collection,
+ XMLConstructables.SUBMODEL_ELEMENT_LIST: decoder_.construct_submodel_element_list,
+ XMLConstructables.ASSET_ADMINISTRATION_SHELL: decoder_.construct_asset_administration_shell,
+ XMLConstructables.ASSET_INFORMATION: decoder_.construct_asset_information,
+ XMLConstructables.SPECIFIC_ASSET_ID: decoder_.construct_specific_asset_id,
+ XMLConstructables.SUBMODEL: decoder_.construct_submodel,
+ XMLConstructables.VALUE_REFERENCE_PAIR: decoder_.construct_value_reference_pair,
+ XMLConstructables.CONCEPT_DESCRIPTION: decoder_.construct_concept_description,
+ XMLConstructables.MULTI_LANGUAGE_NAME_TYPE: decoder_.construct_multi_language_name_type,
+ XMLConstructables.MULTI_LANGUAGE_TEXT_TYPE: decoder_.construct_multi_language_text_type,
+ XMLConstructables.DEFINITION_TYPE_IEC61360: decoder_.construct_definition_type_iec61360,
+ XMLConstructables.PREFERRED_NAME_TYPE_IEC61360: decoder_.construct_preferred_name_type_iec61360,
+ XMLConstructables.SHORT_NAME_TYPE_IEC61360: decoder_.construct_short_name_type_iec61360,
+ XMLConstructables.EMBEDDED_DATA_SPECIFICATION: decoder_.construct_embedded_data_specification,
+ XMLConstructables.DATA_SPECIFICATION_IEC61360: decoder_.construct_data_specification_iec61360,
+ # the following constructors decide which constructor to call based on the elements tag
+ XMLConstructables.DATA_ELEMENT: decoder_.construct_data_element,
+ XMLConstructables.SUBMODEL_ELEMENT: decoder_.construct_submodel_element,
+ XMLConstructables.DATA_SPECIFICATION_CONTENT: decoder_.construct_data_specification_content,
+ # type aliases
+ XMLConstructables.VALUE_LIST: decoder_.construct_value_list,
+ }
+
+ if construct in type_constructors:
+ constructor = type_constructors[construct]
else:
raise ValueError(f"{construct.name} cannot be constructed!")
@@ -1409,13 +1401,11 @@ def read_aas_xml_file_into(object_store: model.AbstractObjectStore[model.Identif
decoder_ = _select_decoder(failsafe, stripped, decoder)
element_constructors: Dict[str, Callable[..., model.Identifiable]] = {
- "assetAdministrationShell": decoder_.construct_asset_administration_shell,
- "conceptDescription": decoder_.construct_concept_description,
- "submodel": decoder_.construct_submodel
+ f"{NS_AAS}assetAdministrationShell": decoder_.construct_asset_administration_shell,
+ f"{NS_AAS}conceptDescription": decoder_.construct_concept_description,
+ f"{NS_AAS}submodel": decoder_.construct_submodel
}
- element_constructors = {NS_AAS + k: v for k, v in element_constructors.items()}
-
root = _parse_xml_document(file, failsafe=decoder_.failsafe, **parser_kwargs)
if root is None:
diff --git a/basyx/aas/adapter/xml/xml_serialization.py b/basyx/aas/adapter/xml/xml_serialization.py
index c5d454631..a621d1d06 100644
--- a/basyx/aas/adapter/xml/xml_serialization.py
+++ b/basyx/aas/adapter/xml/xml_serialization.py
@@ -83,54 +83,82 @@ def abstract_classes_to_xml(tag: str, obj: object) -> etree.Element:
"""
elm = _generate_element(tag)
if isinstance(obj, model.HasExtension):
- if obj.extension:
- et_extension = _generate_element(NS_AAS + "extensions")
- for extension in obj.extension:
- if isinstance(extension, model.Extension):
- et_extension.append(extension_to_xml(extension, tag=NS_AAS + "extension"))
- elm.append(et_extension)
+ _extend_with_has_extension_attrs(elm, obj)
if isinstance(obj, model.Referable):
- if obj.category:
- elm.append(_generate_element(name=NS_AAS + "category", text=obj.category))
- if obj.id_short and not isinstance(obj.parent, model.SubmodelElementList):
- elm.append(_generate_element(name=NS_AAS + "idShort", text=obj.id_short))
- if obj.display_name:
- elm.append(lang_string_set_to_xml(obj.display_name, tag=NS_AAS + "displayName"))
- if obj.description:
- elm.append(lang_string_set_to_xml(obj.description, tag=NS_AAS + "description"))
+ _extend_with_referable_attrs(elm, obj)
if isinstance(obj, model.Identifiable):
- if obj.administration:
- elm.append(administrative_information_to_xml(obj.administration))
- elm.append(_generate_element(name=NS_AAS + "id", text=obj.id))
+ _extend_with_identifiable_attrs(elm, obj)
if isinstance(obj, model.HasKind):
- if obj.kind is model.ModellingKind.TEMPLATE:
- elm.append(_generate_element(name=NS_AAS + "kind", text="Template"))
- else:
- # then modelling-kind is Instance
- elm.append(_generate_element(name=NS_AAS + "kind", text="Instance"))
+ _extend_with_has_kind_attrs(elm, obj)
if isinstance(obj, model.HasSemantics):
- if obj.semantic_id:
- elm.append(reference_to_xml(obj.semantic_id, tag=NS_AAS+"semanticId"))
- if obj.supplemental_semantic_id:
- et_supplemental_semantic_ids = _generate_element(NS_AAS + "supplementalSemanticIds")
- for supplemental_semantic_id in obj.supplemental_semantic_id:
- et_supplemental_semantic_ids.append(reference_to_xml(supplemental_semantic_id, NS_AAS+"reference"))
- elm.append(et_supplemental_semantic_ids)
+ _extend_with_has_semantics_attrs(elm, obj)
if isinstance(obj, model.Qualifiable):
- if obj.qualifier:
- et_qualifier = _generate_element(NS_AAS + "qualifiers")
- for qualifier in obj.qualifier:
- et_qualifier.append(qualifier_to_xml(qualifier, tag=NS_AAS+"qualifier"))
- elm.append(et_qualifier)
+ _extend_with_qualifiable_attrs(elm, obj)
if isinstance(obj, model.HasDataSpecification):
- if obj.embedded_data_specifications:
- et_embedded_data_specifications = _generate_element(NS_AAS + "embeddedDataSpecifications")
- for eds in obj.embedded_data_specifications:
- et_embedded_data_specifications.append(embedded_data_specification_to_xml(eds))
- elm.append(et_embedded_data_specifications)
+ _extend_with_has_data_specification_attrs(elm, obj)
return elm
+def _extend_with_has_extension_attrs(elm: etree.Element, obj: model.HasExtension):
+ if obj.extension:
+ et_extension = _generate_element(NS_AAS + "extensions")
+ for extension in obj.extension:
+ if isinstance(extension, model.Extension):
+ et_extension.append(extension_to_xml(extension, tag=NS_AAS + "extension"))
+ elm.append(et_extension)
+
+
+def _extend_with_referable_attrs(elm: etree.Element, obj: model.Referable):
+ if obj.category:
+ elm.append(_generate_element(name=NS_AAS + "category", text=obj.category))
+ if obj.id_short and not isinstance(obj.parent, model.SubmodelElementList):
+ elm.append(_generate_element(name=NS_AAS + "idShort", text=obj.id_short))
+ if obj.display_name:
+ elm.append(lang_string_set_to_xml(obj.display_name, tag=NS_AAS + "displayName"))
+ if obj.description:
+ elm.append(lang_string_set_to_xml(obj.description, tag=NS_AAS + "description"))
+
+
+def _extend_with_identifiable_attrs(elm: etree.Element, obj: model.Identifiable):
+ if obj.administration:
+ elm.append(administrative_information_to_xml(obj.administration))
+ elm.append(_generate_element(name=NS_AAS + "id", text=obj.id))
+
+
+def _extend_with_has_kind_attrs(elm: etree.Element, obj: model.HasKind):
+ if obj.kind is model.ModellingKind.TEMPLATE:
+ elm.append(_generate_element(name=NS_AAS + "kind", text="Template"))
+ else:
+ # then modelling-kind is Instance
+ elm.append(_generate_element(name=NS_AAS + "kind", text="Instance"))
+
+
+def _extend_with_has_semantics_attrs(elm: etree.Element, obj: model.HasSemantics):
+ if obj.semantic_id:
+ elm.append(reference_to_xml(obj.semantic_id, tag=NS_AAS + "semanticId"))
+ if obj.supplemental_semantic_id:
+ et_supplemental_semantic_ids = _generate_element(NS_AAS + "supplementalSemanticIds")
+ for supplemental_semantic_id in obj.supplemental_semantic_id:
+ et_supplemental_semantic_ids.append(reference_to_xml(supplemental_semantic_id, NS_AAS + "reference"))
+ elm.append(et_supplemental_semantic_ids)
+
+
+def _extend_with_qualifiable_attrs(elm: etree.Element, obj: model.Qualifiable):
+ if obj.qualifier:
+ et_qualifier = _generate_element(NS_AAS + "qualifiers")
+ for qualifier in obj.qualifier:
+ et_qualifier.append(qualifier_to_xml(qualifier, tag=NS_AAS + "qualifier"))
+ elm.append(et_qualifier)
+
+
+def _extend_with_has_data_specification_attrs(elm: etree.Element, obj: model.HasDataSpecification):
+ if obj.embedded_data_specifications:
+ et_embedded_data_specifications = _generate_element(NS_AAS + "embeddedDataSpecifications")
+ for eds in obj.embedded_data_specifications:
+ et_embedded_data_specifications.append(embedded_data_specification_to_xml(eds))
+ elm.append(et_embedded_data_specifications)
+
+
# ##############################################################
# transformation functions to serialize classes from model.base
# ##############################################################
@@ -277,9 +305,11 @@ def extension_to_xml(obj: model.Extension, tag: str = NS_AAS+"extension") -> etr
text=model.datatypes.XSD_TYPE_NAMES[obj.value_type]))
if obj.value:
et_extension.append(_value_to_xml(obj.value, obj.value_type)) # type: ignore # (value_type could be None)
- for refers_to in obj.refers_to:
- et_extension.append(reference_to_xml(refers_to, NS_AAS+"refersTo"))
-
+ if len(obj.refers_to) > 0:
+ refers_to = _generate_element(NS_AAS+"refersTo")
+ for reference in obj.refers_to:
+ refers_to.append(reference_to_xml(reference, NS_AAS+"reference"))
+ et_extension.append(refers_to)
return et_extension
@@ -677,11 +707,6 @@ def submodel_element_list_to_xml(obj: model.SubmodelElementList,
tag: str = NS_AAS+"submodelElementList") -> etree.Element:
et_submodel_element_list = abstract_classes_to_xml(tag, obj)
et_submodel_element_list.append(_generate_element(NS_AAS + "orderRelevant", boolean_to_xml(obj.order_relevant)))
- if len(obj.value) > 0:
- et_value = _generate_element(NS_AAS + "value")
- for se in obj.value:
- et_value.append(submodel_element_to_xml(se))
- et_submodel_element_list.append(et_value)
if obj.semantic_id_list_element is not None:
et_submodel_element_list.append(reference_to_xml(obj.semantic_id_list_element,
NS_AAS + "semanticIdListElement"))
@@ -690,6 +715,11 @@ def submodel_element_list_to_xml(obj: model.SubmodelElementList,
if obj.value_type_list_element is not None:
et_submodel_element_list.append(_generate_element(NS_AAS + "valueTypeListElement",
model.datatypes.XSD_TYPE_NAMES[obj.value_type_list_element]))
+ if len(obj.value) > 0:
+ et_value = _generate_element(NS_AAS + "value")
+ for se in obj.value:
+ et_value.append(submodel_element_to_xml(se))
+ et_submodel_element_list.append(et_value)
return et_submodel_element_list
diff --git a/basyx/aas/examples/data/example_aas.py b/basyx/aas/examples/data/example_aas.py
index 49d3847c4..925b4508f 100644
--- a/basyx/aas/examples/data/example_aas.py
+++ b/basyx/aas/examples/data/example_aas.py
@@ -101,9 +101,9 @@ def create_example_asset_identification_submodel() -> model.Submodel:
name='ExampleExtension',
value_type=model.datatypes.String,
value="ExampleExtensionValue",
- refers_to=(model.ModelReference((model.Key(type_=model.KeyTypes.ASSET_ADMINISTRATION_SHELL,
+ refers_to=[model.ModelReference((model.Key(type_=model.KeyTypes.ASSET_ADMINISTRATION_SHELL,
value='http://acplt.org/RefersTo/ExampleRefersTo'),),
- model.AssetAdministrationShell),))
+ model.AssetAdministrationShell)],)
# Property-Element conform to 'Verwaltungssschale in der Praxis' page 41 ManufacturerName:
# https://www.plattform-i40.de/PI40/Redaktion/DE/Downloads/Publikation/2019-verwaltungsschale-in-der-praxis.html
diff --git a/basyx/aas/model/base.py b/basyx/aas/model/base.py
index 439f45427..951adaafc 100644
--- a/basyx/aas/model/base.py
+++ b/basyx/aas/model/base.py
@@ -1458,7 +1458,7 @@ def __init__(self,
name: NameType,
value_type: Optional[DataTypeDefXsd] = None,
value: Optional[ValueDataType] = None,
- refers_to: Iterable[ModelReference] = (),
+ refers_to: Optional[List[ModelReference]] = None,
semantic_id: Optional[Reference] = None,
supplemental_semantic_id: Iterable[Reference] = ()):
super().__init__()
@@ -1468,7 +1468,10 @@ def __init__(self,
self.value_type: Optional[DataTypeDefXsd] = value_type
self._value: Optional[ValueDataType]
self.value = value
- self.refers_to: Iterable[ModelReference] = refers_to
+ if refers_to is None:
+ self.refers_to: List[ModelReference] = []
+ else:
+ self.refers_to = refers_to
self.semantic_id: Optional[Reference] = semantic_id
self.supplemental_semantic_id: ConstrainedList[Reference] = ConstrainedList(supplemental_semantic_id)
diff --git a/test/compliance_tool/files/test_demo_full_example.xml b/test/compliance_tool/files/test_demo_full_example.xml
index 953c2bc2a..39fae5599 100644
--- a/test/compliance_tool/files/test_demo_full_example.xml
+++ b/test/compliance_tool/files/test_demo_full_example.xml
@@ -347,13 +347,15 @@
xs:string
ExampleExtensionValue
- ModelReference
-
-
- AssetAdministrationShell
- http://acplt.org/RefersTo/ExampleRefersTo
-
-
+
+ ModelReference
+
+
+ AssetAdministrationShell
+ http://acplt.org/RefersTo/ExampleRefersTo
+
+
+
@@ -369,7 +371,6 @@
Bezeichnung für eine natürliche oder juristische Person, die für die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist
- Instance
ExternalReference
@@ -436,7 +437,6 @@
Bezeichnung für eine natürliche oder juristische Person, die für die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist
- Instance
ExternalReference
@@ -518,7 +518,6 @@
Bezeichnung für eine natürliche oder juristische Person, die für die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist
- Instance
ExternalReference
@@ -542,7 +541,6 @@
Beispiel Property Element
- Instance
ExternalReference
@@ -577,7 +575,6 @@
Beispiel Property Element
- Instance
ExternalReference
@@ -631,7 +628,6 @@
Bezeichnung für eine natürliche oder juristische Person, die für die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist
- Instance
ExternalReference
@@ -695,7 +691,6 @@
Beispiel RelationshipElement Element
- Instance
ModelReference
@@ -745,7 +740,6 @@
Beispiel AnnotatedRelationshipElement Element
- Instance
ExternalReference
@@ -785,14 +779,12 @@
PARAMETER
ExampleAnnotatedProperty
- Instance
xs:string
exampleValue
PARAMETER
ExampleAnnotatedRange
- Instance
xs:integer
1
5
@@ -812,7 +804,6 @@
Beispiel Operation Element
- Instance
ExternalReference
@@ -848,7 +839,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -899,7 +889,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -950,7 +939,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -989,7 +977,6 @@
Beispiel Capability Element
- Instance
ExternalReference
@@ -1013,7 +1000,6 @@
Beispiel BasicEventElement Element
- Instance
ExternalReference
@@ -1065,7 +1051,6 @@
Beispiel SubmodelElementCollection Element
- Instance
ExternalReference
@@ -1089,7 +1074,6 @@
Beispiel Blob Element
- Instance
ExternalReference
@@ -1115,7 +1099,6 @@
Beispiel File Element
- Instance
ExternalReference
@@ -1141,7 +1124,6 @@
Details of the Asset Administration Shell – Ein Beispiel für eine extern referenzierte Datei
- Instance
ExternalReference
@@ -1167,7 +1149,6 @@
Beispiel SubmodelElementList Element
- Instance
ExternalReference
@@ -1178,6 +1159,17 @@
true
+
+ ExternalReference
+
+
+ GlobalReference
+ http://acplt.org/Properties/ExampleProperty
+
+
+
+ Property
+ xs:string
CONSTANT
@@ -1201,7 +1193,6 @@
Beispiel Property Element
- Instance
ExternalReference
@@ -1361,7 +1352,6 @@
Beispiel Property Element
- Instance
ExternalReference
@@ -1395,17 +1385,6 @@
-
- ExternalReference
-
-
- GlobalReference
- http://acplt.org/Properties/ExampleProperty
-
-
-
- Property
- xs:string
CONSTANT
@@ -1420,7 +1399,6 @@
Beispiel MultiLanguageProperty Element
- Instance
ExternalReference
@@ -1472,7 +1450,6 @@
Beispiel Range Element
- Instance
ExternalReference
@@ -1499,7 +1476,6 @@
Beispiel Reference Element Element
- Instance
ExternalReference
@@ -1533,7 +1509,6 @@
ExampleRelationshipElement
- Instance
ModelReference
@@ -1563,7 +1538,6 @@
ExampleAnnotatedRelationshipElement
- Instance
ModelReference
@@ -1593,15 +1567,12 @@
ExampleOperation
- Instance
ExampleCapability
- Instance
ExampleBasicEventElement
- Instance
ModelReference
@@ -1620,50 +1591,42 @@
ExampleSubmodelList
+ SubmodelElementCollection
- Instance
ExampleBlob
- Instance
application/pdf
ExampleFile
- Instance
application/pdf
PARAMETER
ExampleMultiLanguageProperty
- Instance
PARAMETER
ExampleProperty
- Instance
xs:string
PARAMETER
ExampleRange
- Instance
xs:int
PARAMETER
ExampleReferenceElement
- Instance
- Instance
- SubmodelElementCollection
ExampleSubmodelList2
@@ -1716,7 +1679,6 @@
Beispiel RelationshipElement Element
- Instance
ExternalReference
@@ -1766,7 +1728,6 @@
Beispiel AnnotatedRelationshipElement Element
- Instance
ExternalReference
@@ -1806,7 +1767,6 @@
PARAMETER
ExampleAnnotatedRange
- Instance
xs:integer
1
5
@@ -1814,7 +1774,6 @@
PARAMETER
ExampleAnnotatedProperty
- Instance
xs:string
exampleValue
@@ -1833,7 +1792,6 @@
Beispiel Operation Element
- Instance
ExternalReference
@@ -1869,7 +1827,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -1920,7 +1877,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -1971,7 +1927,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -2010,7 +1965,6 @@
Beispiel Capability Element
- Instance
ExternalReference
@@ -2034,7 +1988,6 @@
Beispiel BasicEventElement Element
- Instance
ExternalReference
@@ -2086,7 +2039,6 @@
Beispiel SubmodelElementCollection Element
- Instance
ExternalReference
@@ -2110,7 +2062,6 @@
Beispiel Blob Element
- Instance
ExternalReference
@@ -2136,7 +2087,6 @@
Beispiel File Element
- Instance
ExternalReference
@@ -2162,7 +2112,6 @@
Beispiel MulitLanguageProperty Element
- Instance
ExternalReference
@@ -2196,7 +2145,6 @@
Beispiel Property Element
- Instance
ExternalReference
@@ -2228,7 +2176,6 @@
Beispiel Range Element
- Instance
ExternalReference
@@ -2255,7 +2202,6 @@
Beispiel Reference Element Element
- Instance
ExternalReference
@@ -2324,7 +2270,6 @@
Beispiel RelationshipElement Element
- Template
ExternalReference
@@ -2374,7 +2319,6 @@
Beispiel AnnotatedRelationshipElement Element
- Template
ExternalReference
@@ -2424,7 +2368,6 @@
Beispiel Operation Element
- Template
ExternalReference
@@ -2450,7 +2393,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -2481,7 +2423,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -2512,7 +2453,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -2541,7 +2481,6 @@
Beispiel Capability Element
- Template
ExternalReference
@@ -2565,7 +2504,6 @@
Beispiel BasicEventElement Element
- Template
ExternalReference
@@ -2617,7 +2555,6 @@
Beispiel SubmodelElementList Element
- Template
ExternalReference
@@ -2628,6 +2565,16 @@
true
+
+ ExternalReference
+
+
+ GlobalReference
+ http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection
+
+
+
+ SubmodelElementCollection
PARAMETER
@@ -2641,7 +2588,6 @@
Beispiel SubmodelElementCollection Element
- Template
ExternalReference
@@ -2665,7 +2611,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -2690,7 +2635,6 @@
Beispiel MulitLanguageProperty Element
- Template
ExternalReference
@@ -2714,7 +2658,6 @@
Beispiel Range Element
- Template
ExternalReference
@@ -2740,7 +2683,6 @@
Beispiel Range Element
- Template
ExternalReference
@@ -2766,7 +2708,6 @@
Beispiel Blob Element
- Template
ExternalReference
@@ -2792,7 +2733,6 @@
Beispiel File Element
- Template
ExternalReference
@@ -2817,7 +2757,6 @@
Beispiel Reference Element Element
- Template
ExternalReference
@@ -2842,7 +2781,6 @@
Beispiel SubmodelElementCollection Element
- Template
ExternalReference
@@ -2854,16 +2792,6 @@
-
- ExternalReference
-
-
- GlobalReference
- http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection
-
-
-
- SubmodelElementCollection
PARAMETER
@@ -2878,7 +2806,6 @@
Beispiel SubmodelElementList Element
- Template
ExternalReference
diff --git a/test/compliance_tool/files/test_demo_full_example_wrong_attribute.xml b/test/compliance_tool/files/test_demo_full_example_wrong_attribute.xml
index 0f9995991..061ee58b6 100644
--- a/test/compliance_tool/files/test_demo_full_example_wrong_attribute.xml
+++ b/test/compliance_tool/files/test_demo_full_example_wrong_attribute.xml
@@ -347,13 +347,15 @@
xs:string
ExampleExtensionValue
+
ModelReference
-
-
- AssetAdministrationShell
- http://acplt.org/RefersTo/ExampleRefersTo
-
-
+
+
+ AssetAdministrationShell
+ http://acplt.org/RefersTo/ExampleRefersTo
+
+
+
@@ -369,7 +371,6 @@
Bezeichnung für eine natürliche oder juristische Person, die für die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist
- Instance
ExternalReference
@@ -436,7 +437,6 @@
Bezeichnung für eine natürliche oder juristische Person, die für die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist
- Instance
ExternalReference
@@ -518,7 +518,6 @@
Bezeichnung für eine natürliche oder juristische Person, die für die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist
- Instance
ExternalReference
@@ -542,7 +541,6 @@
Beispiel Property Element
- Instance
ExternalReference
@@ -577,7 +575,6 @@
Beispiel Property Element
- Instance
ExternalReference
@@ -631,7 +628,6 @@
Bezeichnung für eine natürliche oder juristische Person, die für die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist
- Instance
ExternalReference
@@ -695,7 +691,6 @@
Beispiel RelationshipElement Element
- Instance
ModelReference
@@ -745,7 +740,6 @@
Beispiel AnnotatedRelationshipElement Element
- Instance
ExternalReference
@@ -785,14 +779,12 @@
PARAMETER
ExampleAnnotatedProperty
- Instance
xs:string
exampleValue
PARAMETER
ExampleAnnotatedRange
- Instance
xs:integer
1
5
@@ -812,7 +804,6 @@
Beispiel Operation Element
- Instance
ExternalReference
@@ -848,7 +839,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -899,7 +889,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -950,7 +939,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -989,7 +977,6 @@
Beispiel Capability Element
- Instance
ExternalReference
@@ -1013,7 +1000,6 @@
Beispiel BasicEventElement Element
- Instance
ExternalReference
@@ -1065,7 +1051,6 @@
Beispiel SubmodelElementCollection Element
- Instance
ExternalReference
@@ -1089,7 +1074,6 @@
Beispiel Blob Element
- Instance
ExternalReference
@@ -1115,7 +1099,6 @@
Beispiel File Element
- Instance
ExternalReference
@@ -1141,7 +1124,6 @@
Details of the Asset Administration Shell – Ein Beispiel für eine extern referenzierte Datei
- Instance
ExternalReference
@@ -1167,7 +1149,6 @@
Beispiel SubmodelElementList Element
- Instance
ExternalReference
@@ -1178,6 +1159,17 @@
true
+
+ ExternalReference
+
+
+ GlobalReference
+ http://acplt.org/Properties/ExampleProperty
+
+
+
+ Property
+ xs:string
CONSTANT
@@ -1201,7 +1193,6 @@
Beispiel Property Element
- Instance
ExternalReference
@@ -1361,7 +1352,6 @@
Beispiel Property Element
- Instance
ExternalReference
@@ -1395,17 +1385,6 @@
-
- ExternalReference
-
-
- GlobalReference
- http://acplt.org/Properties/ExampleProperty
-
-
-
- Property
- xs:string
CONSTANT
@@ -1420,7 +1399,6 @@
Beispiel MultiLanguageProperty Element
- Instance
ExternalReference
@@ -1472,7 +1450,6 @@
Beispiel Range Element
- Instance
ExternalReference
@@ -1499,7 +1476,6 @@
Beispiel Reference Element Element
- Instance
ExternalReference
@@ -1533,7 +1509,6 @@
ExampleRelationshipElement
- Instance
ModelReference
@@ -1563,7 +1538,6 @@
ExampleAnnotatedRelationshipElement
- Instance
ModelReference
@@ -1593,15 +1567,12 @@
ExampleOperation
- Instance
ExampleCapability
- Instance
ExampleBasicEventElement
- Instance
ModelReference
@@ -1620,50 +1591,42 @@
ExampleSubmodelList
+ SubmodelElementCollection
- Instance
ExampleBlob
- Instance
application/pdf
ExampleFile
- Instance
application/pdf
PARAMETER
ExampleMultiLanguageProperty
- Instance
PARAMETER
ExampleProperty
- Instance
xs:string
PARAMETER
ExampleRange
- Instance
xs:int
PARAMETER
ExampleReferenceElement
- Instance
- Instance
- SubmodelElementCollection
ExampleSubmodelList2
@@ -1716,7 +1679,6 @@
Beispiel RelationshipElement Element
- Instance
ExternalReference
@@ -1766,7 +1728,6 @@
Beispiel AnnotatedRelationshipElement Element
- Instance
ExternalReference
@@ -1806,7 +1767,6 @@
PARAMETER
ExampleAnnotatedRange
- Instance
xs:integer
1
5
@@ -1814,7 +1774,6 @@
PARAMETER
ExampleAnnotatedProperty
- Instance
xs:string
exampleValue
@@ -1833,7 +1792,6 @@
Beispiel Operation Element
- Instance
ExternalReference
@@ -1869,7 +1827,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -1920,7 +1877,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -1971,7 +1927,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -2010,7 +1965,6 @@
Beispiel Capability Element
- Instance
ExternalReference
@@ -2034,7 +1988,6 @@
Beispiel BasicEventElement Element
- Instance
ExternalReference
@@ -2086,7 +2039,6 @@
Beispiel SubmodelElementCollection Element
- Instance
ExternalReference
@@ -2110,7 +2062,6 @@
Beispiel Blob Element
- Instance
ExternalReference
@@ -2136,7 +2087,6 @@
Beispiel File Element
- Instance
ExternalReference
@@ -2162,7 +2112,6 @@
Beispiel MulitLanguageProperty Element
- Instance
ExternalReference
@@ -2196,7 +2145,6 @@
Beispiel Property Element
- Instance
ExternalReference
@@ -2228,7 +2176,6 @@
Beispiel Range Element
- Instance
ExternalReference
@@ -2255,7 +2202,6 @@
Beispiel Reference Element Element
- Instance
ExternalReference
@@ -2324,7 +2270,6 @@
Beispiel RelationshipElement Element
- Template
ExternalReference
@@ -2374,7 +2319,6 @@
Beispiel AnnotatedRelationshipElement Element
- Template
ExternalReference
@@ -2424,7 +2368,6 @@
Beispiel Operation Element
- Template
ExternalReference
@@ -2450,7 +2393,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -2481,7 +2423,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -2512,7 +2453,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -2541,7 +2481,6 @@
Beispiel Capability Element
- Template
ExternalReference
@@ -2565,7 +2504,6 @@
Beispiel BasicEventElement Element
- Template
ExternalReference
@@ -2617,7 +2555,6 @@
Beispiel SubmodelElementList Element
- Template
ExternalReference
@@ -2628,6 +2565,16 @@
true
+
+ ExternalReference
+
+
+ GlobalReference
+ http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection
+
+
+
+ SubmodelElementCollection
PARAMETER
@@ -2641,7 +2588,6 @@
Beispiel SubmodelElementCollection Element
- Template
ExternalReference
@@ -2665,7 +2611,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -2690,7 +2635,6 @@
Beispiel MulitLanguageProperty Element
- Template
ExternalReference
@@ -2714,7 +2658,6 @@
Beispiel Range Element
- Template
ExternalReference
@@ -2740,7 +2683,6 @@
Beispiel Range Element
- Template
ExternalReference
@@ -2766,7 +2708,6 @@
Beispiel Blob Element
- Template
ExternalReference
@@ -2792,7 +2733,6 @@
Beispiel File Element
- Template
ExternalReference
@@ -2817,7 +2757,6 @@
Beispiel Reference Element Element
- Template
ExternalReference
@@ -2842,7 +2781,6 @@
Beispiel SubmodelElementCollection Element
- Template
ExternalReference
@@ -2854,16 +2792,6 @@
-
- ExternalReference
-
-
- GlobalReference
- http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection
-
-
-
- SubmodelElementCollection
PARAMETER
@@ -2878,7 +2806,6 @@
Beispiel SubmodelElementList Element
- Template
ExternalReference
diff --git a/test/compliance_tool/files/test_demo_full_example_xml_aasx/aasx/data.xml b/test/compliance_tool/files/test_demo_full_example_xml_aasx/aasx/data.xml
index 2c864dfff..c0eb40769 100644
--- a/test/compliance_tool/files/test_demo_full_example_xml_aasx/aasx/data.xml
+++ b/test/compliance_tool/files/test_demo_full_example_xml_aasx/aasx/data.xml
@@ -355,13 +355,15 @@
xs:string
ExampleExtensionValue
- ModelReference
-
-
- AssetAdministrationShell
- http://acplt.org/RefersTo/ExampleRefersTo
-
-
+
+ ModelReference
+
+
+ AssetAdministrationShell
+ http://acplt.org/RefersTo/ExampleRefersTo
+
+
+
@@ -377,7 +379,6 @@
Bezeichnung für eine natürliche oder juristische Person, die für die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist
- Instance
ExternalReference
@@ -444,7 +445,6 @@
Bezeichnung für eine natürliche oder juristische Person, die für die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist
- Instance
ExternalReference
@@ -526,7 +526,6 @@
Bezeichnung für eine natürliche oder juristische Person, die für die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist
- Instance
ExternalReference
@@ -550,7 +549,6 @@
Beispiel Property Element
- Instance
ExternalReference
@@ -585,7 +583,6 @@
Beispiel Property Element
- Instance
ExternalReference
@@ -639,7 +636,6 @@
Bezeichnung für eine natürliche oder juristische Person, die für die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist
- Instance
ExternalReference
@@ -703,7 +699,6 @@
Beispiel RelationshipElement Element
- Instance
ModelReference
@@ -753,7 +748,6 @@
Beispiel AnnotatedRelationshipElement Element
- Instance
ExternalReference
@@ -793,14 +787,12 @@
PARAMETER
ExampleAnnotatedProperty
- Instance
xs:string
exampleValue
PARAMETER
ExampleAnnotatedRange
- Instance
xs:integer
1
5
@@ -820,7 +812,6 @@
Beispiel Operation Element
- Instance
ExternalReference
@@ -856,7 +847,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -907,7 +897,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -958,7 +947,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -997,7 +985,6 @@
Beispiel Capability Element
- Instance
ExternalReference
@@ -1021,7 +1008,6 @@
Beispiel BasicEventElement Element
- Instance
ExternalReference
@@ -1073,7 +1059,6 @@
Beispiel SubmodelElementCollection Element
- Instance
ExternalReference
@@ -1097,7 +1082,6 @@
Beispiel Blob Element
- Instance
ExternalReference
@@ -1123,7 +1107,6 @@
Beispiel File Element
- Instance
ExternalReference
@@ -1149,7 +1132,6 @@
Details of the Asset Administration Shell – Ein Beispiel für eine extern referenzierte Datei
- Instance
ExternalReference
@@ -1175,7 +1157,6 @@
Beispiel SubmodelElementList Element
- Instance
ExternalReference
@@ -1186,6 +1167,17 @@
true
+
+ ExternalReference
+
+
+ GlobalReference
+ http://acplt.org/Properties/ExampleProperty
+
+
+
+ Property
+ xs:string
CONSTANT
@@ -1209,7 +1201,6 @@
Beispiel Property Element
- Instance
ExternalReference
@@ -1369,7 +1360,6 @@
Beispiel Property Element
- Instance
ExternalReference
@@ -1403,17 +1393,6 @@
-
- ExternalReference
-
-
- GlobalReference
- http://acplt.org/Properties/ExampleProperty
-
-
-
- Property
- xs:string
CONSTANT
@@ -1428,7 +1407,6 @@
Beispiel MultiLanguageProperty Element
- Instance
ExternalReference
@@ -1480,7 +1458,6 @@
Beispiel Range Element
- Instance
ExternalReference
@@ -1507,7 +1484,6 @@
Beispiel Reference Element Element
- Instance
ExternalReference
@@ -1541,7 +1517,6 @@
ExampleRelationshipElement
- Instance
ModelReference
@@ -1571,7 +1546,6 @@
ExampleAnnotatedRelationshipElement
- Instance
ModelReference
@@ -1601,15 +1575,12 @@
ExampleOperation
- Instance
ExampleCapability
- Instance
ExampleBasicEventElement
- Instance
ModelReference
@@ -1628,50 +1599,42 @@
ExampleSubmodelList
+ SubmodelElementCollection
- Instance
ExampleBlob
- Instance
application/pdf
ExampleFile
- Instance
application/pdf
PARAMETER
ExampleMultiLanguageProperty
- Instance
PARAMETER
ExampleProperty
- Instance
xs:string
PARAMETER
ExampleRange
- Instance
xs:int
PARAMETER
ExampleReferenceElement
- Instance
- Instance
- SubmodelElementCollection
ExampleSubmodelList2
@@ -1724,7 +1687,6 @@
Beispiel RelationshipElement Element
- Instance
ExternalReference
@@ -1774,7 +1736,6 @@
Beispiel AnnotatedRelationshipElement Element
- Instance
ExternalReference
@@ -1814,7 +1775,6 @@
PARAMETER
ExampleAnnotatedRange
- Instance
xs:integer
1
5
@@ -1822,7 +1782,6 @@
PARAMETER
ExampleAnnotatedProperty
- Instance
xs:string
exampleValue
@@ -1841,7 +1800,6 @@
Beispiel Operation Element
- Instance
ExternalReference
@@ -1877,7 +1835,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -1928,7 +1885,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -1979,7 +1935,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -2018,7 +1973,6 @@
Beispiel Capability Element
- Instance
ExternalReference
@@ -2042,7 +1996,6 @@
Beispiel BasicEventElement Element
- Instance
ExternalReference
@@ -2094,7 +2047,6 @@
Beispiel SubmodelElementCollection Element
- Instance
ExternalReference
@@ -2118,7 +2070,6 @@
Beispiel Blob Element
- Instance
ExternalReference
@@ -2144,7 +2095,6 @@
Beispiel File Element
- Instance
ExternalReference
@@ -2170,7 +2120,6 @@
Beispiel MulitLanguageProperty Element
- Instance
ExternalReference
@@ -2204,7 +2153,6 @@
Beispiel Property Element
- Instance
ExternalReference
@@ -2236,7 +2184,6 @@
Beispiel Range Element
- Instance
ExternalReference
@@ -2263,7 +2210,6 @@
Beispiel Reference Element Element
- Instance
ExternalReference
@@ -2332,7 +2278,6 @@
Beispiel RelationshipElement Element
- Template
ExternalReference
@@ -2382,7 +2327,6 @@
Beispiel AnnotatedRelationshipElement Element
- Template
ExternalReference
@@ -2432,7 +2376,6 @@
Beispiel Operation Element
- Template
ExternalReference
@@ -2458,7 +2401,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -2489,7 +2431,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -2520,7 +2461,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -2549,7 +2489,6 @@
Beispiel Capability Element
- Template
ExternalReference
@@ -2573,7 +2512,6 @@
Beispiel BasicEventElement Element
- Template
ExternalReference
@@ -2625,7 +2563,6 @@
Beispiel SubmodelElementList Element
- Template
ExternalReference
@@ -2636,6 +2573,16 @@
true
+
+ ExternalReference
+
+
+ GlobalReference
+ http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection
+
+
+
+ SubmodelElementCollection
PARAMETER
@@ -2649,7 +2596,6 @@
Beispiel SubmodelElementCollection Element
- Template
ExternalReference
@@ -2673,7 +2619,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -2698,7 +2643,6 @@
Beispiel MulitLanguageProperty Element
- Template
ExternalReference
@@ -2722,7 +2666,6 @@
Beispiel Range Element
- Template
ExternalReference
@@ -2748,7 +2691,6 @@
Beispiel Range Element
- Template
ExternalReference
@@ -2774,7 +2716,6 @@
Beispiel Blob Element
- Template
ExternalReference
@@ -2800,7 +2741,6 @@
Beispiel File Element
- Template
ExternalReference
@@ -2825,7 +2765,6 @@
Beispiel Reference Element Element
- Template
ExternalReference
@@ -2850,7 +2789,6 @@
Beispiel SubmodelElementCollection Element
- Template
ExternalReference
@@ -2862,16 +2800,6 @@
-
- ExternalReference
-
-
- GlobalReference
- http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection
-
-
-
- SubmodelElementCollection
PARAMETER
@@ -2886,7 +2814,6 @@
Beispiel SubmodelElementList Element
- Template
ExternalReference
diff --git a/test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/aasx/data.xml b/test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/aasx/data.xml
index 30ebd5789..5e952db2f 100644
--- a/test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/aasx/data.xml
+++ b/test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/aasx/data.xml
@@ -355,13 +355,15 @@
xs:string
ExampleExtensionValue
+
ModelReference
-
-
- AssetAdministrationShell
- http://acplt.org/RefersTo/ExampleRefersTo
-
-
+
+
+ AssetAdministrationShell
+ http://acplt.org/RefersTo/ExampleRefersTo
+
+
+
@@ -377,7 +379,6 @@
Bezeichnung für eine natürliche oder juristische Person, die für die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist
- Instance
ExternalReference
@@ -444,7 +445,6 @@
Bezeichnung für eine natürliche oder juristische Person, die für die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist
- Instance
ExternalReference
@@ -526,7 +526,6 @@
Bezeichnung für eine natürliche oder juristische Person, die für die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist
- Instance
ExternalReference
@@ -550,7 +549,6 @@
Beispiel Property Element
- Instance
ExternalReference
@@ -585,7 +583,6 @@
Beispiel Property Element
- Instance
ExternalReference
@@ -639,7 +636,6 @@
Bezeichnung für eine natürliche oder juristische Person, die für die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist
- Instance
ExternalReference
@@ -703,7 +699,6 @@
Beispiel RelationshipElement Element
- Instance
ModelReference
@@ -753,7 +748,6 @@
Beispiel AnnotatedRelationshipElement Element
- Instance
ExternalReference
@@ -793,14 +787,12 @@
PARAMETER
ExampleAnnotatedProperty
- Instance
xs:string
exampleValue
PARAMETER
ExampleAnnotatedRange
- Instance
xs:integer
1
5
@@ -820,7 +812,6 @@
Beispiel Operation Element
- Instance
ExternalReference
@@ -856,7 +847,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -907,7 +897,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -958,7 +947,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -997,7 +985,6 @@
Beispiel Capability Element
- Instance
ExternalReference
@@ -1021,7 +1008,6 @@
Beispiel BasicEventElement Element
- Instance
ExternalReference
@@ -1073,7 +1059,6 @@
Beispiel SubmodelElementCollection Element
- Instance
ExternalReference
@@ -1097,7 +1082,6 @@
Beispiel Blob Element
- Instance
ExternalReference
@@ -1123,7 +1107,6 @@
Beispiel File Element
- Instance
ExternalReference
@@ -1149,7 +1132,6 @@
Details of the Asset Administration Shell – Ein Beispiel für eine extern referenzierte Datei
- Instance
ExternalReference
@@ -1175,7 +1157,6 @@
Beispiel SubmodelElementList Element
- Instance
ExternalReference
@@ -1186,6 +1167,17 @@
true
+
+ ExternalReference
+
+
+ GlobalReference
+ http://acplt.org/Properties/ExampleProperty
+
+
+
+ Property
+ xs:string
CONSTANT
@@ -1209,7 +1201,6 @@
Beispiel Property Element
- Instance
ExternalReference
@@ -1369,7 +1360,6 @@
Beispiel Property Element
- Instance
ExternalReference
@@ -1403,17 +1393,6 @@
-
- ExternalReference
-
-
- GlobalReference
- http://acplt.org/Properties/ExampleProperty
-
-
-
- Property
- xs:string
CONSTANT
@@ -1428,7 +1407,6 @@
Beispiel MultiLanguageProperty Element
- Instance
ExternalReference
@@ -1480,7 +1458,6 @@
Beispiel Range Element
- Instance
ExternalReference
@@ -1507,7 +1484,6 @@
Beispiel Reference Element Element
- Instance
ExternalReference
@@ -1541,7 +1517,6 @@
ExampleRelationshipElement
- Instance
ModelReference
@@ -1571,7 +1546,6 @@
ExampleAnnotatedRelationshipElement
- Instance
ModelReference
@@ -1601,15 +1575,12 @@
ExampleOperation
- Instance
ExampleCapability
- Instance
ExampleBasicEventElement
- Instance
ModelReference
@@ -1628,50 +1599,42 @@
ExampleSubmodelList
+ SubmodelElementCollection
- Instance
ExampleBlob
- Instance
application/pdf
ExampleFile
- Instance
application/pdf
PARAMETER
ExampleMultiLanguageProperty
- Instance
PARAMETER
ExampleProperty
- Instance
xs:string
PARAMETER
ExampleRange
- Instance
xs:int
PARAMETER
ExampleReferenceElement
- Instance
- Instance
- SubmodelElementCollection
ExampleSubmodelList2
@@ -1724,7 +1687,6 @@
Beispiel RelationshipElement Element
- Instance
ExternalReference
@@ -1774,7 +1736,6 @@
Beispiel AnnotatedRelationshipElement Element
- Instance
ExternalReference
@@ -1814,7 +1775,6 @@
PARAMETER
ExampleAnnotatedRange
- Instance
xs:integer
1
5
@@ -1822,7 +1782,6 @@
PARAMETER
ExampleAnnotatedProperty
- Instance
xs:string
exampleValue
@@ -1841,7 +1800,6 @@
Beispiel Operation Element
- Instance
ExternalReference
@@ -1877,7 +1835,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -1928,7 +1885,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -1979,7 +1935,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -2018,7 +1973,6 @@
Beispiel Capability Element
- Instance
ExternalReference
@@ -2042,7 +1996,6 @@
Beispiel BasicEventElement Element
- Instance
ExternalReference
@@ -2094,7 +2047,6 @@
Beispiel SubmodelElementCollection Element
- Instance
ExternalReference
@@ -2118,7 +2070,6 @@
Beispiel Blob Element
- Instance
ExternalReference
@@ -2144,7 +2095,6 @@
Beispiel File Element
- Instance
ExternalReference
@@ -2170,7 +2120,6 @@
Beispiel MulitLanguageProperty Element
- Instance
ExternalReference
@@ -2204,7 +2153,6 @@
Beispiel Property Element
- Instance
ExternalReference
@@ -2236,7 +2184,6 @@
Beispiel Range Element
- Instance
ExternalReference
@@ -2263,7 +2210,6 @@
Beispiel Reference Element Element
- Instance
ExternalReference
@@ -2332,7 +2278,6 @@
Beispiel RelationshipElement Element
- Template
ExternalReference
@@ -2382,7 +2327,6 @@
Beispiel AnnotatedRelationshipElement Element
- Template
ExternalReference
@@ -2432,7 +2376,6 @@
Beispiel Operation Element
- Template
ExternalReference
@@ -2458,7 +2401,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -2489,7 +2431,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -2520,7 +2461,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -2549,7 +2489,6 @@
Beispiel Capability Element
- Template
ExternalReference
@@ -2573,7 +2512,6 @@
Beispiel BasicEventElement Element
- Template
ExternalReference
@@ -2625,7 +2563,6 @@
Beispiel SubmodelElementList Element
- Template
ExternalReference
@@ -2636,6 +2573,16 @@
true
+
+ ExternalReference
+
+
+ GlobalReference
+ http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection
+
+
+
+ SubmodelElementCollection
PARAMETER
@@ -2649,7 +2596,6 @@
Beispiel SubmodelElementCollection Element
- Template
ExternalReference
@@ -2673,7 +2619,6 @@
Beispiel Property Element
- Template
ExternalReference
@@ -2698,7 +2643,6 @@
Beispiel MulitLanguageProperty Element
- Template
ExternalReference
@@ -2722,7 +2666,6 @@
Beispiel Range Element
- Template
ExternalReference
@@ -2748,7 +2691,6 @@
Beispiel Range Element
- Template
ExternalReference
@@ -2774,7 +2716,6 @@
Beispiel Blob Element
- Template
ExternalReference
@@ -2800,7 +2741,6 @@
Beispiel File Element
- Template
ExternalReference
@@ -2825,7 +2765,6 @@
Beispiel Reference Element Element
- Template
ExternalReference
@@ -2850,7 +2789,6 @@
Beispiel SubmodelElementCollection Element
- Template
ExternalReference
@@ -2862,16 +2800,6 @@
-
- ExternalReference
-
-
- GlobalReference
- http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection
-
-
-
- SubmodelElementCollection
PARAMETER
@@ -2886,7 +2814,6 @@
Beispiel SubmodelElementList Element
- Template
ExternalReference