XML Schema / XML Doc结构 - 正确编写

时间:2011-05-14 15:37:00

标签: xml xsd

XML新手,编写XML文档并使用Visual Studio自动生成Schema。我最初开始编写自己的架构。我的问题是,我可以实施任何缺陷或可能的改进吗?我有类型,要求和事件验证,只是好奇听到你经验丰富的人说的话。

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。

1 个答案:

答案 0 :(得分:0)

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

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