xml - 如何从 xml 文件构建 xsd?
问题描述
我使用了一些工具从我的 .xml 文件中生成了一个 .xsd。但我总是得到 3.xsd 文件作为相互引用的输出。我只需要一个 .xsd 文件,这就是我开始自己构建它的原因。但我对此很陌生,所以我需要你的帮助。
那是我的xml文件:
<testxml xmlns="https://localhost:8443/ns0"
xmlns:ns7="https://localhost:8443/ns7"
xmlns:ns9="https://localhost:8443/ns9"
xmlns:ns3="https://localhost:8443/ns3">
<NotificationMessage>
<SubscriptionReference>
<ns3:Address>https://localhost:8443/</ns3:Address>
</SubscriptionReference>
<Message>
<ns9:SubmitObjectsRequest>
<ns7:RegistryObjectList>
<ns7:ExtrinsicObject>
<ns7:Classification>
<ns7:Slot name="slot1">
<ns7:ValueList>
<ns7:Value>Slot_1</ns7:Value>
</ns7:ValueList>
</ns7:Slot>
<ns7:Name>
<ns7:LocalizedString value="Classification Slot_1"/>
</ns7:Name>
</ns7:Classification>
<ns7:ExternalIdentifier>
<ns7:Name>
<ns7:LocalizedString value="ExternalIdentifier_1"/>
</ns7:Name>
</ns7:ExternalIdentifier>
</ns7:ExtrinsicObject>
</ns7:RegistryObjectList>
</ns9:SubmitObjectsRequest>
</Message>
</NotificationMessage>
</testxml>
这是我自己创建的“我的”xsd 文件的结果。我真的不知道我是否正确构建了三个命名空间。谁能告诉我这看起来不错还是有很多错误?谢谢!
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:ns7="https://localhost:8443/ns7"
xmlns:ns9="https://localhost:8443/ns9"
xmlns:ns3="https://localhost:8443/ns3"
attributeFormDefault="unqualified"
elementFormDefault="qualified"
targetNamespace="https://localhost:8443/ns0"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="testxml">
<xs:complexType>
<xs:sequence>
<xs:element name="NotificationMessage">
<xs:complexType>
<xs:sequence>
<xs:element name="SubscriptionReference">
<xs:complexType>
<xs:sequence>
<xs:element ref="ns3:Address" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Message">
<xs:complexType>
<xs:sequence>
<xs:element ref="ns9:SubmitObjectsRequest">
<xs:complexType>
<xs:sequence>
<xs:element ref="ns9:RegistryObjectList">
<xs:complexType>
<xs:sequence>
<xs:element ref="ns7:ExtrinsicObject">
<xs:complexType>
<xs:sequence>
<xs:element ref="ns7:Classification">
<xs:complexType>
<xs:sequence>
<xs:element ref="ns7:Slot">
<xs:complexType>
<xs:sequence>
<xs:element ref="ns7:ValueList">
<xs:complexType>
<xs:sequence>
<xs:element ref="ns7:Value"
type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="name"
type="xs:string"
use="required" />
</xs:complexType>
</xs:element>
<xs:element ref="ns7:Name">
<xs:complexType>
<xs:sequence>
<xs:element ref="ns7:LocalizedString">
<xs:complexType>
<xs:attribute name="value"
type="xs:string"
use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element ref="ns7:ExternalIdentifier">
<xs:complexType>
<xs:sequence>
<xs:element ref="ns7:Name">
<xs:complexType>
<xs:sequence>
<xs:element ref="ns7:LocalizedString">
<xs:complexType>
<xs:attribute name="value"
type="xs:string"
use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
解决方案
在安装了 BizTalk SDK 的 Visual Studio 2013 中打开架构我收到警告
运行 Validate Schema 我得到两个额外的警告
警告 BEC999:命名空间“ https://localhost:8443/ns3 ”不可在此架构中引用。
警告 BEC999:命名空间“ https://localhost:8443/ns9 ”不可在此架构中引用。
错误 BEC3001:如果 ref 存在,则所有 , , , , , nillable, default, fixed, form, block 和 type 必须不存在。
基本上错误告诉你,如果你有一个 ref="something" 你不应该在那个元素下将它定义为一个复杂的,而是稍后作为一个类型。
但我认为您正在尝试做的事情不受支持(请参阅可能的重复项)。您通常根据您的工具生成的三个文件在不同的 XSD 文件中定义不同名称空间中的内容,当我从您的示例 XML 生成模式时得到相同的结果,因此您的工具的输出是正确的。
推荐阅读
- css - 带有react-circular-progressbar的循环进度条内的换行符?
- algorithm - Boyer-Moore 多数投票算法第二次迭代
- ios - 在连接到热点时通过 iPhone 连接到 localhost
- oracle - PL/SQL:SQL 语句被忽略和标识符无效问题
- metadata - Blob 存储中的图像元数据到 cosmos
- c# - 在 Raspberry Pi 3B 中运行的 UWP windows 10 IOT 核心中的异步等待和内存泄漏
- c# - Youtube /v3/search API 未在 .NET 中返回结果
- go - Gorilla Websocket:WebSocket 握手期间出错:意外响应代码:404
- c++ - 从 'double' 到 'float' 的转换需要缩小转换
- wordpress - 两个谷歌分析数据在用户和会话方面不同