2 votes

Comment définir un attribut ID de schéma XML qui a un motif ?

Ce XML documentation semble dire que le type dérivé ID supporte un motif, mais lorsque j'essaie d'en définir un avec ce code :

      <complexType name="CourseType">
          <attribute name="courseNumber" type="ID">
              <pattern value="[A-Z]{2}(\d{3}).(\d{3})" />
          </attribute>
          <attribute name="numOfCredits" type="university:CourseCredits" />
          <element name="course_name" type="university:MixedName" />
          <element name="course_professor" type="string" />
      </complexType>>

...J'obtiens une erreur dans l'éditeur XML d'oXygen qui dit The content of 'courseNumber' must match (annotation?, (simpleType?)). A problem was found starting at: pattern.

Est-ce que je définis correctement mon schéma pour cet attribut ID ?

3voto

Shcheklein Points 1437

Si vous avez besoin de restreindre le type de données simple intégré, vous devez créer votre propre simpleType . Utilisez Dérivation par restriction . Essayez quelque chose comme ça :

<simpleType name='better-ID'>
  <restriction base='ID'>
    <pattern value='(\d{3}).(\d{3})'/>
  </restriction>
</simpleType>

<complexType name="CourseType">
      ...
      <attribute name="courseNumber" type="better-ID"/>
      <attribute name="numOfCredits" type="university:CourseCredits" />
</complexType>

Ou vous pouvez simplement intégrer simpleType :

   <complexType name="CourseType">
          ...
          <attribute name="courseNumber">
              <simpleType>
                  <restriction base='ID'>
                     <pattern value='(\d{3}).(\d{3})'/>
                  </restriction>
              </simpleType>
          </attribute>
          <attribute name="numOfCredits" type="university:CourseCredits" />
    </complexType>

Voir aussi les commentaires de @jasso ci-dessous pour corriger d'autres erreurs dans votre XSD.

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