diff --git a/src/zeep/xsd/elements/indicators.py b/src/zeep/xsd/elements/indicators.py
index 40325dad2..74d88933e 100644
--- a/src/zeep/xsd/elements/indicators.py
+++ b/src/zeep/xsd/elements/indicators.py
@@ -615,7 +615,7 @@ def parse_xmlelements(self, xmlelements, schema, name=None, context=None):
for elm_name, element in self.elements:
try:
item_subresult = element.parse_xmlelements(
- xmlelements, schema, name, context=context
+ xmlelements, schema, elm_name, context=context
)
except UnexpectedElementError:
if schema.settings.strict:
diff --git a/tests/test_xsd_indicators_choice.py b/tests/test_xsd_indicators_choice.py
index 039d6c90d..d08870f21 100644
--- a/tests/test_xsd_indicators_choice.py
+++ b/tests/test_xsd_indicators_choice.py
@@ -1474,6 +1474,61 @@ def test_nested_choice():
assert result.b == "1"
+def test_multiple_repeated_choice_in_sequence():
+ schema = xsd.Schema(
+ load_xml(
+ """
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ """
+ )
+ )
+
+ schema.set_ns_prefix("tns", "http://tests.python-zeep.org/")
+ container_type = schema.get_element("tns:container")
+
+ item = container_type(_value_1=[{"a": "item-1"}], _value_2=[{"c": "item-2"}])
+ assert item._value_1[0] == {"a": "item-1"}
+ assert item._value_2[0] == {"c": "item-2"}
+
+ expected = load_xml(
+ """
+
+
+ item-1
+ item-2
+
+
+ """
+ )
+ node = render_node(container_type, item)
+ assert_nodes_equal(node, expected)
+
+ result = container_type.parse(expected[0], schema)
+ assert result._value_1[0] == {"a": "item-1"}
+ assert result._value_2[0] == {"c": "item-2"}
+
+
def test_unit_choice_parse_xmlelements_max_1():
schema = xsd.Schema(
load_xml(