2011-05-14 22 views
1

XML新手,编写了一个XML文档并使用Visual Studio自动生成了一个Schema。我最初开始写自己的模式。我的问题是,我可以实施哪些缺陷或可能的改进?我有类型,要求和事件验证,只是好奇听到你有经验的人说。XML Schema/XML文档结构 - 正确书写

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> 

模式

<?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> 

当我几乎手动完成Schema时,我确信我的代码少得多,是否自动生成过多?

编辑:第一个语句的foreach错误,工作修复,这不是问题btw。

回答

0

模式是一类文档的描述。从单个文档生成的任何模式都是猜测。例如,如果所有课程元素的长度属性都是整数,则该工具可能会猜测它始终是一个整数,并为其提供一种xs:integer。但是你可能想要更精确一些,并且使得这个类型是一个30到60范围内的整数。或者这个工具可能比你想要的更具限制性:或许它猜测ID总是5个字符长,当这只是一个意外的样本数据。因此,无论何时您使用这样的模式生成工具,您都需要检查输出并将其更改为描述一类文档,而不仅仅是您的示例。

我不知道VS工具,但很多这样的工具都可以选择生成模式的样式,例如,局部元素声明与全局元素声明。不同的输出可能是等价的,但其中一些可能允许更多地重用组件或更易于修改。值得尝试不同的选择。