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

Reply via email to