我正在使用xsd2code VS插件从几个xsd文件创建一些数据类,并且我遇到了一个问题,即XSD中元素的名称空间前缀没有出现在生成的XML文件中。
XSD:
<xsd:complexType name="ProductMasterItemType">
<xsd:sequence>
<xsd:element ref="cmn:PrimaryItemCode"/>
<xsd:element ref="cmn:NewPrimaryItemCode" minOccurs="0"/>
<xsd:element ref="cmn:ProductGroupCode"/>
<xsd:element ref="cmn:ProductStatus"/>
<xsd:element ref="cmn:EffectiveDate" minOccurs="0"/>
<xsd:element ref="cmn:RecordStatus"/>
<xsd:element name="AlternateItemCodes"
type="cmn:AlternateItemCodeListType"
minOccurs="0"/>
<xsd:element name="TargetMarketList"
type="mdx:TargetMarketListType"
minOccurs="0"/>
<xsd:element name="ItemInfoList"
type="mdx:ItemInfoListType"/>
<xsd:element name="PackagingInfoList"
type="mdx:PackagingInfoListType"
minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
生成的XML:
<ProductMasterItem>
<PrimaryItemCode xmlns="urn:tracelink:mapper:sl:mdx:commontypes">
<type>INTERNAL_MATERIAL_CODE</type>
TestBOM5
</PrimaryItemCode>
<ProductGroupCode xmlns="urn:tracelink:mapper:sl:mdx:commontypes"
>100</ProductGroupCode>
<ProductStatus xmlns="urn:tracelink:mapper:sl:mdx:commontypes"
>Released</ProductStatus>
<RecordStatus xmlns="urn:tracelink:mapper:sl:mdx:commontypes"
>Active</RecordStatus>
<TargetMarketList>
<TargetMarket>
<CountryMarket
xmlns="urn:tracelink:mapper:sl:mdx:commontypes"
>US</CountryMarket>
</TargetMarket>
<DeleteTargetMarket/>
</TargetMarketList>
<ItemInfoList>
<ItemInfo>
<LanguageCode xmlns="urn:tracelink:mapper:sl:mdx:commontypes"
>EN</LanguageCode>
<ProductDescription
xmlns="urn:tracelink:mapper:sl:mdx:commontypes"
>Test BOM 5</ProductDescription>
<DrugName xmlns="urn:tracelink:mapper:sl:mdx:commontypes"
>Nameofadrug</DrugName>
<Manufacturer xmlns="urn:tracelink:mapper:sl:mdx:commontypes"
>- No Manufacturer -</Manufacturer>
<Strength xmlns="urn:tracelink:mapper:sl:mdx:commontypes"
>verystrong</Strength>
<DosageForm xmlns="urn:tracelink:mapper:sl:mdx:commontypes"
>15ml</DosageForm>
<PackageSize xmlns="urn:tracelink:mapper:sl:mdx:commontypes"
>40ml</PackageSize>
</ItemInfo>
<DeleteItemInfo/>
</ItemInfoList>
生成的XML没有&#39; cmn&#39;元素的名称空间前缀。我运行插件时是否错误地生成了类?这是我需要在插件源代码中更改的内容吗?
我没有很多使用XML的经验,所以如果这些信息不够,我会道歉。如果我错过了一些您需要知道帮助回答的信息让我知道!在此先感谢:)
答案 0 :(得分:1)
xsd:schema元素具有名为elementFormDefault的属性,该属性确定复杂类型的本地元素是否为名称空间限定。默认值为&#39; unqualified&#39;,这意味着您的元素AlternateItemCodes,TargetMarketList等根本不是名称空间限定的。如果将值更改为&#39; qualified&#39;,则本地元素位于架构文档的目标命名空间中,即位于由xsd:schema的targetNamespace属性标识的命名空间中。
从您的示例中,看起来您可能没有架构的目标命名空间,并且好像您可能希望元素采用复杂类型的命名空间;它不会成为。