Vous pouvez déterminer facilement si des valeurs sont définies au sein d'un objet de données en vérifiant leurs propriétés pour voir si des propriétés ouvertes sont des attributs.
L'objet de données ne possède pas de mécanisme permettant de déterminer si un type d'objet de données comporte des balises. Les objets de données possèdent uniquement le concept "ouvert" qui s'applique à la balise any et à la balise anyAttribute, et qui permet d'ajouter librement des propriétés. Alors que la présence d'une balise implique qu'un objet de données a la valeur isOpen() = vrai et isSequenced() = vrai, il peut comporter uniquement une balise anyAttribute et une des raisons pour lesquelles il est mis en séquence décrite dans la rubrique Séquences. L'exemple suivant explique ces concepts :
DataObject dobj = ... // Vérifiez si le type est "ouvert" ; dans le cas contraire, aucune valeur ne peut être // définie pour cet objet de données. boolean isOpen = dobj.getType().isOpen(); si (!isOpen) renvoie la valeur faux ; // Aucune valeur n'est définie pour cet objet de données // Les propriétés ouvertes sont ajoutées à la liste des propriétés de l'instance, mais pas // la liste des propriétés. Ainsi, comparer leurs tailles permet de déterminer facilement // si des données ouvertes sont définies int instancePropertyCount = dobj.getInstanceProperties().size(); int definedPropertyCount = dobj.getType().getProperties().size(); // Si elles sont égales, aucun contenu ouvert n'est défini si (instancePropertyCount == definedPropertyCount) renvoie la valeur faux ; // Vérifiez les propriétés du contenu ouvertes pour déterminer si certaines d'entre elles sont des éléments for (int i=definedPropertyCount; i < instancePropertyCount; i++) { Property prop = (Property)dobj.getInstanceProperties().get(i); si (boXsdHelper.isElement(prop)) { renvoie la valeur vrai ; // Une valeur any a été trouvée } } renvoie la valeur faux ; // Aucune valeur n'est définie