JMRI: Xml Schema Examples
Author: Bob Jacobsen
Keywords: JMRI technical code xml schema usage

# JMRI: XML Exemples de Schéma

Cette page contient des exemples de divers fragments Examples de Schema XML que vous pourriez trouver utiles. Pour une analyse de l'utilisation JMRI de Schema, XML, y compris des infos sur les modes de préférence et de l'organisation, voir une autre page .

## Elément avec juste le contenu du texte, pas d'attributs

    <xs:element name="someData" minOccurs="0" maxOccurs="1">

Cela ne veut pas préciser les frappe. Si vous souhaitez par exemple faire respecter les entier:

    <xs:element name="someIntThing" >
      <xs:complexType>
        <xs:simpleContent>
          <xs:extension base="xs:int" />
        </xs:simpleContent>
      </xs:complexType>
    </xs:element>

## Elément avec seulement des attributs, pas de contenu

Forme privilégiées Store Venitien:

    <xs:element name="sample" type="SampleType"
        minOccurs="0" maxOccurs="unbounded" />

    <xs:complexType name="SampleType">
      <xs:attribute name="foo" />
      <xs:attribute name="bar" />
    </xs:complexType>

Peut aussi être combiné si vous pensez qu'il est peu probable qu'il soit utilisé ailleur:

    <xs:element name="sample"
        minOccurs="0" maxOccurs="unbounded" />
      <xs:complexType>
        <xs:attribute name="foo" />
        <xs:attribute name="bar" />
      </xs:complexType>
    </xs:element>

## Elément avec du contenu texte et des attributs

    <xs:element name="someIntThing" >
      <xs:complexType>
        <xs:simpleContent>
          <xs:extension base="xs:int">
            <xs:attribute name="someInt" type="xs:int"/>
            <xs:attribute name="someText" type="xs:string"/>
          </xs:extension>
        </xs:simpleContent>
      </xs:complexType>
    </xs:element>

## Limiter un attribut pour certaines valeurs

Si vous voulez faire cela, ça vaut la peine de définir un type général qui peux être réutilisé. Ceux-ci sont en xml/schema/types/general.xsd.

    <xs:simpleType name="yesNoType">
      <xs:annotation>
        <xs:documentation>
          General definition of string that's either "yes" or "no".
        </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:token">
        <xs:enumeration value="yes"/>
        <xs:enumeration value="no"/>
      </xs:restriction>
    </xs:simpleType>

Puis le mettre sur un attribut est simple:

    <xs:attribute name="opsOnly" type="yesNoType"/>

## Elément avec le contenu du texte restreint

Pas un attribut, un élément:

    <xs:element name="relation">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="ge"/>
          <xs:enumeration value="lt"/>
          <xs:enumeration value="eq"/>
          <xs:enumeration value="ne"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:element>

## Groupes d'Attribut

Des groupes d'attributs sont bons pour représenter un ensemble d'attributs lus et écrits ainsi que par une routine de service commune. Exemple de définition:

    <xs:attributeGroup name="EditorCommonAttributesGroup">
      <xs:annotation>
        <xs:documentation>
          Define the XML stucture for storing common PositionableLabel child attributes
        </xs:documentation>
        <xs:appinfo>
          jmri.jmrit.display.configurexml.PositionableLabelXml#storeCommonAttributes
        </xs:appinfo>
      </xs:annotation>
      <xs:attribute name="x" type="xs:int" use="required" />
      <xs:attribute name="y" type="xs:int" use="required" />
      <xs:attribute name="level" type="xs:int" />
      <xs:attribute name="forcecontroloff" type="trueFalseType" default="false" />
    </xs:attributeGroup>

par exemple l'utilisation, dans certains type plus tard:

    <xs:attributeGroup ref="EditorCommonAttributesGroup" />