我有另一个包含共享类型的主xsd(它们在同一目录中)。
这是主要标题:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:tns="XMLSchema_Module.xsd"
xmlns:cs="XML_Common"
targetNamespace="XMLSchema_Module.xsd"
elementFormDefault="qualified">
<xsd:import schemaLocation="XML_Common.xsd" namespace="XML_Common"/>
这是共享类型1的标题:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="XML_Common"
elementFormDefault="qualified">
这是我想在主模式的属性中使用的共享类型枚举:
<xsd:simpleType name="TypesType">
<xsd:restriction base ="xsd:token">
<xsd:enumeration value="int"/>
以下是主要参考文献:
<xsd:attribute name="Type" type="cs:TypesType"/>
我正在使用xsd.exe生成序列化类(在构建过程中作为预构建事件集成)。这些xsd是使用VisualStudio构建的。
<Exec Command=""C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\xsd.exe" XSchemas\XMLSchema_Module.xsd /c /o:SerializationClasses /n:ScenarioManager" />
我正在翻译我获得的实际信息:
The type XML_Common:TypesType is not declared or is not a simple type.
这似乎是一个导入问题,但我不知道如何解决它。
答案 0 :(得分:5)
我的不好,似乎xsd.exe无法解析架构导入。 来自this article:
现在已经在另一个文件中定义了类型,xsd.exe将会 如果您尝试创建创建请求,则会生成此错误 XML:C:\ Solution \ Project&gt; xsd.exe Request.xsd / c架构验证 警告:未声明类型“http://www.Example.com/Types:Meeting”。 警告:无法验证架构。类生成可能会失败或 可能会产生错误的结果错误:生成类的错误 schema'C:\ Solution \ Projects \ Request'。
- 缺少数据类型“http://www.Example.com/Types:Meeting”。如果您需要更多帮助,请输入“xsd /?”。这是由于 事实上,xsd.exe不使用schemaLocation提示来查找 导入的架构。您必须将其作为参数包含在内。在你的 xsd.exe调用:C:\ Solution \ Project&gt; xsd.exe Types.xsd Request.xsd / c
答案 1 :(得分:2)
应该强调的是,尽管对LB40的答案持悲观态度,但它的最后一句话会产生解决方案:在你的xsd.exe调用中你必须将引用的xsd作为参数包含在引用xsd:
C:\ Solution \ Project&gt; xsd.exe Types.xsd Request.xsd / c
这将生成一个包含两个模式的类的单个cs源文件。