Altova XMLSpy 2024 Professional Edition

La commande Convertir DTD en Schéma est activée lorsqu'une DTD est le document actif. Elle convertit une DTD en un document de Schéma XML (XSD).

 

La commande ouvre le dialogue Convertir DTD en Schéma W3C (capture d'écran ci-dessous), dans laquelle vous pouvez sélectionner si vous souhaitez convertir des éléments complexes dans des éléments ou dans des types complexes. Cliquez sur OK pour recevoir une invitation à choisir un emplacement où enregistrer le fichier généré XSD. Cliquez sur Enregistrer pour exécuter la conversion. Le fichier XSD est généré et ouvert dans XMLSpy.

dlgDTD2XSD

Lorsque vous convertissez une DTD en Schéma XML, XMLSpy fait quelques hypothèses seulement en raison du peu d'informations disponibles. En particulier, les valeurs de certains composants de DTD sont traitées littéralement au lieu de parser leur sémantique. Cela est dû au fait que le programme ne peut pas savoir laquelle des utilisations possibles sera utilisée. Dans ces cas, vous devriez modifier la conversion générée.

 

Dans tous les cas, vous devriez examiner avec soin la conversion générée pour voir si vous pouvez l'améliorer. Quelques domaines dans lesquels des améliorations peuvent être nécessaires sont rassemblées ci-dessous.

 

 

Types de données Attribut

Les DTD permettent uniquement 10 types de données d'attribut, alors que les Schémas XML, par exemple, permettent plus de 40 types de données plus les types de données dérivés. Vous pouvez souhaiter améliorer un Schéma XML généré, par exemple, en utilisant un type de données plus restrictif. Veuillez noter que lorsqu'un Schéma XML est converti en DTD, l'information de type de données sera perdue.

 

 

Espaces de noms

Les DTD ne sont pas conscients de l'espace de noms. En conséquence, si les noms d’espaces doivent être spécifiés en DTD, ils doivent être codés en dur dans les noms d’élément et d’attribut. Cela peut poser des défis importants lors de la conversion d'un schéma à un autre.

 

 

Entités

Le Schéma XML n'a pas d'équivalent pour les déclarations d'entités générale de DTD. Lorsque XMLSpy convertit une DTD en un Schéma XML, il ignore les déclarations d'entité.

 

 

Déclarations de données non parsées

Les DTD et les Schémas XML utilisent des mécanismes différents pour gérer des données non parsées. Cela est expliqué plus en détail ci-dessous.

 

Les DTD utilisent le mécanisme suivant :

 

Une notation est déclarée consistante d'un nom et d'un identifiant, par exemple :
<!NOTATION gif SYSTEM "image/gif">

Vous déclarez l'entité, par exemple :
<!ENTITY cover_img SYSTEM "graphics/cover_img.gif" NDATA gif>

Généralement, vous spécifiez un type d'attribut de ENTITY sur l'attribut pertinent, par exemple :<!ELEMENT img EMPTY>

      <!ATTLIST img format ENTITY #REQUIRED>

 

Dans le Schéma XML, le mécanisme correspondant est comme suit :

 

Déclarer une notation. Cela fonctionne de la même manière que pour la DTD.

<xs:notation name="gif" public="image/gif"/>

 

Veuillez noter que l'attribut public est obligatoire et maintient l'identifiant. Un attribut system optionnel conserve l'identifiant de système et est généralement un programme d'exécution qui peut se charger des ressources du type de notation.

Vous associez la déclaration notation avec une valeur d'attribut donnée en utilisant le type de données NOTATION. Néanmoins, vous ne pouvez pas utiliser le type de données NOTATION directement, mais vous devez dériver un autre type de données depuis le type de données NOTATION datatype.

<xs:simpleType name="formatType">

  <xs:restriction base="xs:NOTATION">

     <xs:enumeration value="gif"/>

     <xs:enumeration value="jpeg"/>

  </xs:restriction>

</xs:simpleType>

Vous associez l'attribut avec le type de données dérivé depuis le type de données NOTATION, par ex.

<xs:complexType name="imgType">

  <xs:attribute name="height"/>

  <xs:attribute name="width"/>

  <xs:attribute name="location"/>

  <xs:attribute name="format" type="formatType" use="required"/>

</xs:complexType>

<xs:element name="img" type="imgType"/>

 

Lorsque vous convertissez une DTD en un Schéma XML, XMLSpy, suivez les étapes suivantes :

 

Un exemple comme

<!ATTLIST image format ENTITY #REQUIRED

...>

 

est converti en

<xs:attribute name="format" type="xs:ENTITY" use="required"/>

 

et un autre comme

<!NOTATION gif SYSTEM "image/gif">

 

est converti en

<xs:notation name="gif" system="image/gif"/>

 

Vous devriez donc effectuer les modifications suivantes :

 

1.Dans des notations comme <xs:notation name="gif" system="image/gif"/>, remplacez system par public, et ajoutez un identifiant de système optionnel, le cas échéant.

2.Dérivez un type de données depuis le type de données NOTATION tel que décrit ci-dessus pour formatType.

3.Associez le type de données dérivé avec l'attribut pertinent.

 

Note:Conformément à la spécification de Schéma XML, vous ne nécessitez pas ou ne pouvez pas, selon le point de vue, déclarer une entité externe.

 

© 2018-2024 Altova GmbH