我找不到尝试不同的问题。我真的很感激任何帮助。 我有一个有效的.xsd文件,但更改了xml的某些部分,现在我无法使其有效,我没有发现错误。错误消息如下。有人看到那里有什么问题吗?异常开始,属性序列开始。
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:Projekt1" xmlns:proj="urn:Projekt1">
<xs:element name="projekte" type="proj:ProjekteForm"/>
<xs:complexType name="ProjekteForm">
<xs:sequence>
<xs:element name="person" type="proj:ProjekteForms" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ProjekteForms">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="link" type="xs:string"/>
<xs:element name="zhaw" type="xs:string"/>
<sequence>
<xs:attribute name="width" type="xs:integer"/>
<xs:attribute name="height" type="xs:integer"/>
</sequence>
<xs:element name="homepage" type="xs:string"/>
<xs:element name="googlemapsx" type="xs:float"/>
<xs:element name="googlemapsy" type="xs:float"/>
<xs:element name="facebook" type="xs:string"/>
<xs:element name="skype" type="xs:string"/>
<xs:element name="twitter" type="xs:string"/>
</xs:sequence>
<xs:attribute name="id" type="xs:integer"/>
</xs:complexType>
</xs:schema>
这里的内容是什么意思?在文档的另一个地方,它也是这样的。
消息:
无效。
错误 - 第16,52行:org.xml.sax.SAXParseException; lineNumber:16; columnNumber:52; s4s-elt-must-match.1:'sequence'的内容必须匹配(注释?,(element | group | choice | sequence | any))。从:attribute开始发现问题。
错误 - 第17,53行:org.xml.sax.SAXParseException; lineNumber:17; columnNumber:53; s4s-elt-must-match.1:'sequence'的内容必须匹配(注释?,(element | group | choice | sequence | any))。从:attribute。
编辑: 也许如果我上传xml也很有帮助。但问题只是关于.xsd的有效性。
<?xml version="1.0" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="Projekt1.xsl" xmlns:x="urn:Projekt1" exclude-result-prefixes="x"?>
<x:projekte xmlns:x="urn:Projekt1">
<person id= "1">
<name>Franz Mommar</name>
<link>http://www.dfki.de/~wahlster/Portrait_Photos/</link>
<zhaw width="100" height="100">Portrait_Wahlster_Photo_by_Jim_Rakete.jpg</zhaw>
<homepage>http://www.werni.ch</homepage>
<googlemapsx>285.2342</googlemapsx>
<googlemapsy>234.3598</googlemapsy>
<facebook>franzmoammar</facebook>
<skype>franz.moammar</skype>
<twitter>franzmoammar</twitter>
</person>
<person id= "2">
<name>Rüdiger Mannheim</name>
<link>http://www.dfki.de/~wahlster/Portrait_Photos/</link>
<zhaw width="100" height="100">Wahlster_Anschnitt_gross.jpg</zhaw>
<homepage>http://www.humor.li</homepage>
<googlemapsx>45.2342</googlemapsx>
<googlemapsy>32.3598</googlemapsy>
<facebook>rüdigermann</facebook>
<skype>ruedi</skype>
<twitter>geronimo</twitter>
</person>
</x:projekte>
答案 0 :(得分:1)
如错误消息中所述,<sequence>
元素不能包含任何<attribute>
元素。另外,看例如these docs,<sequence>
不应直接嵌套在<element>
。
此外,您的<sequence>
元素缺少xs
命名空间前缀。
至于解决方案,请将<sequence>
替换为<xs:complexType>
,您应该没问题。
编辑:实际上,我不确定你的属性应该去哪里:
ProjekteForms
类型的属性吗?在这种情况下,请将它们与您的id
属性一起放在该复杂类型定义的末尾。<zhaw>
元素的属性?您的示例Xml建议这样做,但在您的XSD中,您对<zhaw>
的定义并未包含具有属性的序列,因为您正在使用元素的单标记形式。将<xs:element name="zhaw" type="xs:string"/>
替换为<xs:element name="zhaw">...</xs:element>
(具有内部属性的复杂类型)。请注意,您必须省略type
属性,因为已包含的<xs:complexType>
元素已指定了类型。要允许文字内容,请将属性mixed="true"
添加到<xs:complexType>
元素。后一种解决方案如下所示:
<xs:element name="zhaw">
<xs:complexType mixed="true">
<xs:attribute name="width" type="xs:integer"/>
<xs:attribute name="height" type="xs:integer"/>
</xs:complexType>
</xs:element>
答案 1 :(得分:0)
您的XSD中不能包含一系列属性。可能需要将zhaw
定义为complexType
simpleContent
,http://msdn.microsoft.com/de-de/library/ms256106.aspx
<xs:element name="zhaw">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="width" type="xs:integer"/>
<xs:attribute name="height" type="xs:integer"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>