Search in sources :

Example 26 with XmlNSDescriptor

use of com.intellij.xml.XmlNSDescriptor in project intellij-community by JetBrains.

the class XmlSchemaTest method testElementDescriptor6.

public void testElementDescriptor6() throws Exception {
    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\">" + "       <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:element>" + "   </xsd:sequence>" + "</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());
}
Also used : XmlNSDescriptor(com.intellij.xml.XmlNSDescriptor) XmlAttributeDescriptor(com.intellij.xml.XmlAttributeDescriptor) XmlElementDescriptor(com.intellij.xml.XmlElementDescriptor) XmlTag(com.intellij.psi.xml.XmlTag)

Example 27 with XmlNSDescriptor

use of com.intellij.xml.XmlNSDescriptor in project intellij-community by JetBrains.

the class XmlSchemaTest method testElementDescriptor12.

public void testElementDescriptor12() throws Exception {
    XmlNSDescriptor NSDescriptor = createDescriptor("<xsd:schema xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" + "<xsd:element name=\"purchaseOrder\" type=\"PurchaseOrderType\"/>" + "<xsd:complexType name=\"PurchaseOrderType\">" + "    <xsd:complexContent>" + "     <xsd:restriction base=\"PurchaseOrderType2\">" + "       <xsd:attribute name=\"orderDate2\" type=\"xsd:date\"/>" + "       <xsd:attribute name=\"name\" type=\"xsd:date\"/>" + "     </xsd:restriction>" + "    </xsd:complexContent>" + "</xsd:complexType>" + "<xsd:complexType name=\"PurchaseOrderType2\">" + "   <xsd:sequence>" + "     <xsd:attribute name=\"orderDate\" type=\"xsd:date\"/>" + "     <xsd:attribute name=\"name\" type=\"xsd:string\"/>" + "   </xsd:sequence>" + "</xsd:complexType>" + "</xsd:schema>");
    final XmlTag tag = XmlTestUtil.tag("purchaseOrder", getProject());
    XmlElementDescriptor elementDescriptor = NSDescriptor.getElementDescriptor(tag);
    XmlAttributeDescriptor[] attributes = elementDescriptor.getAttributesDescriptors(tag);
    assertEquals(3, attributes.length);
    assertEquals("orderDate", attributes[0].getName());
    assertEquals("orderDate2", attributes[1].getName());
    assertEquals("name", attributes[2].getName());
}
Also used : XmlNSDescriptor(com.intellij.xml.XmlNSDescriptor) XmlAttributeDescriptor(com.intellij.xml.XmlAttributeDescriptor) XmlElementDescriptor(com.intellij.xml.XmlElementDescriptor) XmlTag(com.intellij.psi.xml.XmlTag)

Example 28 with XmlNSDescriptor

use of com.intellij.xml.XmlNSDescriptor in project intellij-community by JetBrains.

the class XmlSchemaTest method testAny3.

public void testAny3() throws Exception {
    XmlNSDescriptor NSDescriptor = createDescriptor("<xsd:schema targetNamespace=\"http://foo\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" >" + "  <xsd:element name=\"root\">" + "    <xsd:complexType>" + "        <xsd:anyAttribute namespace=\"##other\" processContents=\"skip\"/>" + "    </xsd:complexType>" + "  </xsd:element>" + "</xsd:schema>");
    XmlFile xmlFile = (XmlFile) createFile("file.xml", "<root xmlns=\"http://foo\" y:a=\"1\">" + "</root>");
    final XmlTag rootTag = xmlFile.getDocument().getRootTag();
    XmlElementDescriptor rootDescriptor = NSDescriptor.getElementDescriptor(rootTag);
    assertNotNull(rootDescriptor);
    XmlAttribute attribute = rootTag.getAttribute("y:a", XmlUtil.EMPTY_URI);
    assertNotNull(attribute);
    XmlAttributeDescriptor aDescriptor = rootDescriptor.getAttributeDescriptor("y:a", rootTag);
    assertNotNull(aDescriptor);
}
Also used : XmlAttribute(com.intellij.psi.xml.XmlAttribute) XmlNSDescriptor(com.intellij.xml.XmlNSDescriptor) XmlFile(com.intellij.psi.xml.XmlFile) XmlAttributeDescriptor(com.intellij.xml.XmlAttributeDescriptor) XmlElementDescriptor(com.intellij.xml.XmlElementDescriptor) XmlTag(com.intellij.psi.xml.XmlTag)

Example 29 with XmlNSDescriptor

use of com.intellij.xml.XmlNSDescriptor in project intellij-community by JetBrains.

the class XmlSchemaTest method testElementDescriptor11.

public void testElementDescriptor11() throws Exception {
    XmlNSDescriptor NSDescriptor = createDescriptor("<xsd:schema xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" + "<xsd:element name=\"purchaseOrder\" type=\"PurchaseOrderType\"/>" + "<xsd:complexType name=\"PurchaseOrderType\">" + "    <xsd:complexContent>" + "     <xsd:restriction base=\"PurchaseOrderType2\">" + "       <xsd:element name=\"shipTo2\" type=\"USAddress\"/>" + "       <xsd:element name=\"items\" type=\"Items\"/>" + "     </xsd:restriction>" + "    </xsd:complexContent>" + "</xsd:complexType>" + "<xsd:complexType name=\"PurchaseOrderType2\">" + "   <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:schema>");
    XmlTag tag = XmlTestUtil.tag("purchaseOrder", getProject());
    XmlElementDescriptor elementDescriptor = NSDescriptor.getElementDescriptor(tag);
    XmlElementDescriptor[] elements = elementDescriptor.getElementsDescriptors(tag);
    assertEquals(4, elements.length);
    assertEquals("shipTo", elements[0].getName());
    assertEquals("billTo", elements[1].getName());
    assertEquals("shipTo2", elements[2].getName());
    assertEquals("items", elements[3].getName());
}
Also used : XmlNSDescriptor(com.intellij.xml.XmlNSDescriptor) XmlElementDescriptor(com.intellij.xml.XmlElementDescriptor) XmlTag(com.intellij.psi.xml.XmlTag)

Example 30 with XmlNSDescriptor

use of com.intellij.xml.XmlNSDescriptor in project intellij-community by JetBrains.

the class XmlSchemaTest method testElementDescriptor4.

public void testElementDescriptor4() throws Exception {
    XmlNSDescriptor NSDescriptor = createDescriptor("<xsd:schema xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" + "<xsd:element name=\"purchaseOrder\" type=\"PurchaseOrderType\"/>" + "<xsd:complexType name=\"PurchaseOrderType\">" + "   <xsd:attribute name=\"orderDate\" type=\"xsd:date\"/>" + "   <xsd:attribute name=\"name\" type=\"xsd:string\"/>" + "</xsd:complexType>" + "</xsd:schema>");
    final XmlTag tag = XmlTestUtil.tag("purchaseOrder", getProject());
    XmlElementDescriptor elementDescriptor = NSDescriptor.getElementDescriptor(tag);
    XmlAttributeDescriptor[] attributes = elementDescriptor.getAttributesDescriptors(tag);
    assertEquals(2, attributes.length);
    assertEquals("orderDate", attributes[0].getName());
    assertEquals("name", attributes[1].getName());
    assertEquals("name", elementDescriptor.getAttributeDescriptor("name", tag).getName());
    assertNull(elementDescriptor.getAttributeDescriptor("xxx", tag));
}
Also used : XmlNSDescriptor(com.intellij.xml.XmlNSDescriptor) XmlAttributeDescriptor(com.intellij.xml.XmlAttributeDescriptor) XmlElementDescriptor(com.intellij.xml.XmlElementDescriptor) XmlTag(com.intellij.psi.xml.XmlTag)

Aggregations

XmlNSDescriptor (com.intellij.xml.XmlNSDescriptor)87 XmlElementDescriptor (com.intellij.xml.XmlElementDescriptor)60 XmlTag (com.intellij.psi.xml.XmlTag)52 XmlAttributeDescriptor (com.intellij.xml.XmlAttributeDescriptor)32 XmlFile (com.intellij.psi.xml.XmlFile)21 Nullable (org.jetbrains.annotations.Nullable)11 XmlDocument (com.intellij.psi.xml.XmlDocument)10 PsiElement (com.intellij.psi.PsiElement)5 XmlAttribute (com.intellij.psi.xml.XmlAttribute)5 AnyXmlElementDescriptor (com.intellij.xml.impl.schema.AnyXmlElementDescriptor)5 XmlNSDescriptorImpl (com.intellij.xml.impl.schema.XmlNSDescriptorImpl)5 CachedValue (com.intellij.psi.util.CachedValue)3 NotNull (org.jetbrains.annotations.NotNull)3 FlexMxmlNSDescriptor (com.intellij.javascript.flex.mxml.schema.FlexMxmlNSDescriptor)2 VirtualFile (com.intellij.openapi.vfs.VirtualFile)2 PsiFile (com.intellij.psi.PsiFile)2 HtmlTag (com.intellij.psi.html.HtmlTag)2 PsiMetaData (com.intellij.psi.meta.PsiMetaData)2 PsiElementProcessor (com.intellij.psi.search.PsiElementProcessor)2 XmlElementDescriptorImpl (com.intellij.xml.impl.schema.XmlElementDescriptorImpl)2