This is not a bug. The annotation is on a particle [1][2] not an element declaration so you're looking for it in the wrong place. You need to dig into the enclosing complex type definition to find it.
[1] http://www.w3.org/TR/xmlschema-1/#cParticles [2] http://xerces.apache.org/xerces2-j/javadocs/xs/org/apache/xerces/xs/XSParticle.html Michael Glavassevich XML Parser Development IBM Toronto Lab E-mail: [EMAIL PROTECTED] E-mail: [EMAIL PROTECTED] Ivan Todoroski <[EMAIL PROTECTED]> wrote on 01/23/2007 09:12:03 PM: > In the example below, the annotation will not be returned by the > getAnnotation() > or getAnnotations() methods of XSElementDeclaration: > > <xs:element ref="child"> > <xs:annotation> > <xs:documentation>annotation of reference</xs:documentation> > </xs:annotation> > </xs:element> > > I couldn't find any way to retrieve this particular annotation via PSVI. > > Attached is a minimal test case (Java, XML, and XSD file) that > demonstrates this > problem. The getAnnotations() method only returns the annotation > from the target > of the reference (i.e. the global declaration of the <child> > element), but the > annotation from the reference itself is completely ignored. > import java.io.FileInputStream; > import javax.xml.parsers.SAXParserFactory; > > import org.apache.xerces.xs.*; > import org.xml.sax.*; > import org.xml.sax.helpers.DefaultHandler; > > public class TestPSVI > { > public static void main(String args[]) throws Exception { > XMLReader parser = SAXParserFactory.newInstance(). > newSAXParser().getXMLReader(); > parser.setFeature("http://xml.org/sax/features/namespaces", true); > parser.setFeature("http://xml.org/sax/features/validation", true); > parser.setFeature("http://apache.org/xml/features/validation/schema > ", true); > parser.setProperty("http://apache. > org/xml/properties/schema/external-noNamespaceSchemaLocation", "ref-ann.xsd"); > > parser.setContentHandler(new PSVIPrinter((PSVIProvider)parser)); > > parser.parse(new InputSource(new FileInputStream("ref-ann.xml"))); > } > > public static class PSVIPrinter extends DefaultHandler { > private PSVIProvider psvi; > > public PSVIPrinter(PSVIProvider psvi) { > this.psvi = psvi; > } > > public void startElement(String uri, String localName, String > qName, Attributes atts) throws SAXException { > XSObjectList annots = psvi.getElementPSVI(). > getElementDeclaration().getAnnotations(); > System.out.println(qName + " (" + annots.getLength() + " > annotations):"); > for (int i = 0; i < annots.getLength(); i++) > System.out.println(((XSAnnotation)annots.item(i)). > getAnnotationString()); > System.out.println(""); > } > } > } > <?xml version="1.0" encoding="UTF-8"?> > <top> > <child/> > </top> > <?xml version="1.0" encoding="UTF-8"?> > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> > <xs:element name="top"> > <xs:annotation> > <xs:documentation>annotation for top</xs:documentation> > </xs:annotation> > <xs:complexType> > <xs:sequence maxOccurs="unbounded"> > <xs:element ref="child"> > <xs:annotation> > <xs:documentation>annotation for child > reference</xs:documentation> > </xs:annotation> > </xs:element> > </xs:sequence> > </xs:complexType> > </xs:element> > <xs:element name="child"> > <xs:annotation> > <xs:documentation>annotation for child target</xs:documentation> > </xs:annotation> > </xs:element> > </xs:schema> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
