Faut faire comme ça :
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="blabla">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="monAttribut" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:schema> |
Et ça valide donc ça :
<?xml version="1.0" encoding="utf-8" ?>
<blabla monAttribut="pouet"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="test.xsd">
theBlabla
</blabla> |
Explication :
T'as déjà donc un complexType (pour avoir un attribut faut donc un complexType, tu devrais le savoir vu que t'as réussi à définir l'attribut
). Ensuite, pour indiquer que le contenu de l'élément ne contient que du texte, et pas d'autres éléments, on rajoute un simpleContent. Ensuite comme tu veux du texte, on va dériver le type de base xs:string, dérivation qui va rajouter l'attribut désiré. Comme c'est une extension du type xs:string, on utilise xs:extension