For local attributes, value constraints are on the attribute uses, not the
declarations. So to get them, you need
attrUse.getConstraintType() and attrUse.getConstraintValue()
Cheers,
Sandy Gao
Software Developer, IBM Canada
(1-905) 413-3255
[EMAIL PROTECTED]
"Sander Bos"
<[EMAIL PROTECTED] To: <[EMAIL PROTECTED]>
m> cc:
Subject:
XSAttributeDeclaration.getConstraintType and
02/26/2003 01:16
XSAttributeDeclaration.getConstraintValue
PM
Please respond to
xerces-j-user
Hi there,
I am wondering whether I am doing something wrong in getting attribute
declaration information. I am using Xerces 2.3.0.
If I have a schema like:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="testElem">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="attr1" type="xs:string"/>
<xs:attribute name="attr2" type="xs:string" use="required"/>
<xs:attribute name="attr3" type="xs:string" default="default"/>
<xs:attribute name="attr4" type="xs:string" fixed="fixed"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:schema>
and an instance like:
<?xml version="1.0"?>
<testElem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="test.xsd"
attr2="someValue"/>
And I parse it with validation, and then print the information of the
attribute declarations of the element PSVI like so:
private void printInfo(ElementPSVI psvi) {
XSComplexTypeDefinition complexType = (XSComplexTypeDefinition)
psvi.getElementDeclaration().getTypeDefinition();
XSObjectList attrUses = complexType.getAttributeUses();
for (int m = 0; m < attrUses.getLength(); m++){
XSAttributeUse attrUse = (XSAttributeUse)attrUses.item(m);
XSAttributeDeclaration attrDecl = attrUse.getAttrDeclaration();
if (attrDecl != null) {
System.out.println("attrDecl.getName() = "
+ attrDecl.getName());
System.out.println("attrDecl.getConstraintType() = "
+ attrDecl.getConstraintType());
System.out.println("attrDecl.getConstraintValue() = "
+ attrDecl.getConstraintValue());
}
}
}
I get as output:
attrDecl.getName() = attr1
attrDecl.getConstraintType() = 0
attrDecl.getConstraintValue() = null
attrDecl.getName() = attr2
attrDecl.getConstraintType() = 0
attrDecl.getConstraintValue() = null
attrDecl.getName() = attr3
attrDecl.getConstraintType() = 0
attrDecl.getConstraintValue() = null
attrDecl.getName() = attr4
attrDecl.getConstraintType() = 0
attrDecl.getConstraintValue() = null
I must sort of do it right, because I get the right attributes, but I
thought I would get different values for the constraint type, and a
constraint value for attributes 3 and 4? Does anybody know if and what I
am doing wrong?
Kind regards,
--Sander.
---------------------------------------------------------------------
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]