Mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bharat K. Veeragandham" <bha...@iservicesusa.com>
Subject RE: How do I extract the Non-Native Attribute information from the compiled SchemaTypeSystem?
Date Thu, 18 Nov 2004 23:31:07 GMT
ok , looks like I have to implement the logic that is similar to SchemaTypeHierarchyPrinter
 to get the annotation attribution info for the top level objects.
 
But how do I get the annotation information for the elements declared within the complexType?
I don see any methods to get the SchemaLocalElement and SchemaLocalAttribute info.
 
For example the my:attrib2 defined for the elements /foo:foo-element/foo:f1 and /foo:foo-element/foo-f2
 
Thanks
Bharat

________________________________

From: Radu Preotiuc-Pietro [mailto:radup@bea.com]
Sent: Thu 11/18/2004 6:07 PM
To: dev@xmlbeans.apache.org
Subject: RE: How do I extract the Non-Native Attribute information from the compiled SchemaTypeSystem?


The difference is that you can have:
<xs:element name="foo-element" my:attrib="value1">
  <xs:complexType>
    ...
  </xs:complexType>
</xs:element>
 
or
 
<xs:element name="foo-element">
  <xs:complexType my:attrib="value1">
    ...
  </xs:complexType>
</xs:element>
 
Your code will work with the second case, in order to capture the first case, you need to
do
SchemaAnnotation ann = element.getAnnotation();
right after getting the element.

	-----Original Message-----
	From: Bharat K. Veeragandham [mailto:bharat@iservicesusa.com]
	Sent: Thursday, November 18, 2004 2:37 PM
	To: dev@xmlbeans.apache.org
	Subject: RE: How do I extract the Non-Native Attribute information from the compiled SchemaTypeSystem?
	
	
	Here is the code snippet that I was using to print the annotation attribute info using the
SchemaType.getAnnotation() 
	 
	public class FooSample {
	 
	 public static void main(String[] args) {
	  
	   QName qName = new QName("http://foo.org/2004","foo-element");
	  
	  SchemaTypeLoader loader = XmlBeans.getContextTypeLoader(); 
	  FooSample fooSample = new   FooSample();
	  
	   SchemaGlobalElement element = loader.findElement(qName);
	   type = element.getType();
	  fooSample.printTypeInfo(type);
	  fooSample.printAnnotationAttribs(type);
	  
	 }
	 
	 public  void printTypeInfo(SchemaType type)
	 {
	  if (type.isSimpleType()){
	   printAnnotationAttribs(type);
	  }
	  else
	  {
	   printAnnotationAttribs(type);
	   SchemaProperty[] props = type.getElementProperties();
	   for (int index=0; index<props.length; index++)
	   {
	    printTypeInfo(props[index].getType());
	   }
	  }
	 }
	 
	 public void printAnnotationAttribs(SchemaType type)
	 {
	  SchemaAnnotation annotation = type.getAnnotation();
	  if (annotation == null)
	  {
	   System.out.println("Annotation is null");
	   return;
	  }
	  SchemaAnnotation.Attribute[] myAttribs = annotation.getAttributes();
	  if ((myAttribs == null)||(myAttribs.length > 0))
	  {
	   System.out.println("Annotation Attributes are not available");
	   return;
	  }
	  for (int index=0; index<myAttribs.length;index++ )
	  {
	   String localPart =  myAttribs[index].getName().getLocalPart() ;
	   System.out.println("My Annotation Attribute Name = " +localPart+ "; Value = " + myAttribs[index].getValue());
	  }
	 }

________________________________

	From: Bharat K. Veeragandham [mailto:bharat@iservicesusa.com] 
	Sent: Thursday, November 18, 2004 5:27 PM
	To: dev@xmlbeans.apache.org
	Subject: RE: How do I extract the Non-Native Attribute information from the compiled SchemaTypeSystem?
	
	
	yes, that is exactly what I want to do. I need to know if a given SchemaComponent has any
special attribute or not. 
	I need this info not only for the global elements/types but also for the inner/local elements
and attributes.
	 
	I was not sure how to loop inside the SchemaGloablElement' to find the annotation information
for the local elements f1 and f2.
	 
	I was trying to get the type of the global element and use the getAnnotation() on the SchemaType
interface. But it is returning any annotation attributes.
	 
	What is the difference between getAnnotation() on the Global components vs. their schema
types?
	 
	thanks
	Bharat
	 
	 
	 
	
	 
________________________________

	From: Radu Preotiuc-Pietro [mailto:radup@bea.com] 
	Sent: Thursday, November 18, 2004 4:34 PM
	To: dev@xmlbeans.apache.org
	Subject: RE: How do I extract the Non-Native Attribute information from the compiled SchemaTypeSystem?
	
	
	Most of the Schema* objects also implement the SchemaAnnotated interface, giving you access
to the .getAnnotation() method.
	You can certainly loop over all top-level elements (using sts.globalElements()), top-level
types (using sts.globalTypes()) etc. and get the annotation for each one of them.
	If you are just interested in the annotations though, you can very well use an XmlCursor
and get all the namespace-qualified attributes in your Schema document. But I thought you
were interested in the relashionship between the SchemaComponent and the annotation on it,
like "oh, I have a global element named foo and I have one of my special attributes on it,
therefore I should do something special", rather than just list your attributes.
	 
	Radu

		-----Original Message-----
		From: Bharat K. Veeragandham [mailto:bharat@iservicesusa.com]
		Sent: Thursday, November 18, 2004 1:07 PM
		To: dev@xmlbeans.apache.org
		Subject: RE: How do I extract the Non-Native Attribute information from the compiled SchemaTypeSystem?
		
		
		thanks Radu. That helps, but at the same time I am not quite understood how to get the annotation
attributes for rest of the elements or schema components.
		 
		As almost all XSDL elements are allowed to have the annotation elements, is there an easy
way to loop through each XSDL element to find this info.
		 
		 
		 
		 
		 
________________________________

		From: Radu Preotiuc-Pietro [mailto:radup@bea.com] 
		Sent: Thursday, November 18, 2004 3:07 PM
		To: dev@xmlbeans.apache.org
		Subject: RE: How do I extract the Non-Native Attribute information from the compiled SchemaTypeSystem?
		
		
		By "non-native attributes" you mean XSD annotations.
		In order to get those, do:
		SchemaGlobalElement foo = sts.findElement(new QName("http://foo.org/2004 <http://foo.org/2004>
","foo-element"));
		SchemaAnnotation.Attribute[] atts = foo.getAnnotation().getAttributes();
		 
		Radu

			-----Original Message-----
			From: Bharat K. Veeragandham [mailto:bharat@iservicesusa.com]
			Sent: Thursday, November 18, 2004 9:00 AM
			To: xmlbeans-dev@xml.apache.org
			Subject: How do I extract the Non-Native Attribute information from the compiled SchemaTypeSystem?
			
			

			Hi, 

			Can some one help with the XSDL non-native attributes? 

			I would like to extend the  standard XSDL with my own non-native attributes as shown in
the following schema. 
			XmlBeans compiles the schema w/o any errors but I couldn't find a way to get the information
about the non-native attributes from the compiled type system.

			I am using the latest xmlbeans-V2 code. 

			<xs:schema 
			   xmlns:xs="http://www.w3.org/2001/XMLSchema" 
			   xmlns:foo="http://foo.org/2004" 
			   xmlns:my="http://foo.org/myExtension" 
			   targetNamespace="http://foo.org/2004" 
			   elementFormDefault="qualified"> 

			  <xs:element name="foo-element" my:attrib1="myValue1"> 
			    <xs:complexType> 
			      <xs:sequence> 
			        <xs:element name="f1" type="xs:string" my:attrib2="myValue2"/> 
			        <xs:element name="f2" type="xs:string" my:attrib2="myValue3"/> 
			        </xs:sequence> 
			    </xs:complexType> 
			  </xs:element> 
			</xs:schema> 


			Thanks for your help
			
			-Bharat 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@xmlbeans.apache.org
For additional commands, e-mail: dev-help@xmlbeans.apache.org


Mime
View raw message