如何在 XSD 中对数据库表建模?

2023-12-05

为地址等数据库表建模似乎很简单,就像 XSD 中的这样:

  <xsd:complexType name="address_Type">
    <!-- the columns of the database table for addresses -->
    <xsd:sequence>
      <xsd:element name="street" type="xsd:string" />
      <xsd:element name="city" type="xsd:string" />
      <xsd:element name="state" type="xsd:string" />
    </xsd:sequence>
  </xsd:complexType>

然后,您可以使用此表加上一些其他不相关的数据(例如用户名)来定义 XML 格式,如下所示:

  <xsd:element name="user" type="user" />
  <!-- =========================================== -->
  <xsd:complexType name="user">
    <xsd:sequence>
      <!-- username stands for all non-address fields -->
      <xsd:element name="username" type="xsd:string" />
      <!-- wrapper element for the address fields -->
      <xsd:element name="address" type="address_Type" />
    </xsd:sequence>
  </xsd:complexType>

XML 可能是这样的:

<?xml version="1.0" encoding="utf-8"?>
<user>
  <username>Albert Einstein</username>
  <!-- with wrapper element for address -->
  <address>
    <street>Main Street</street>
    <city>Ghost Town</city>
    <state>Up State</state>
  </address>
</user>

此方法可以轻松扩展到具有地址列表或与其他表中的记录相结合的地址记录的 XML。通过这种方式,一个 XSD 可以涵盖许多 XML 格式。

然而,如果有人认为,如果我只包含地址对象的 1 个实例,为什么我需要那个愚蠢的“地址”包装元素,得到这个 XML:

<?xml version="1.0" encoding="utf-8"?>
<user>
  <username>Albert Einstein</username>
  <!-- no wrapper element for address -->
  <street>Main Street</street>
  <city>Ghost Town</city>
  <state>Up State</state>
</user>

对我来说,现在我们似乎不能使用与上面 XSD 中相同的复杂类型作为地址。

在我的公司,IT 组织是分散的,如果我开始大喊“你应该添加包装元素”,我可能会感到喉咙痛。或者头痛。因此,我需要改进我的 XSD,以应对带有和不带有包装器元素的 XML。

我尝试添加一个没有名称的 xsd:element,但这不起作用:

<xsd:element type="address_Type" />

我找不到 xsd: 具有 type 属性的实体来指向除 xsd:element 之外的复杂类型。

我的问题是是否还有一种方法可以重新使用最后一个 XML 的复杂类型?


如果您希望在不使用包装元素的情况下从现有内容模型组成新的内容模型,请考虑使用xs:group机制:

<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

  <xsd:element name="user" type="user" />

  <xsd:complexType name="user">
    <xsd:sequence>
      <xsd:element name="username" type="xsd:string" />
      <!-- 
         ...
         Many more xsd:element or xsd:groups might appear here.
         ...
      -->
      <xsd:group ref="address"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:group name="address">
    <xsd:sequence>
      <xsd:element name="street" type="xsd:string" />
      <xsd:element name="city" type="xsd:string" />
      <xsd:element name="state" type="xsd:string" />
    </xsd:sequence>
  </xsd:group>  

</xsd:schema>

如果您想允许包装器可选,您可以使用xsd:choice:

<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="user" type="user" />

  <xsd:complexType name="user">
    <xsd:sequence>
      <xsd:element name="username" type="xsd:string" />
      <xsd:choice>
        <xsd:group ref="address"/>
        <xsd:element name="address">
          <xsd:complexType>
            <xsd:group ref="address"/>
          </xsd:complexType>
        </xsd:element>
      </xsd:choice>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:group name="address">
    <xsd:sequence>
      <xsd:element name="street" type="xsd:string" />
      <xsd:element name="city" type="xsd:string" />
      <xsd:element name="state" type="xsd:string" />
    </xsd:sequence>
  </xsd:group>  

</xsd:schema>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 XSD 中对数据库表建模? 的相关文章

  • 处理 CFchart 时的实际 XML 文件位置

    谁能告诉我在使用 Coldfusion 时是否需要将 xml 文件放在单独的目录中 现在我已将 xml 文件保存在 cfm 文件所在的同一目录中 当我运行文件 cfm 时 它说 Could not locate the style file
  • PHP 对象作为 XML 文档

    获取给定 PHP 对象并将其序列化为 XML 的最佳方法是什么 我正在查看 simple xml 并用它来将 XML 解析为对象 但我不清楚它是如何以相反的方式工作的 我同意使用 PEAR 的 XML Serializer 但是如果您想要一
  • JAXB:如何在没有命名空间的情况下解组 XML

    我有一个 XML 文件
  • XSLT:CSV(或平面文件或纯文本)到 XML

    我正在尝试使用 XSLT 将纯文本文件转换为 XML 文件 我从 CSV 文件开始 因为这是一种众所周知的文件格式 我可以开始在 Google 上搜索示例 我偶然发现了这一点 http ajwelch blogspot com 2007 0
  • 修订:算法和数据结构

    我需要通过修订来构建和处理数据的想法 例如 我有一个对象数据库 例如汽车 每个对象都有许多属性 这些属性可以是任意的 因此没有一个固定的模式来描述这些对象 这些对象可能保存为键值对 现在我需要更改对象的属性 我不想完全重写它 我希望能够返回
  • 如何从 javascript 有效地访问 gzipped xml?

    我需要从 javascript 实际上是从 Greasemonkey 有效地访问一个大的 gzipped xml 文件 不幸的是 服务器不提供 Content Encoding 标头 并且 Content Type 是 applicatio
  • 如何在 Golang 中将 []byte XML 转换为 JSON 输出

    有没有办法在 Golang 中将 XML byte 转换为 JSON 输出 我有以下功能body is byte但我想在一些操作之后将此 XML 响应转换为 JSON 我试过了Unmarshal in xml打包没有成功 POST func
  • 获取对 SOAP 的 XML 响应中的节点值

    我在 PowerShell 中发出 SOAP 请求 如下所示 uri https secure echosign com services EchoSignDocumentService20 WSDL sun Invoke WebReque
  • 如何在 Android 应用程序中使用 xmlserializer 创建 xml

    您好 我正在制作一个预订应用程序 我需要在创建 xml 后将 xml 发送到服务器 如何使用创建 xmlxmlserializer创建后将其发送到服务器 http api ean com ean services rs hotel v3 l
  • 社交应用程序的数据库设计和优化注意事项

    通常的情况 我有一个简单的应用程序 允许人们上传照片并关注其他人 因此 每个用户都会有类似 墙 或 活动源 的东西 他或她可以在其中看到他 她的朋友 他或她关注的人 上传的最新照片 大多数功能都很容易实现 然而 当涉及到这个历史活动源时 由
  • 扩展 XSD 文件

    我有一个带有枚举类型的 XSD 文件 我想创建一个 扩展 XSD 文件 它添加一些额外的枚举 但其他方面的行为就像主 XSD 一样 例如 主 XSD 文件包含以下内容
  • 按钮 - 单击时更改背景颜色

    我的活动中有 8 个按钮 我正在寻找的是 按钮具有默认背景 单击按钮时 背景颜色应更改为其他颜色 这部分非常简单 但是 当我单击任何其他按钮时 第一个按钮的背景颜色应该变回默认颜色 我知道这将使用 选择器状态 来完成 但我不太确定如何实现它
  • XSD 嵌套元素

  • 正则表达式:删除 xml 的空元素标签

    我想将所有自封闭元素替换为长语法 因为我的网络浏览器在它们上绊倒 Example becomes 我正在使用 python 风格的正则表达式 这些解决方案都不会容纳像 foo gt 这样的属性 尝试 s lt w gt s gt lt 1
  • 为什么 SqlClient 在传递 SqlXml 时使用不必要的 XML 转换?

    我有一个关于从 C 代码将 xml 数据类型传递给查询的问题 首先 这是 SQL Server 上的一个表 CREATE TABLE dbo XmlTable id int IDENTITY 1 1 NOT NULL dat xml NOT
  • XML 解析:格式良好的检查:未声明的实体

    我正在使用 SSMS 2008 但收到以下错误 你知道这意味着什么吗 Msg 9448 Level 16 State 1 Line 4 XML parsing line 1 character 89 well formed check un
  • 一列作为主键或两个外键作为主键

    我有以下数据库设计 An E Report有一个QAP其中有一些Requirements A QAP和它的Requirements 可以用于多个E Report Every Requirement每份电子报告中都会有 是 否 确认 我已经添
  • 在activity_main.xml中注释

    我是安卓新手 据我所知 XML 中的注释与 HTML 中的注释相同 使用 形式 我想在 Android 项目的 Activity main xml 配置文件中写一些注释 但它给了我错误 值得注意的是 我使用的是 Eclipse 但目前 我直
  • 如何修改现有表以添加时区

    我有一个包含 500 多个表的大型应用程序 我必须将应用程序转换为时区感知 当前应用程序使用new java util Date GETDATE 与服务器的时区 即没有任何时区支持 我已将这项任务分为几个步骤 以便于开发 我确定的第一个步骤
  • 使用 xpath 和 vtd-xml 以字符串形式获取元素的子节点和文本

    这是我的 XML 的一部分

随机推荐

  • 定义函数并从函数返回函数?

    如何在函数内定义并返回函数 例如 我们有一个类似的函数 float foo float val return val val 现在 需要的是像 bar 这样的函数 typedef float func t float Rubish pseu
  • 在 Prolog 中生成整数的最佳方法

    我想生成整数 并且正在寻找实现此目的的最佳方法 例子 number2 N N 0 N 1 N 2 and so on 现在我只是使用length 2 number2 N length N 但我认为应该有一些更好的方法 无需创建临时列表 我可
  • 根据前一行数据自动计算sql表中的列

    我使用 sql server 作为后端在 asp net c 中开发我的应用程序 现在我需要创建一个带有自动计算列 期末余额 的表 如下所示 Date in stock out stock closing balance 2 3 2013
  • Python 编码风格中的空格

    Python 教程说 在运算符周围和逗号之后使用空格 但不要直接在括号结构内使用空格 a f 1 2 g 3 4 不直接在括号结构内 到底是什么意思 这大概来自于PEP 8 Python 代码风格指南 具体请参阅 表达式和语句中的空格 部分
  • 如何找到元组列表中每个相似条目的平均值?

    我有这个元组列表 Jem 10 Sam 10 Sam 2 Jem 9 Jem 10 如何求每个名字加上的数字的平均值 即用 Jem 存储在一个元组中的所有数字的平均值 然后输出它们 在此示例中 输出将是 Jem 9 66666666667
  • 500 无证错误:在 FastAPI 中返回响应时出现内部服务器错误

    我正在使用 FastAPI 通过 ML 模型进行预测 当我给一个task id and input 应用程序应将其添加到后台任务并相应地返回响应 然而 我得到Error 500当我尝试这样做时 添加后task id globally 它在正
  • 如何处理 URISyntaxException

    我收到此错误消息 java net URISyntaxException Illegal character in query at index 31 http finance yahoo com q h s IXIC My Url htt
  • 通过公式从单元格中提取所需数据

    我一直在使用下面的公式从单元格中提取所需的结果 但现在我试图从单元格中获取更多数据 并且我最终尝试从单元格中获取更多值 但它不起作用 我附上了一张谷歌表格 其中提供了数据和所需的结果以及我的公式 任何帮助将不胜感激 ArrayFormula
  • 在下拉选择中,如何从数据库填写完整的表单字段

    如何根据从下拉列表中选择的值从数据库填写完整的表单输入字段 示例 在应用程序中 通过选择客户名称 它会使用数据库中存储的详细信息填充完整的表单输入字段 Sample Code
  • 在 matlab 中以一般形式绘制二次曲面

    I have Quadric Surface equation 我知道A B C 如何在 matlab 中绘制方程 最好的选择是生成函数的 3D 等高线图 其中函数值为 0 处具有单个等高线 要以合理的精度完成此操作 请在多个点 x y z
  • 让控制台等待用户输入关闭

    我有一个控制台应用程序 在执行其任务后 必须向用户提供反馈 例如 操作完成 或 操作失败 以及详细的错误 问题是 如果我只是 让它运行 输出消息将被打印 但控制台将很快关闭 没有时间阅读消息 据我记得 在 C 中 每个控制台应用程序都会以
  • 使用 php/mysql 在 googlemaps 上动态绘制折线

    我是 google 地图 API 的新手 我为我的手机编写了一个小应用程序 可以定期将其位置更新到 SQL 数据库 我想在我的浏览器中的谷歌地图上显示此信息 理想情况下 我想定期轮询数据库 如果有任何新的坐标到达 请将它们添加到行中 描述它
  • swig + mono:找不到库的 C# 示例错误

    我在 Mac OS X 10 6 4 上使用 swig 2 0 1 mono 2 6 2 8 整体构建没问题 C 示例的构建也没问题 问题是 当我运行示例 mono runme exe 时 我总是收到以下错误 Unhandled Excep
  • numpy 数组中值数组的位置

    这是一个小代码来说明问题 A array 1 2 1 0 5 3 f of A f A this is precomputed and expensive values array 1 2 1 0 location of values in
  • 为什么这个 Gnuplot 中的 autotitle 错误?

    Data Model Decreasing Constant Increasing 2025 73 78 80 85 87 92 2035 63 68 80 85 97 107 2050 42 57 75 90 104 5 119 5 基于
  • CFNetwork SSLHandshake 在使用 localhost 的 iOS 模拟器上失败 (-9807)

    我正在尝试连接openssl s server和 iOS 客户端使用 TCP SSL 但得到CFNetwork SSLHandshake failed 9807 Objective C 代码 从这里 void viewDidLoad sup
  • 从 Java 使用 .net WCF 服务

    我是 Java 新手 认为在我已经熟悉的 NET WCF 服务之上实现客户端应用程序是一次很好的学习练习 我从最新的 JAX WS 运行 wsimport bat https jax ws java net 来生成客户端代理 但是我仍然坚持
  • 用CSS显示不同大小的div

    如何显示不同高度的 div 使其彼此靠近 无论其高度如何 并具有特定的边距 就像建筑物一样我的意思是类似这个网站中的 divhttp via me 我使用了 float left 但它仅与最后一个 div 一起浮动并留下空白 这是我使用的代
  • Make:覆盖标志

    我对以下的回复有点困惑覆盖 Werror 标志的快速方法 所以我在这里问我的具体问题 我有多个 Makefile 一起工作 并且 CFLAGS 已设置为 Werror Wall 和许多其他 但在其中一个 Makefile 中 我希望错误不要
  • 如何在 XSD 中对数据库表建模?

    为地址等数据库表建模似乎很简单 就像 XSD 中的这样