WebSphere Enterprise Service Bus, Version 6.2.0 Systèmes d'exploitation: AIX, HP-UX, i5/OS, Linux, Solaris, Windows


Différenciation de propriétés portant le même nom

Lorsque plusieurs XSD avec le même espace de nom définissent des types portant le même nom, un type incorrect peut être accidentellement référencé.

Address1.xsd:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:complexType name="Address">
    <xsd:sequence>
      <xsd:element minOccurs="0" name="city" type="xsd:string"/>
	</xsd:sequence>
  </xsd:complexType>
</xsd:schema>

Address2.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:complexType name="Address">
    <xsd:sequence>
      <xsd:element minOccurs="0" name="state" type="xsd:string"/>
	</xsd:sequence>
  </xsd:complexType>
</xsd:schema>

Les objets métier ne prennent pas en charge les noms dupliqués pour des structures XSD globales (telles que complexType, simpleType, element, attribute, etc.) par le biais des API BOFactory.create(). Il est cependant possible de créer ces structures globales dupliquées comme enfants d'autres structures si les API correctes sont utilisées, comme indiqué dans les exemples suivants

Customer1.xsd:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 xmlns:tns="http://Customer1"
 targetNamespace="http://Customer1">
  <xsd:import schemaLocation="./Address1.xsd"/>
  <xsd:complexType name="Customer">
    <xsd:sequence>
      <xsd:element minOccurs="0" name="address" type="Address"/>
	</xsd:sequence>
  </xsd:complexType>
</xsd:schema>

Customer2.xsd:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 xmlns:tns="http://Customer2"
 targetNamespace="http://Customer2">
  <xsd:import schemaLocation="./Address2.xsd"/>
  <xsd:complexType name="Customer">
    <xsd:sequence>
      <xsd:element minOccurs="0" name="address" type="Address"/>
	</xsd:sequence>
  </xsd:complexType>
</xsd:schema>

Lorsque les champs "Customer address" sont renseignés et que l'API BOFactory.create() est appelée pour créer l'adresse, les types d'objets métier enfants qui en résultent peuvent être définis d'une manière incorrecte. Pour éviter cela, vous pouvez appeler l'API createDataObject("address") sur l'objet de données "Customer". Un enfant de type correct sera ainsi créé, car les objets métier correspondront à l'emplacement de schéma de l'importation.

	DataObject customer1 = ...

	// Manière incorrecte de créer un enfant "Address"
	// Un type d'adresse Address1.xsd ou Address2.xsd risquerait d'être créé
	DataObject incorrect = boFactory.create("", "Address");
	customer1.set("address", incorrect);

	// Manière correcte de créer un enfant "Address"
	// Le type d'adresse Address1.xsd sera ainsi forcément créé
	customer1.createDataObject("address");

concept Rubrique concept

Conditions d'utilisation | Commentaires en retour


Icône d'horodatage Dernière mise à jour: 07 juillet 2010


http://publib.boulder.ibm.com/infocenter/dmndhelp/v6r2mx/topic//com.ibm.websphere.wesb620.doc/doc/cbo_inctyperes.html
Copyright IBM Corporation 2005, 2010. All Rights Reserved.
Ce centre d'information est mis en service par la technologie Eclipse (http://www.eclipse.org).