void () { XmlNSDescriptor NSDescriptor = createDescriptor( "<xsd:schema xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" + "<xsd:element name=\"purchaseOrder\" type=\"PurchaseOrderType\"/>" + "<xsd:complexType name=\"PurchaseOrderType\">" + " <xsd:sequence>" + " <xsd:element name=\"shipTo\" type=\"USAddress\"/>" + " <xsd:element name=\"billTo\" type=\"USAddress\"/>" + " <xsd:element name=\"items\" type=\"Items\"/>" + " </xsd:sequence>" + "</xsd:complexType>" + "<xsd:complexType name=\"USAddress\">" + " <xsd:sequence>" + " <xsd:element name=\"name\" type=\"xsd:string\"/>" + " <xsd:element name=\"street\" type=\"xsd:string\"/>" + " <xsd:element name=\"city\" type=\"xsd:string\"/>" + " <xsd:element name=\"state\" type=\"xsd:string\"/>" + " <xsd:element name=\"zip\" type=\"xsd:decimal\"/>" + " </xsd:sequence>" + " <xsd:attribute name=\"country\" type=\"xsd:NMTOKEN\" fixed=\"US\"/>" + "</xsd:complexType>" + "</xsd:schema>"); XmlTag tag = XmlTestUtil.tag("purchaseOrder", getProject()); XmlElementDescriptor elementDescriptor = NSDescriptor.getElementDescriptor(tag).getElementDescriptor(SHIP_TO, null); XmlElementDescriptor[] elements = elementDescriptor.getElementsDescriptors(tag); assertEquals(5, elements.length); assertEquals("name", elements[0].getName()); assertEquals("street", elements[1].getName()); assertEquals("city", elements[2].getName()); assertEquals("state", elements[3].getName()); assertEquals("zip", elements[4].getName()); final XmlTag context = tag.findFirstSubTag(elements[2].getName()); assertEquals(0, elements[2].getElementsDescriptors(context).length); XmlAttributeDescriptor[] attributes = elementDescriptor.getAttributesDescriptors(context); assertEquals(1, attributes.length); assertEquals("country", attributes[0].getName()); }