Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » HTML / XML / XHTML » Problem bei Erstellung eines XML-Schemas

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
14.09.2006, 15:58 Uhr
Tommyknocker1980



Hallo,

ich möchte für folgende beiden Dateien ein einziges XML-Schema entwerfen.

Eingangsdatei.xml

Code:

<Root>
  <Control attr="1">
    <Client>
      ...
    </Client>
    <Language>german</Language>
  </Control>
  <Request>
    ...
  </Request>
</Root>




Ausgabedatei.xml

Code:

<Root>
  <Control>
    <Server>
      ...
    </Server>
    <Status>completed</Status>
  </Control>
  <Result>
    ...
  </Result>
</Root>




Die Problematik
Das Tag <Control> besitzt einmal ein Attibut "attr" und hat als Untertags <Client> und <Language>. In der Ausgabedatei ist das Attribut nicht vorhanden und als Untertags sind <Server> und <Status> vorhanden.
Weiterhin unterscheiden sich die beiden Dateien nach dem Tag <Control>, einmal folgt ein <Request> und einmal ein <Result>.

Nachfolgend meine Idee:


Code:

<xs:element name="Root">
  <xs:complexType>
    <xs:sequence>
      <xs:choice>
        <xs:group ref="ClientGroup"/>
        <xs:group ref="ServerGroup"/>
      </xs:choice>
    </xs:sequence>
   </xs:complexType>
</xs:element>

<xs:group name="ServerControlGroup">
  <xs:sequence>
    <xs:element name="Control" type="ControlServerType"/>
    <xs:element ref="Result"/>
  </xs:sequence>
</xs:group>

<xs:group name="ClientControlGroup">
  <xs:sequence>
    <xs:element name="Control" type="ControlClientType"/>
    <xs:element ref="Request"/>
  </xs:sequence>
</xs:group>


<xs:complexType name="ControlClientType">
  <xs:sequence>
    <xs:element name="Client">
      ...
    </xs:element>
    <xs:element Name="Language" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

<xs:complexType name="ControlServerType">
  <xs:sequence>
    <xs:element name="Server">
      ...
    </xs:element>
    <xs:element Name="Status" type="xs:string"/>
  </xs:sequence>
</xs:complexType>




Beim Speichern des Schemas erhalte ich vom XML-Editor jedoch folgende Fehlermeldung:

Zitat von Verfasser:

Element 'Control' occurs more than once in the same content model but does not refer to a top-level-type definition.




Meine zweite Idee:

Code:

<xs:element name="Root">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="Control">
        <xs:complexType>
          <xs:sequence>
        <xs:choice>
          <xs:group ref="ClientControlGroup"/>
          <xs:group ref="ServerControlGroup"/>
            </xs:choice>
          </xs:sequence>
          <xs:attribute name="attr" type="xs:decimal" use="optional"/>
        </xs:complexType>
      </xs:element>
      <xs:choice>
        <xs:element ref="Result"/>
    <xs:element ref="Request"/>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>
</xs:element>




Funktioniert. Nun ist es aber möglich ein Control des Clients mit einem Request zu koppeln, dh. dies wäre eine gültige XML-Datei...


Weiterhin noch eine Frage.

Ist es möglich anhand dem Inhalt eines XML-Tags im Schema zu unterscheiden, welche weiteren Tags folgen sollen?
XML-Beispiel:

Code:

<Auto>
  <Typ>Cabrio</Typ>
  <PS>100</PS>
</Auto>


<Auto>
  <Typ>Combi</Typ>
  <PS>80</PS>
  <Dach></Dach>
</Auto>



Das Tag <Auto> besitzt kein Tag <Dach> für den Fall dass der Wert des Tags <Typ> "Cabrio" ist.

Vielen Dank für Antworten.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ HTML / XML / XHTML ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: