XML关系

时间:2009-01-11 19:53:51

标签: xml xsd

我无法定义纸张和作者之间的关系。是否可以定义一个?

<xsd:complextype name="Researcher'>
</xsd:complextype>
<xsd:complexType name = "Paper" >
      <xsd:extension base = " Researcher " >
      </xsd:extension>
  </xsd:complexType>
<xsd:complexType name = "Author">
      <xsd:extension base = " Researcher ">
      </xsd:extension>
</xsd:complexType>

2 个答案:

答案 0 :(得分:1)

我认为你想要一个'纸'来拥有'作者'。我在我的模式中这样做的方法是有一份作者列表和一份文件清单。像这样:

<papers>

<authorlist>
    <author>Bob Barr</author>
    <author>Ron Paul</author>
    <author>Ralph Nader</author>
</authorlist>

<paperlist>
    <paper>
       <title>How to Revert Your Economy to the Gold Standard</title>
       <author>Ron Paul</author>
    </paper>
    <paper>
        <title>Unsafe at any Speed</title>
        <author>Ralph Nader</author>
    </paper>
     <paper>
         <title>How to be a Viable 3rd Party Candidate</title>
         <author>Bob Barr</author>
     </paper>
 </paperlist>
 </papers>

标签搞砸了,但在我的例子中,每篇论文/作者都必须引用作者列表/作者。我会使用与此类似的模式代码来实现所需的效果:

<xsd:element name="paper" type="Papers_Type">
    <xsd:unique name="Author_Key">
        <xsd:selector xpath="authorlist/author">
        <xsd:field xpath="text()"/>
    </xsd:key>
    <xsd:keyref name="Paper_Author_AuthorRef" refer="AuthorKey">
         <xsd:selector xpath="paperlist/paper/author"/>
         <xsd:field xpath="text()"/>
    </xsd:keyref>
</xsd:element>

<xsd:complextype name="Papers_Type">
    <!--Enter element definitions to your liking here-->
</xsd:complextype>

所以论文/论文/论文/作者必须与论文/作者/作者相对应,否则验证会引发错误。祝你好运!

答案 1 :(得分:0)

这似乎是一个重复的问题。

我认为事物就“是一种”或“有一种”关系而言。我猜C ++课程一直困扰着我。

我看到的关系是 1.论文有作者。 2.作者是研究员(或者作者可能是研究员)。

我不知道论文如何成为研究员。它可以有一个作者,可能是一名研究员。