diff --git a/clover.xml b/clover.xml index 8c731102..05f71659 100644 --- a/clover.xml +++ b/clover.xml @@ -1,6 +1,6 @@ - - + + @@ -8,17 +8,17 @@ - - - - - - - - - - - + + + + + + + + + + + @@ -37,15 +37,15 @@ - - - + + + - - - - + + + + @@ -58,8 +58,8 @@ - - + + @@ -70,8 +70,8 @@ - - + + @@ -87,8 +87,8 @@ - - + + @@ -106,9 +106,9 @@ - - - + + + @@ -134,22 +134,22 @@ - - - - + + + + - - - - - - - - + + + + + + + + @@ -183,10 +183,10 @@ - - - - + + + + @@ -210,13 +210,13 @@ - - - + + + - - + + @@ -234,17 +234,17 @@ - - - - - - - - - - - + + + + + + + + + + + @@ -277,14 +277,14 @@ - - - - - - - - + + + + + + + + @@ -309,11 +309,11 @@ - - - - - + + + + + @@ -326,8 +326,8 @@ - - + + @@ -341,158 +341,158 @@ - - - + + + - - + + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + - - + + - - - - - - - - + + + + + + + + - - + + - - - - - - - - - - - + + + + + + + + + + + - + - - - - - - - + + + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - + @@ -502,12 +502,12 @@ - - + + - - + + @@ -522,9 +522,9 @@ - - - + + + @@ -537,46 +537,46 @@ - - + + - - + + - - - - - + + + + + - - + + - - - - + + + + - - + + - + @@ -585,32 +585,32 @@ - - - - + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + @@ -618,250 +618,250 @@ - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - - - + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + @@ -878,523 +878,525 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + + - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + @@ -1440,6 +1442,6 @@ - + diff --git a/src/SchemaReader.php b/src/SchemaReader.php index df0fd4bc..9cf259ae 100644 --- a/src/SchemaReader.php +++ b/src/SchemaReader.php @@ -946,6 +946,11 @@ function (\DOMElement $node, \DOMElement $childNode) use ($type, $restriction): if ($type instanceof BaseComplexType) { $this->loadChildAttributesAndAttributeGroups($type, $node, $childNode); } + + if ($type instanceof ElementContainer) { + $this->loadSequenceChildNode($type, $node, $childNode, null, null); + } + if (null !== ($restrictionType = RestrictionType::tryFrom($childNode->localName))) { $restriction->addCheck( $restrictionType, diff --git a/tests/RestrictionsTest.php b/tests/RestrictionsTest.php index b0d6b569..32e817a8 100644 --- a/tests/RestrictionsTest.php +++ b/tests/RestrictionsTest.php @@ -578,4 +578,42 @@ public function testAttributeInExtensionInRestriction(): void self::assertEquals('string', $attribute->getType()->getName()); self::assertEquals(AttributeSingle::USE_OPTIONAL, $attribute->getUse()); } + + public function testElementOverrideInRestriction(): void + { + $schema = $this->reader->readString( + ' + + + + + + + + + + + + + + + + + + + + + ' + ); + + $rootType = $schema->getTypes()['testType']; + self::assertInstanceOf(ComplexType::class, $rootType); + + $element = $rootType->getElements()[0]; + self::assertEquals('x_item', $element->getName()); + + $baseType = $rootType->getRestriction()->getBase(); + self::assertInstanceOf(ComplexType::class, $baseType); + self::assertEquals('Array', $baseType->getName()); + } }