Hi Scott, You want to call getName() on the XSAttributeDeclaration. You're currently printing out the name (i.e. xs:token) of its [type definition].
Thanks. Michael Glavassevich XML Parser Development IBM Toronto Lab E-mail: [EMAIL PROTECTED] E-mail: [EMAIL PROTECTED] Scott Hinkelman <[EMAIL PROTECTED]> wrote on 03/01/2007 03:29:23 PM: > Hi, > I am learning and trying to process, or print out for my > understanding, the following simple schema contain 1 complex type > with 1 attribute. My problem is I have yet to be able to print out > the name, "languageLocaleID", of the attribute. > > <?xml version="1.0" encoding="UTF-8"?> > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:cct=" > urn:un:unece:uncefact:documentation:standard:CoreComponentType:2" xmlns:ccts=" > urn:un:unece:uncefact:documentation:standard: > CoreComponentsTechnicalSpecification:2" targetNamespace="urn:un: > unece:uncefact:documentation:standard:CoreComponentType:2" elementFormDefault > ="qualified" attributeFormDefault="unqualified" version="2.0"> > <xsd:complexType name="TextType"> > <xsd:simpleContent> > <xsd:extension base="xsd:string"> > <xsd:attribute name="languageLocaleID" type="xsd:token" use="optional"/> > </xsd:extension> > </xsd:simpleContent> > </xsd:complexType> > </xsd:schema> > > Here is the fundamental code I am using, starting with a method > which takes the complex type, Sorry for the length, but my question > is where should I call getName() to obtain " "languageLocaleID" ? > I obtain the Attr Uses from the complex type, get the Attr Decl from > the Attr Use, and then the SimpleType from the Attr Decl - but > nowhere an I getting the name. I am using xerces 2_9_0. > > private void processCTD(XSComplexTypeDefinition ctd) { > System.out.println("\nprocessing complex type <"+ctd.getName()+">"); > > //get the Attribute Uses fro the complex type > XSObjectList xsol=ctd.getAttributeUses(); > System.out.println("Number of Attribute Uses...."+xsol.getLength()); > for(int j=0;j<xsol.getLength();j++){ > XSAttributeUse attruse = (XSAttributeUse)xsol.item(j); > System.out.println("attr use ns: "+attruse.getNamespace()); > System.out.println("attr use name: "+attruse.getName()); > System.out.println("attr use nsItem: "+attruse.getNamespaceItem()); > System.out.println("attr use type: "+ attruse.getType()); > System.out.println("attr use required: "+attruse.getRequired()); > System.out.println("attr use constraint value: "+attruse. > getConstraintValue());//null? > short consttype=attruse.getConstraintType();//Value Constraint: one > of default, fixed. > try{ > Object actualvc=attruse.getActualVC();//Value Constraint: Binding > specific actual constraint value or null if the value is in error or > there is no value constraint. > if(actualvc!=null){ > System.out.println("attr use actual value constrint: "+actualvc.toString()); > } > }catch(XSException e){ > e.printStackTrace(); > } > try{ > short actualvalctype=attruse.getActualVCType();//The actual > constraint value built-in datatype, e.g. STRING_DT, SHORT_DT. If the > type definition of this value is a list type definition, this method > returns LIST_DT. If the type definition of this value is a list type > definition whose item type is a union type definition, this method > returns LISTOFUNION_DT. To query the actual constraint value of the > list or list of union type definitions use itemValueTypes. If the > actualNormalizedValue is null, this method returns UNAVAILABLE_DT . > }catch(XSException e){ > e.printStackTrace(); > } > try{ > ShortList sl=attruse.getItemValueTypes();//In the case the actual > constraint value represents a list, i.e. the actualValueType is > LIST_DT, the returned array consists of one type kind which > represents the itemType. If the actual constraint value represents a > list type definition whose item type is a union type definition, i. > e. LISTOFUNION_DT, for each actual constraint value in the list the > array contains the corresponding memberType kind. For examples, see > ItemPSVI.itemValueTypes. > if(sl!=null){ > for(j=0;j<sl.getLength();j++){ > short sh=sl.item(j); > System.out.println("attr use short: "+sh); > } > } > }catch(XSException e){ > e.printStackTrace(); > } > > //get the declaration for the attribute use > XSAttributeDeclaration attrdecl=attruse.getAttrDeclaration(); > //[attribute declaration]: provides the attribute declaration > itself, which will in turn determine the simple type definition used. > short contype=attrdecl.getConstraintType();//Value constraint: one > of VC_NONE, VC_DEFAULT, VC_FIXED. > String sconvalue=attrdecl.getConstraintValue();//Value constraint: > The constraint value with respect to the [type definition], otherwise null. > System.out.println("attr decl value: "+sconvalue);//null ? > try{ > Object obj=attrdecl.getActualVC();//Value Constraint: Binding > specific actual constraint value or null if the value is in error or > there is no value constraint. > }catch(XSException e){ > //XSException - NOT_SUPPORTED_ERR: Raised if the implementation does > not support this method. > e.printStackTrace(); > } > try{ > short avalvct=attrdecl.getActualVCType();//The actual constraint > value built-in datatype, e.g. STRING_DT, SHORT_DT. If the type > definition of this value is a list type definition, this method > returns LIST_DT. If the type definition of this value is a list type > definition whose item type is a union type definition, this method > returns LISTOFUNION_DT. To query the actual constraint value of the > list or list of union type definitions use itemValueTypes. If the > actualValue is null, this method returns UNAVAILABLE_DT. > }catch(XSException e){ > //XSException - NOT_SUPPORTED_ERR: Raised if the implementation does > not support this method. > e.printStackTrace(); > } > try{ > ShortList sl2=attrdecl.getItemValueTypes();//In the case the actual > constraint value represents a list, i.e. the actualValueType is > LIST_DT, the returned array consists of one type kind which > represents the itemType. If the actual constraint value represents a > list type definition whose item type is a union type definition, i. > e. LISTOFUNION_DT, for each actual constraint value in the list the > array contains the corresponding memberType kind. For examples, see > ItemPSVI.itemValueTypes. > }catch(XSException e){ > //XSException - NOT_SUPPORTED_ERR: Raised if the implementation does > not support this method. > e.printStackTrace(); > } > > XSSimpleTypeDefinition std= attrdecl.getTypeDefinition();//[type > definition]: A simple type definition. > System.out.println("attr decl ns: "+std.getNamespace()); > System.out.println("attr decl name: "+std.getName()); > System.out.println("attr decl nsItem: "+std.getNamespaceItem()); > System.out.println("attr decl type: "+std.getType()); > > StringList slist=std.getLexicalEnumeration(); > System.out.println("attr decl simple type lexical enum stringlist > length "+slist.getLength()); > for(int k=0;k<slist.getLength();k++){ > String str=slist.item(k); > System.out.println("a string list item: "+str); > } > > slist=std.getLexicalPattern(); > System.out.println("attr decl simple type lexical patterns > stringlist length "+slist.getLength()); > for(int k=0;k<slist.getLength();k++){ > String str=slist.item(k); > System.out.println("a string list item: "+str); > } > } > } > > > My output from this function is: > > processing complex type <TextType> > Number of Attribute Uses....1 > attr use ns: null > attr use name: null > attr use nsItem: null > attr use type: 4 > attr use required: false > attr use constraint value: null > attr decl value: null > attr decl ns: http://www.w3.org/2001/XMLSchema > attr decl name: token > attr decl nsItem: null > attr decl type: 3 > attr decl simple type lexical enum stringlist length 0 > attr decl simple type lexical patterns stringlist length 0 > > Any help on the correct way to obtain or process the attribute is > appreciated. Thank you. > > Scott R. Hinkelman --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]