使用Notepad ++ XML Tools创建XSD

时间:2017-11-03 01:13:54

标签: xml xsd notepad++

我正在为各种XML文档创建XSD文件,我目前正在使用XML Tools Notepad ++插件,当我尝试验证我的XSD文件时, This is my full XSD file as of now.我不确定如何正确地将XML工具指向正确的模式来验证我的XSD文件,因为XSD文件的模式不是本地定义的,它是由W3普遍定义的。这是我当前的架构标签声明:

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

我已尝试在其他网站上查找解决方案,但我还没有找到解决方案。 enter image description here我认为XML Tools无法解析非本地URI或XML工具的位置并不能正确识别我的XSD文件为XML架构,但我&# 39;我不完全确定。我也可能不会正确宣布某些事情。

为了清楚起见,我还没有验证我的XML文件,我只是想创建一个正确形成的XSD。

2 个答案:

答案 0 :(得分:0)

如果我是正确的,您正在尝试针对Schema for Schemas验证XML架构。

目标命名空间必须是XML Schema的目标命名空间,即与绑定到前缀xs:的命名空间相同,并且可以使用属性{{1指定包含Schema for Schemas的文件的位置}}

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"> 属性包含偶数个以空格分隔的URI。奇数位置的每个URI都是命名空间,下一个偶数位置的URI是其位置提示。

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

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

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

答案 1 :(得分:0)

验证架构是否正确的最佳方法是将其提交给架构处理器。这将比仅根据模式架构文档(S4SD)评估它进行更彻底的检查。对于无法在S4SD中表达的架构有许多限制。

实际上这些有两种。

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

  

除了对<any><anyAttribute>施加的条件外   模式文档的模式的元素信息项,   namespace和notNamespace属性不能同时存在。

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

不同的架构处理器将提供验证架构的不同方法。例如,使用Saxon on .NET,你可以做到

Validate -xsd:my-schema.xsd -t

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