XSD 架构错误:XmlSchema 错误:元素 http://www.w3.org/2001/XMLSchema:element 在此上下文中无效
Posted
技术标签:
【中文标题】XSD 架构错误:XmlSchema 错误:元素 http://www.w3.org/2001/XMLSchema:element 在此上下文中无效【英文标题】:XSD schema error: XmlSchema error: Element http://www.w3.org/2001/XMLSchema:element is invalid in this context 【发布时间】:2020-05-04 17:46:39 【问题描述】:我正在尝试验证此 XML 文件 第 127 行 XmlSchema 错误:元素 http://www.w3.org/2001/XMLSchema:element 在此上下文中无效。第 125 行,位置 4。相关架构项 SourceUri:virtual://server/schema.xsd,第 177 行,位置 2。
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:msg="urn:smco.messages" xmlns:md="urn:smco.marketData" xsi:schemaLocation="urn:smco.messages schema/smco_marketData-messages.xsd"
elementFormDefault="qualified">
<xs:element name="msg:messageStandard">
<xs:complexType>
<xs:sequence>
<xs:element name="msg:messageId" type="xs:token"/>
<xs:element name="msg:timeStamp" type="xs:dateTime"/>
<xs:element ref="msg:messagePublisher" type="xs:token"/>
<xs:element name="msg:singleObjectMessage" maxOccurs="unbounded" />
<xs:element name="msg:messageObjectCount" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="type-dates_openEnded">
<xs:annotation>
<xs:documentation xml:lang="EN">XML date type with the token 'open' where 'open' is later/before (greater/lesser) than any date value</xs:documentation>
</xs:annotation>
<xs:union memberTypes="xs:date">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="open"/>
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
<xs:complexType name="type-scheme">
<xs:annotation>
<xs:documentation xml:lang="en">The base class for all types which define coding schemes. An instance uses the </xs:documentation>
<xs:documentation xml:lang="en">An instance uses the attributes to fully specify the value domaine by stating it's identification and linking to the documentation of its scope and description of each of its possible values.</xs:documentation>
</xs:annotation>
<xs:simpleContent>
<xs:extension base="xs:normalizedString">
<xs:attribute name="schemeValues" type="xs:anyURI"/>
<xs:attribute name="schemeCode" type="xs:normalizedString"/>
<xs:attribute name="schemeName" type="xs:normalizedString"/>
<xs:attribute name="schemeVersion" type="xs:normalizedString"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="type-iso.country">
<xs:annotation>
<xs:documentation xml:lang="EN">Must conform to ISO 3166 - Representation of Countries</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:normalizedString">
<xs:pattern value="[A-Z][A-Z]"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="type-iso.currency">
<xs:annotation>
<xs:documentation xml:lang="EN">Must conform to ISO 4217 - Representation of Currency and Funds</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:normalizedString">
<xs:pattern value="[A-Z][A-Z][A-Z]"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="type-iso.market">
<xs:annotation>
<xs:documentation xml:lang="EN">Must conform to ISO 10383 - Representation of Market Identification Codes</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z][A-Z][A-Z][A-Z]" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="type-msg.identificationCode">
<xs:sequence>
<xs:element name="msg:codeLevel" type="type-msg.identificationLevel"/>
<xs:element name="msg:startDate" type="type-dates_openEnded">
</xs:element>
<xs:element name="msg:endDate" type="type-dates_openEnded">
</xs:element>
<xs:element name="msg:codeType" type="type-scheme">
</xs:element>
<xs:element name="msg:code" type="xs:string">
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="type-inst.identificationCode">
<xs:sequence>
<xs:element name="inst:codeLevel" type="type-identificationLevel"/>
<xs:element name="inst:startDate" type="type-dates_openEnded">
</xs:element>
<xs:element name="inst:endDate" type="type-dates_openEnded">
</xs:element>
<xs:element name="inst:codeType" type="type-scheme">
</xs:element>
<xs:element name="inst:code" type="xs:string">
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="type-localizedString">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="language" type="xs:language"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="type-msg.identificationLevel">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="level" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="type-msg:scope">
<xs:simpleContent>
<xs:element name="msg:market" type="type-scheme"/>
<xs:element name="msg:actionType" type="xs:token"/>
</xs:simpleContent>
<xs:attribute name="intent" type="xs:string"/>
<xs:attribute name="level" type="xs:string"/>
</xs:complexType>
<xs:complexType name="type-messagePurpose">
<xs:sequence>
<xs:element name="msg:effectiveDate" type="xs:date"/>
<xs:element name="msg:intendedScopes">
<xs:complexType>
<xs:sequence>
<xs:element name="msg:scope" type="type-msg:scope"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:element name="msg:singleObjectMessage" >
<xs:complexType>
<xs:sequence>
<xs:element name="msg:messagePurpose" type="type-messagePurpose"/>
<xs:element name="msg:content" type="content-marketQuotes"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="type-dataPoint">
<xs:sequence>
<xs:element name="value1" type="type-typedValue" maxOccurs="unbounded"/>
<xs:element name="value2" type="type-typedValue" maxOccurs="unbounded"/>
<xs:element name="value3" type="type-typedValue" maxOccurs="unbounded"/>
<xs:element name="value4" type="type-typedValue" maxOccurs="unbounded"/>
<xs:element name="value5" type="type-typedValue" maxOccurs="unbounded"/>
<xs:element name="value6" type="type-typedValue" maxOccurs="unbounded"/>
<xs:element name="value7" type="type-typedValue" maxOccurs="unbounded"/>
<xs:element name="value8" type="type-typedValue" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="structureType" type="xs:string"/>
</xs:complexType>
<xs:complexType name="type-typedValue">
<xs:simpleContent>
<xs:extension base="xs:decimal">
<xs:attribute name="dataType" type="xs:string" use="required"/>
<xs:attribute name="dataUnit" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="content-marketQuotes">
<xs:sequence>
<xs:element name="msg:standardIdentifier" type="type-msg.identificationCode"/>
<xs:element name="msg:knownIdentifiers" >
<xs:complexType>
<xs:sequence>
<xs:element name="msg:identifier" type="type-msg.identificationCode" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="msg:extendedCFICode" type="type-scheme"/>
<xs:element name="msg:observation" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="md:source" type="xs:string"/>
<xs:element name="md:market" type="type-scheme"/>
<xs:element name="md:country" type="type-scheme"/>
<xs:element name="md:currency" type="type-scheme"/>
<xs:element name="md:pointLabel" type="xs:string"/>
<xs:element name="md:date" type="xs:date"/>
<xs:element name="md:endDate" type="type-dates_openEnded"/>
<xs:element name="md:dataPoint" type="type-dataPoint"/>
</xs:sequence>
<xs:attribute name="quoteType" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="msg:observationCount" type="xs:decimal"/>
</xs:sequence>
<xs:attribute name="xsi:type" type="xs:string" use="required"/>
</xs:complexType>
</xs:schema>
在这一行 --> xs:element name="msg:market" type="type-scheme" 我得到了错误!谁能帮忙?
【问题讨论】:
(1) 到目前为止,您共享了您的 XSD。您尝试针对该 XSD 验证的 XML 在哪里? (2) 您的 XSD 使用 msg 命名空间前缀而没有声明。这就是 XSD 为“无效”的原因。 我添加了缺失的部分但我仍然有同样的问题 【参考方案1】:我看到另一个错误:我的架构处理器告诉我name="msg:messageId"
无效。您自始至终都使用了这个结构,所以我看到了很多错误,这可能掩盖了您的处理器给您的错误。
XSD 中的 name 属性始终是不合格的本地名称;当您声明组件时,它们会隐式进入架构文档的 targetNamespace,或者(如果 form="unqualified"
)没有命名空间。
【讨论】:
以上是关于XSD 架构错误:XmlSchema 错误:元素 http://www.w3.org/2001/XMLSchema:element 在此上下文中无效的主要内容,如果未能解决你的问题,请参考以下文章