首页 > 其他分享 >Web开发|XML Schema (XSD) 学习

Web开发|XML Schema (XSD) 学习

时间:2023-04-09 19:14:38浏览次数:37  
标签:XML Web 关系 元素 学生 XSD

采用XSD建立教师、学生之间的关系。

假设有两个实体“学生”和“教师”,一个学生可以有多个老师,一个老师也可以有多个学生,二者为多对多的关系。在XSD中描述多对多的关系可以使用XML元素的引用和复杂类型的组合,使用中间表(或连接表)来表示多对多关系。

首先,我们定义“学生”和“教师”两个元素:

<xs:element name="student" type="studentType"/>
<xs:element name="teacher" type="teacherType"/>

然后,我们定义“中间表”元素,其中包含“学生ID”和“课程ID”属性:

<xs:element name="student_teacher">
 <xs:complexType name="studentTeacherType">
    <xs:sequence>
      <xs:element ref="student"/>
      <xs:element ref="teacher"/>
    </xs:sequence>
 </xs:complexType>
</xs:element>

接下来,我们使用XML元素的引用来建立“学生”和“课程”与“中间表”之间的关系:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="http://tempuri.org/XMLSchema.xsd"
    elementFormDefault="qualified"
    xmlns="http://tempuri.org/XMLSchema.xsd"
    xmlns:mstns="http://tempuri.org/XMLSchema.xsd"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
  <xs:element name="student" type="studentType"/>
  <xs:element name="teacher" type="teacherType"/>
  <xs:element name="student_teacher" type="studentTeacherType"/>
  <xs:complexType name="studentType">
    <xs:sequence>
      <xs:element name="id" type="xs:integer"/>
      <xs:element name="name" type="xs:string"/>
      <xs:element name="teachers" maxOccurs="unbounded" minOccurs="0">
        <xs:complexType>
          <xs:attribute ref="xs:id"/>
          <xs:attribute ref="xs:name"/>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="teacherType">
    <xs:sequence>
      <xs:element name="id" type="xs:integer"/>
      <xs:element name="name" type="xs:string"/>
      <xs:element name="students" maxOccurs="unbounded" minOccurs="0">
        <xs:complexType>
          <xs:attribute ref="xs:id"/>
          <xs:attribute ref="xs:name"/>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="studentTeacherType">
    <xs:sequence>
      <xs:element ref="student"/>
      <xs:element ref="teacher"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>

三者间的关系可视化如下:

img

标签:XML,Web,关系,元素,学生,XSD
From: https://www.cnblogs.com/tangjielin/p/17300809.html

相关文章

  • Web开发|AJAX学习
    IE|FireFox|Chrome,AJAX引擎运行方式的对比AJAX引擎的核心是XMLHttpRequest对象。而不同的浏览器创建XMLHttpRequest对象的方法是有差异的。IE浏览器使用ActiveXObject,而其他的浏览器使用名为XMLHttpRequest的JavaScript内建对象。XMLHttpRequest得到了所有现代浏览器较好的......
  • WebKit三件套(2):WebKit之JavaScriptCore/V8
    WebKit作为一个浏览器引擎,其中Javascript实现包括JavaScriptCore和V8,为了能更全面的了解WebKit,我们需要深入的了解Javascript实现的基本原理、其在WebKit中的作用以及与其他部分之间的交互,同时与Gecko中的Javacript实现作初步的对比。让我们开始了解WebKit之Javascript实现JavaScr......
  • WebKit网页布局实现(0):基本概念及标准篇
    作为一个广受好评的浏览器引擎,其网页布局的质量(包括速度、效率、符合标准度等)往往是其关键,那么WebKit究竟是如何布局网页上的所有元素(包括滚动条、文字、图片、按钮、下拉框等)呢?其主要数据结构及流程都包括哪些呢?其布局的基本概念及标准都有哪些呢?下面分别介绍WebKit对其实现......
  • WebKit三件套(1):WebKit之WebCore篇
    导语:Chrome浏览器的代码量其实是非常庞大的,要想对其有深入的理解,仅仅编译编译调试调试,是很难深入下去的。让我们还是从其主要部分如多进程管理通信、WebKit、V8、Skia、WinHttp、Sanbox等着手分析其主要流程及数据结构,或许能达到事半功倍的效果,而WebKit是其中非常重要的一部分,是C......
  • Python+Selenium.webdriver实现WEB端UI自动化测试
    本篇记录基于Python+Selenium.webdriver实现WEB端UI自动化测试,其中测试用例使用excel维护。 1.项目选取(登录页无验证码校验的项目)该示例选取的是登录页不需要输入验证码校验的基础页面(考虑到现在大部分项目都是需要进行验证码校验的,后面研究后再出一篇相关的分享。) 2.环境......
  • JavaWeb-24课-filter-2023-04-09
    Servlet类,没有乱码处理packagecom.feijian.servlet;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjava.io.IOException;public......
  • JavaWeb-JSP-JSTL c foreach -2023-04-09
    <%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><%@pageimport="java.util.ArrayList"%><%@pagecontentType="text/html;charset=UTF-8"language="java"%><html>&l......
  • JavaWeb-JSP JSTL标签 -2023-04-09
    <%--CreatedbyIntelliJIDEA.User:AdministratorDate:2023/4/9Time:15:10TochangethistemplateuseFile|Settings|FileTemplates.--%><%@pagecontentType="text/html;charset=UTF-8"language="java"%>&l......
  • VisionMobile:为何有些出版商放弃应用而压注在web
    web和native的讨论一直存在,visionMobile最近有一篇blog:WhysomepublishersareabandoningappsandbettingontheWeb,篇幅小,翻译如下为何有些出版商放弃应用而压注在web[为何有些出版商放弃应用将赌注压在web?VisionMobile的自身分析师AndreasPappas对杂志出版商从原生iOS到基......
  • Java for Web学习笔记(二六):JSTL(2)Core Tag(上)
    可以在JSP中替代Java代码的几乎所有功能,包括条件编程,循环,迭代和内容输出。taglib的directive如下:<%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><c:out>AttributesNameRequiredRequest-timeTypeDescriptionvaluetruetruejava.lang.StringExpression......