Remove the global declarations for the elements, and use globally declared types for locally declared elements:
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="article">
<xs:complexType>
<xs:choice maxOccurs="unbounded" minOccurs="1">
<xs:element name="text" type="xs:string" maxOccurs="unbounded" minOccurs="0" />
<xs:element name="group" type="groupType" maxOccurs="unbounded" minOccurs="0" />
</xs:choice>
</xs:complexType>
</xs:element>
<xs:complexType name="groupType">
<xs:choice maxOccurs="unbounded" minOccurs="1">
<xs:element name="group" type="groupType" maxOccurs="unbounded" minOccurs="0" />
<xs:element name="text" type="xs:string" maxOccurs="unbounded" minOccurs="0" />
</xs:choice>
<xs:attribute type="xs:string" name="name" use="optional" />
</xs:complexType>
</xs:schema>
This way the only element declared globally is article.