当前位置: 首页 > 知识库问答 >
问题:

使用记事本XML工具创建XSD

谭梓
2023-03-14

我正在为各种XML文档创建XSD文件,目前我正在使用XML工具记事本插件,当我尝试验证我的XSD文件时,它会要求XML模式进行验证:我不确定如何正确地将XML工具指向正确的模式来验证我的XSD文件,因为XSD文件的模式不是本地定义的,而是由W3统一定义的。这是我当前的架构标记声明

<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="https://www.w3.org/2009/XMLSchema/XMLSchema.xsd">

我尝试在其他站点上查找解决方案,但我还没有找到确切的解决方案。这是我现在的完整XSD文件。我认为XML Tools要么无法解析非本地URI的位置,要么XML Tools无法正确地将我的XSD文件识别为XML Schema,但我不完全确定。也有可能我只是没有正确声明某些内容。

需要明确的是,我不是在验证我的XML文件,我只是试图创建一个正确形成的XSD。

共有2个答案

阎宾实
2023-03-14

如果我是正确的,那么您正在尝试根据模式的模式验证XML模式。

目标名称空间必须是XML模式的名称空间,即与绑定到前缀xs的名称空间相同,并且可以使用属性xsi:schemaLocation指定包含模式模式的文件的位置。

<xs:schema
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  targetNamespace="https://www.w3.org/2001/XMLSchema"
  xsi:schemaLocation="https://www.w3.org/2001/XMLSchema
                      https://www.w3.org/2009/XMLSchema/XMLSchema.xsd">

更一般地,xsi:schemaLocation属性包含偶数个空格分隔的URI。奇数位置的每个URI都是一个命名空间,下一个偶数位置的URI是其位置提示。

请注意,这很有可能,但不能100%保证这是有效的,因为XML Schema规范将xsi: Schemaloce中的信息定义为模式验证引擎可能遵循或可能不遵循的提示来解析其模式。验证引擎可以自由地提供不同的方法来解析模式文件位置,然后应该记录下来。话虽如此,如果引擎的缓存中没有模式,它很可能会使用xsi: SchemaLoce提供的提示,因为这是广泛确立的实践。

一般来说,鼓励验证引擎缓存模式(内置或一次性下载),因为全球用户群指向中央服务器的模式位置会给服务器带来大量负载,尤其是对于W3C。在本地拥有模式也可以减少延迟。如果引擎不缓存并且验证经常运行,一种可能是下载模式的模式并在本地使用它。

最后,XML模式引擎通常会在使用时自动验证和检查模式,不仅针对模式的模式,还考虑规范中的所有进一步约束。如果是这种情况,则上述所有操作都会自动执行,而无需在模式中指定模式位置。不过,明确地这样做是一个很好的智力练习。

汪兴旺
2023-03-14

验证模式是否正确的最佳方法是将其提交给模式处理器。这将进行更彻底的检查,而不仅仅是根据模式文档的模式(S4SD)对其进行评估。在S4SD中无法表达模式上的许多约束。

事实上,这有两种。

(1) 模式表示约束是模式文档级别的约束,例如(在XSD 1.1第1部分§3.9.1中):

除了对施加的条件之外

(2)模式组件约束以对源模式文档生成的模式组件模型的约束来表示。一个例子是“元素声明一致”约束(§3.8.6.3),它说如果内容模型中的两个元素粒子具有相同的名称,那么它们也必须具有相同的类型。

不同的模式处理器将提供不同的验证模式的方法。例如,在. NET上使用Saxon,您可以只做

Validate -xsd:my-schema.xsd -t

(提供一个模式而没有源文档),它会告诉您模式中是否有任何错误。

 类似资料:
  • 问题内容: 我正在使用创建一个xml 在此上添加一些属性后,当我尝试打印它时,它看起来像这样, 有没有办法删除xml版本节点?谢谢 问题答案: 从理论上讲,您可以提供保存文档时删除XML声明的选项,但这仅在Libxml> = 2.6.21(和buggy)中可用。一种替代方法是使用

  • 本节介绍如何使用Jupyter记事本编辑和运行本书的代码。请确保你已按照“获取和运行本书的代码”一节中的步骤安装好Jupyter记事本并获取了本书的代码。 在本地编辑和运行本书的代码 下面我们介绍如何在本地使用Jupyter记事本来编辑和运行本书的代码。假设本书的代码所在的本地路径为xx/yy/d2l-zh/。在命令行模式下进入该路径(cd xx/yy/d2l-zh),然后运行命令jupyter

  • 我正在注入这样一个脚本: 这会生成如下标记: 我更喜欢以下语法: 将选项传递给jQuery DOM元素创建者时是否支持此功能?或者,我应该只使用普通JavaScript来实现这一点吗?

  • Navicat 为视觉化地创建查询、视图和实体化视图提供了一个有用的工具,称为“SQL 创建工具”。它让你不需要 SQL 知识就能创建和编辑查询。即使你熟悉 SQL,便捷而流畅的图形界面也可以让你更轻松地创建关系并可视化查询。 在查询设计器中,点击 “查询创建工具”按钮来打开可视化的 SQL 创建工具。 所有数据库对象都显示在左侧的“对象”窗格中。在中间的窗格中,它分为两部分:上面的“图表”窗格和

  • Navicat 为视觉化地创建查询、视图和实体化视图提供了一个有用的工具,称为“SQL 创建工具 ”。它让你不需要 SQL 知识就能创建和编辑查询。即使你熟悉 SQL,便捷而流畅的图形界面也可以让你更轻松地创建关系并可视化查询。 在查询设计器中,点击 钮来打开可视化的 SQL 创建工具。 所有数据库对象都显示在左侧的“对象”窗格中。在中间的窗格中,它分为两部分:上面的“图表”窗格和下面的“准则”窗

  • Navicat 为视觉化地创建查询、视图和实体化视图提供了一个有用的工具,称为“SQL 创建工具”。它让你不需要 SQL 知识就能创建和编辑查询。即使你熟悉 SQL,便捷而流畅的图形界面也可以让你更轻松地创建关系并可视化查询。 在查询设计器中,点击 “查询创建工具”按钮来打开可视化的 SQL 创建工具。 所有数据库对象都显示在左侧的“对象”窗格中。在中间的窗格中,它分为两部分:上面的“图表”窗格和