需要获得可以生成这样的输出的XSD定义。我在引用命名空间时遇到了麻烦。我想在一个XSD文件中完成所有操作(不想引用其他文件)。
<?xml version="1.0" encoding="UTF-8"?>
<message>
<Headerinfo>
<Element1>stuff</Element1>
<Element2>things</Element2>
</Headerinfo>
<CreateRequest xmlns="http://schemas.datacontract.org/2004/07/MyOrg.MyApp.DataContracts.MyObject" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Element3>more stuff</Element3>
<Element4>more things</Element4>
<Address xmlns:a="http://schemas.datacontract.org/2004/07/MyOrg.MyApp.DataContracts.Address">
<a:AddressLine1>123 Main Street</a:AddressLine1>
</Address>
</CreateRequest>
</message>
1 - 需要能够为CreateRequest复杂元素生成xmlns 2 - 需要能够生成xmlns:a for Address及其简单元素。
这是我到目前为止的XSD。我相信我需要为a:record添加一个xs:scehma条目。不知道还有什么,似乎无法让它发挥作用。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified">
<xs:element name="message">
<xs:complexType>
<xs:sequence>
<xs:element name="Headerinfo">
<xs:complexType>
<xs:sequence>
<xs:element name="Element1" type="xs:string"/>
<xs:element name="Element2" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CreateRequest">
<xs:complexType>
<xs:sequence>
<xs:element name="Element3" type="xs:string"/>
<xs:element name="Element4" type="xs:string"/>
<xs:element name="Address">
<xs:complexType>
<xs:sequence>
<a:element name="AddressLine1" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
答案 0 :(得分:1)
如果没有引用其他XSD文件,则无法实现此目的,因为根没有名称空间,而某些内容使用名称空间。实际上,您只需要三个XSD文件。
通常,通过将表单设置为不具有命名空间的元素的不合格,可以采用相反的方法。
答案 1 :(得分:1)
我不确定XSD“生成输出”是什么意思 - XSD通常用于验证输入。
但XML Schema规范要求您为每个命名空间编写一个模式文档,每个文档包含xs:import声明,以定义跨命名空间的依赖关系。这就是它的设计方式,没有必要试图对抗它。