2013-10-13 59 views
0

我無法找到該問題的嘗試不同的東西。我非常感謝任何幫助。 我有一個有效的.xsd文檔,但更改了xml的某些部分,現在我無法得到它的有效性,我沒有找到錯誤。錯誤消息如下。有人看到那裏有什麼問題嗎?異常開始,屬性序列開始。XSD驗證 - 屬性的序列 - 例外

<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:'序列'的內容必須匹配(註釋?,(元素|序列|任何))。發現問題始於:屬性。 錯誤 - 第17,53行:org.xml.sax.SAXParseException; lineNumber:17; columnNumber:53; s4s-elt-must-match.1:'序列'的內容必須匹配(註釋?,(元素|序列|任何))。發現問題始於:屬性。

編輯: 也許,如果我還上傳了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> 

回答

1

中可以看出(實施例)如在錯誤消息指出,一個<sequence>元素不能包含任何<attribute>元件。另外,看着例如these docs,<sequence>不應該直接嵌套在<element>中。

此外,您<sequence>元素缺乏xs命名空間前綴。

至於解決辦法,以取代<xs:complexType><sequence>,你應該罰款。

編輯:其實,我不知道您的屬性應該去:

  • 他們是否應該是類型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> 
+0

我想你的解決方案,它的工作。非常感謝你!!! :) 他們應該是來自「zhaw」 - 元素的屬性。 非常感謝! – codepleb

0

你不能有屬性的順序您的XSD。 zhaw可能需要使用simpleContent被定義爲complexType如可以在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>