我尝试使用c#classes(使用xsd.exe)创建XML模式,我在其中使用来自另一个XMl模式的类。
之后我在c#中加载模式,并且我填充了一些缺失的属性,例如导入的shema的shemalocation和名称空间的前缀。
当我再次导出xml架构时,导入的架构类型的前缀是错误的,尽管它已声明。前缀设置为“q1:enumeratedValues”。
我做错了什么?
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:myNamespace="file:///c:/Local/" elementFormDefault="qualified" targetNamespace="file:///c:/Local/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import schemaLocation="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009/memoryMap.xsd" namespace="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" />
<xs:element name="signals" type="myNamespace:signals" />
<xs:complexType name="signals">
<xs:complexContent mixed="false">
<xs:extension base="myNamespace:vendorExtensionBase">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="signal" type="myNamespace:signalType" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="vendorExtensionBase" abstract="true">
<xs:attribute name="xsdversion" type="xs:string" />
</xs:complexType>
<xs:complexType name="signalType">
<xs:complexContent mixed="false">
<xs:extension base="myNamespace:vendorExtensionBase">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="name" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="description" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="bitwidth" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="signed" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="fractionalBits" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="defaultValue" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="divider" type="xs:string" />
<xs:element xmlns:q1="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" minOccurs="0" maxOccurs="1" ref="q1:enumeratedValues" />
<xs:element minOccurs="0" maxOccurs="1" name="scaling">
<xs:complexType mixed="true">
<xs:sequence>
<xs:any maxOccurs="unbounded" />
</xs:sequence>
<xs:anyAttribute />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:schema>
答案 0 :(得分:1)
命名空间前缀名称无关紧要。只有通过将名称空间前缀绑定到命名空间前缀才能获得意义的命名空间值。
没有符合条件的XML处理器会关心特定的名称空间前缀名称,也不应该。