113 votes

Que fait elementFormDefault en XSD ?

Qu'est-ce que elementFormDefault et quand doit-on l'utiliser ?

J'ai donc trouvé des définitions pour elementFormDefault valeurs :

qualifiés - éléments et attributs se trouvent dans l'espace de nommage cible du schéma

sans réserve - n'ont pas d'espace de noms

D'après cette définition, je pense que si un schéma est défini comme qualifié, pourquoi faut-il préfixer le type avec l'espace de noms ? Et quels sont les scénarios où l'on peut même avoir un schéma non qualifié ? J'ai essayé de chercher sur Google, mais tout ce que j'ai obtenu, ce sont quelques pages du W3C qui étaient extrêmement difficiles à comprendre.

C'est le fichier avec lequel je travaille en ce moment, pourquoi dois-je déclarer le type en tant que target:TypeAssignments lorsque je déclare le targetNamespace comme le même que celui de xmlns:target ?

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
        xmlns:target="http://www.levijackson.net/web340/ns"
        targetNamespace="http://www.levijackson.net/web340/ns" 
        elementFormDefault="qualified">
  <element name="assignments">
    <complexType>
      <sequence>
        <element name="assignments" type="target:TypeAssignments"
                 minOccurs="1" maxOccurs="unbounded"/>
      </sequence>
    </complexType>
  </element>
  <complexType name="TypeAssignments">
    <sequence>
      <element name="assignment" type="target:assignmentInfo"
               minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <complexType name="assignmentInfo">
    <sequence>
      <element name="name" type="string"/>
      <element name="page" type="target:TypePage"/>
      <element name="file" type="target:TypeFile" 
               minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
    <attribute name="id" type="string" use="required"/>
  </complexType>
  <simpleType name="TypePage">
    <restriction base="integer">
      <minInclusive value="50" />
      <maxInclusive value="498" />
    </restriction>
  </simpleType>
  <simpleType name="TypeFile">
    <restriction base="string">
      <enumeration value=".xml" />
      <enumeration value=".dtd" />
      <enumeration value=".xsd" />
    </restriction>
  </simpleType>
</schema>

0voto

Neal Points 1

J'ai remarqué que XMLSpy (au moins la version 2011) a besoin d'un targetNameSpace défini si elementFormDefault="qualified" est utilisé. Sinon, il ne valide pas. Et ne génère pas non plus de xmls avec des préfixes d'espace de noms.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X