2011-05-14 5 views
1

Nouveau en XML, écrit un document XML et généré automatiquement un schéma en utilisant Visual Studio. J'ai commencé à écrire mon propre schéma à l'origine. Ma question est la suivante: y a-t-il des lacunes ou des améliorations possibles que je peux mettre en œuvre? J'ai le type, l'exigence et la validation d'occurrence, juste curieux d'entendre ce que vous avez expérimenté les gars disent.Structure XML Doc Schema/XML - Écrit correctement

XML

<?xml version="1.0" encoding="utf-8" ?> 
<university> 
<lesson id="ms434"> 
    <subject>Biology</subject> 
    <maintopic name="Human Biology"> 
    <subtopic>Enlarge Hearts</subtopic> 
    <subtopic>Heart Valves</subtopic> 
    </maintopic> 
    <content> 
    <sentance>Very long sentance one</sentance> 
    <sentance>Very long sentance two</sentance> 
    <sentance>Very long sentance three</sentance> 
    </content> 
</lesson> 
</university> 

Schéma

<?xml version="1.0" encoding="utf-8"?> 

<xsl:template match="@* | node()"> 
    <html> 
    <body> 
     <h1>Professional Training Facilities</h1> 
     <p> 
     <strong>University: </strong> 
     <xsl:for-each select="university/lesson">   
     <xsl:value-of select="subject"/> 
     </p> 
     <br/> 
     <p> 
     <strong>Main Topic: </strong> 
     <xsl:value-of select="maintopic=name"/> 
     </p> 
     <br/> 
     <p> 
     <strong>Sub Topics: </strong> 
     <xsl:for-each select="maintopic"> 
      <p> 
      <xsl:value-of select="subtopic"/> 
      </p> 
     </xsl:for-each> 
     </p> 
     <p></p> 
     <strong>Content:</strong> 
     <xsl:for-each select="content"> 
     <p> 
      <xsl:value-of select="sentance"/> 
     </p> 
     </xsl:for-each> 
     </xsl:for-each> 
     <br/> 
    </body> 
    </html> 
</xsl:template> 

Lorsque j'avais presque terminé le schéma manuellement, je suis sûr que j'avais beaucoup moins de code, la génération automatique est-elle excessive? Editer: foreach erreur pour la première déclaration, en travaillant sur un correctif, ce n'est pas le problème btw.

Répondre

0

Un schéma est une description d'une classe de documents. Tout schéma généré à partir d'un document unique est une supposition. Par exemple, si tous vos éléments de leçon ont un attribut length qui est un entier, l'outil peut deviner qu'il sera toujours un entier et lui donner un type de xs: integer. Mais vous voudrez peut-être être plus précis, et faire du type un entier compris entre 30 et 60. Ou l'outil pourrait être plus restrictif que vous voulez: peut-être devine-t-il que l'ID est toujours de 5 caractères? de vos données d'échantillon. Donc, chaque fois que vous utilisez un outil de génération de schéma comme celui-ci, vous devrez vérifier la sortie et la modifier pour décrire une classe de documents plutôt que simplement votre échantillon.

Je ne connais pas l'outil VS, mais beaucoup de ces outils ont des options pour le style dans lequel le schéma est généré, par ex. déclarations d'éléments locaux vs déclarations d'éléments globaux. Les différentes sorties pourraient bien être équivalentes, mais certaines d'entre elles peuvent permettre une plus grande réutilisation des composants ou être plus faciles à modifier. Cela vaut la peine d'expérimenter avec différentes options.