1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Ref an Value binden ?

Dieses Thema im Forum "XML Technologien" wurde erstellt von xrax, 28. August 2015.

  1. xrax

    xrax Erfahrenes Mitglied

    Hallo zusammen,

    ich beginne gerade ein bereits bestehendes XML-Schema zu überarbeiten.
    Diese ist als xsd erstellt worden.

    Mein Problem ist nun dass das Schema nicht ganz dem entspricht was es sollte.
    So schauts aus:

    Code (Text):
    1. <?xml version="1.0"?><xsd:schema elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    2.   <xsd:include schemaLocation="inv.xsd" />
    3.   <xsd:include schemaLocation="price.xsd" />
    4.   .
    5.   .
    6.   <xsd:element name="Packet">
    7.     <xsd:complexType>
    8.       <xsd:sequence>
    9.         <xsd:element name="MessageType">
    10.           <xsd:simpleType>
    11.             <xsd:restriction base="xsd:string">
    12.               <xsd:enumeration value="UP_INV" />
    13.               <xsd:enumeration value="UP_PRICE" />
    14.               .
    15.               .
    16.              </xsd:restriction>
    17.           </xsd:simpleType>
    18.         </xsd:element>
    19.         <xsd:element name="Message">
    20.           <xsd:complexType>
    21.             <xsd:sequence>
    22.               <xsd:choice>
    23.                 <xsd:element ref="Stock_Inv" />
    24.                 <xsd:element ref="Stock_Price" />
    25.                 .
    26.                 .
    27.              </xsd:choice>
    28.             </xsd:sequence>
    29.           </xsd:complexType>
    30.         </xsd:element>
    31.       </xsd:sequence>
    32.     </xsd:complexType>
    33.   </xsd:element>
    34. </xsd:schema>
    Hier wird aber auch eine XML als valide angenommen die den MessageType "UP_INV" und in der ref auf Stock_Price verweist.
    Das ist aber falsch. Ich möchte das es nur valide ist wenn MessageType "UP_INV" und die ref auf Stock_Inv verweist.

    Kann ich irgendwie die Referenzen an das jeweils passenden Element MessageType binden ?

    Besten Dank
    xrax
     
  2. saftmeister

    saftmeister Nutze den Saft! Premium-User

    Kannst du XSD 1.1 verwenden? Ich weiß nicht, ob ich es richtig verstanden habe, aber ich habe kürzlich schon einmal nach Konditionalen innerhalb XML-Schema gesucht und herausgefunden, dass es Assertions in XSD 1.1 gibt: http://www.w3.org/TR/xmlschema11-1/#cAssertions
     
Die Seite wird geladen...