2010-09-03 7 views
1

Je souhaite créer un schéma xsd avec un élément xs: any contenant un attribut.créer un schéma xsd avec <any> nœud contenant des attributs

quelque chose comme ça

<xs:element name="Task"> 
    <xs:element name="any" type="xs:anyType"> 
     <xs:attribute name="type" type="xs:string" /> 
    </xs:element> 
</xs:element> 

Mais apparemment, ce n'est pas un schéma valide.

Ce que je veux accomplir est un schéma XML qui ressemble à ceci:

<Task> 
    <randomField type="bla">test</randomField> 
    <anotherField type="blabla">testing</anotherField> 
    ..... 
</Task> 

Vous pouvez donc entrer dans un champ qui doit avoir l'attribut « type ».

Le but de tout ceci est de créer dynamiquement des tâches dans sharepoint. Ainsi, vous pouvez entrer dans un fichier XML comme ceci:

<Task> 
    <AssignedTo type="string">jsmith</AssignedTo> 
    <Title type="string">Task1</Title> 
</Task> 

Mais je veux le fichier xml à être dynamique, de sorte que vous pouvez entrer plus d'informations comme DueDate, la priorité ... Et le but de l'attribut est de décider si le type de données est une chaîne ou la date ou int, afin que je puisse formater tout correctement ...

thx à l'avance

+0

Si votre XML peut avoir un élément aléatoire, alors quel est le point d'avoir un schéma? – codinguser

Répondre

1

Vous pouvez regarder le XML schema tutorial

<xs:element name="Task"> 
    <xs:complexType> 
     <xs:any minOccurs="0"/>    
    </xs:complexType> 
</xs:element> 
+0

ok, j'ai oublié de taper le xs: complextype ici, mais cela ne résout pas le problème, je ne peux pas entrer un attribut pour le xs: aucun élément .. thx pour votre réponse rapide –

+0

Si je comprends bien, vous essayez d'ajouter un attribut à un élément non défini? Savez-vous déjà à l'avance quels éléments spécifiques peuvent (mais ne doivent pas) apparaître dans le XML? Parce que si vous le faites, vous pouvez les définir dans le schéma comme vous le feriez pour tout autre élément complexe, puis les mettre entre ... . De cette façon, ils peuvent être laissés de côté ou inclus. Mais si vous souhaitez ajouter une balise arbitraire à volonté, vous devez laisser la balise vide. Vous ne pouvez pas spécifier d'attributs dans ce cas. Je recommanderais de définir les éléments (si vous les connaissez). – codinguser

1

ennuyeux comme il peut être, je vous suggère d'aller avec une approche différente:

<Task> 
    <Attribute name="AssignedTo" type="string">jsmith</attribute> 
    <Attribute name="Title" type="string">Task1</attribute> 
</Task> 

Il vous rendra la vie beaucoup plus facile. Pas seulement la conception du schéma mais aussi plus tard dans le traitement des fichiers, etc.

+0

Oui, mais lorsque vous attribuez plus tard un autre attribut, par exemple. le xml ne serait pas valide, car duedate n'est pas déclaré dans le xsd .. Donc je pense que j'ai vraiment besoin du xs: tout élément .. –

+0

@Rise_against: Non, je crois @ Stijn signifie que vous aurez toujours l'attribut 'name'. Donc 'duedate',' AssignedTo', 'Title' etc. seraient les valeurs de cet attribut. Le fichier xml resterait valide, car vous n'avez pas nécessairement besoin de définir des valeurs d'attribut dans votre schéma. – jasso