diff --git a/sdk/basyx/aas/adapter/xml/xml_deserialization.py b/sdk/basyx/aas/adapter/xml/xml_deserialization.py index ce628f5b..52b21985 100644 --- a/sdk/basyx/aas/adapter/xml/xml_deserialization.py +++ b/sdk/basyx/aas/adapter/xml/xml_deserialization.py @@ -1154,7 +1154,7 @@ def construct_data_specification_iec61360(cls, element: etree._Element, if value_list is not None: ds_iec.value_list = value_list value = _get_text_or_none(element.find(NS_AAS + "value")) - if value is not None and value_format is not None: + if value is not None: ds_iec.value = value level_type = element.find(NS_AAS + "levelType") if level_type is not None: diff --git a/sdk/test/adapter/xml/test_xml_deserialization.py b/sdk/test/adapter/xml/test_xml_deserialization.py index 68cbfe2b..9dcddaca 100644 --- a/sdk/test/adapter/xml/test_xml_deserialization.py +++ b/sdk/test/adapter/xml/test_xml_deserialization.py @@ -428,6 +428,50 @@ def test_stripped_asset_administration_shell(self) -> None: self.assertEqual(len(aas.submodel), 0) +class XmlDeserializationDataSpecTest(unittest.TestCase): + def test_data_spec_iec61360_value_without_value_format(self) -> None: + xml = _xml_wrap(f""" + + + http://example.org/test_cd + + + + ExternalReference + + + GlobalReference + https://admin-shell.io/DataSpecificationTemplates/DataSpecificationIec61360/3/0 + + + + + + + + en + Test + + + test_value + + + + + + + """) + object_store = read_aas_xml_file(io.StringIO(xml), failsafe=False) + cd = object_store.get_item("http://example.org/test_cd") + self.assertIsInstance(cd, model.ConceptDescription) + assert isinstance(cd, model.ConceptDescription) + ds_content = list(cd.embedded_data_specifications)[0].data_specification_content + self.assertIsInstance(ds_content, model.DataSpecificationIEC61360) + assert isinstance(ds_content, model.DataSpecificationIEC61360) + self.assertEqual("test_value", ds_content.value) + self.assertIsNone(ds_content.value_format) + + class XmlDeserializationDerivingTest(unittest.TestCase): def test_submodel_constructor_overriding(self) -> None: class EnhancedSubmodel(model.Submodel):