referenz auf vorhandenes element, geht das ?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • referenz auf vorhandenes element, geht das ?

    ich möchte wenn ich ein part habe darin vorhandene elemente wie klat oder state referenzieren können
    so das ich wenn ich part auslese dann die refenzierten elemente ausgegeben bekomme
    das beispiel ist jetzt nicht komplett oder ganz richtig aber ich hoffe es reicht um mein problem zu beschreiben

    ist so etwas in der art möglich

    Quellcode

    1. <xsd:element name="zp">
    2. <xsd:complexType>
    3. <xsd:sequence>
    4. <xsd:choice>
    5. <xsd:element name="klat" type="klatType"/>
    6. <xsd:element name="state" type="stateType"/>
    7. <xsd:element name="part" type="partType"/>
    8. </xsd:choice>
    9. </xsd:sequence>
    10. </xsd:complexType>
    11. </xsd:element>
    12. <xsd:complexType name="klatType">
    13. <xsd:sequence>
    14. <xsd:element name="gg" type="ggs" minOccurs="1" maxOccurs="unbounded"/>
    15. <xsd:element name="ff" type="ffs" minOccurs="0" maxOccurs="unbounded"/>
    16. <xsd:element name="part" type="" minOccurs="0" maxOccurs="unbounded"/>
    17. </xsd:sequence>
    18. <xsd:attribute name="name" type="xsd:NMTOKEN" use="required"/>
    19. </xsd:complexType>
    20. <!--========================================================================-->
    21. <xsd:complexType name="partType">
    22. <xsd:sequence>
    23. <!-- hier sollen dann referenzen auf typen stehen, wie z.b. auf klat -->
    24. </xsd:sequence>
    25. <xsd:attribute name="name" type="xsd:NMTOKEN" use="required"/>
    26. </xsd:complexType>
    Alles anzeigen



    dann hätte ich noch eine frage, ich möchte einschränkungen einführen, wie z.b. wenn group="scalar" dann muss dimension="0" sein
    und wenn array dann z.b. dimension nur die werte 1, 2 ,3

    kann mir jemand bitte helfen


    Quellcode

    1. <xsd:attribute name="group" use="required">
    2. <xsd:simpleType>
    3. <xsd:restriction base="xsd:NMTOKEN">
    4. <xsd:enumeration value="scalar"/>
    5. <xsd:enumeration value="array"/>
    6. <xsd:enumeration value="table"/>
    7. <xsd:enumeration value="distribution"/>
    8. </xsd:restriction>
    9. </xsd:simpleType>
    10. </xsd:attribute>
    11. <xsd:attribute name="dimension" use="optional" default="0">
    12. <xsd:simpleType>
    13. <xsd:restriction base="xsd:integer">
    14. <xsd:enumeration value="0"/>
    15. <xsd:enumeration value="1"/>
    16. <xsd:enumeration value="2"/>
    17. </xsd:restriction>
    18. </xsd:simpleType>
    19. </xsd:attribute>
    Alles anzeigen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von diego86 ()

  • Ich kann dir bei der 1. Frage nicht ganz folgen, aber du kannst an dieser Stelle sicher ein Element definieren das den klatType als complexType besitzt. Möchtest du stattdessen die Eigenschaften von klatType in partType übernehmen dann kannst du dir ja mal das xsd:extension-Element anschauen.

    Zur 2. Frage:
    Ich glaube das war einer der Nachteile von XMLSchema (im Vergleich zu z.B. RelaxNG). Ich würde es so versuchen:

    Quellcode

    1. <xsd:choice>
    2. <xsd:element name="ABC" type="dimensionType"/>
    3. <xsd:element name="ABC" type="scalarType"/>
    4. </xsd:choice>

    Zweimal das Element definieren aber mit unterschiedlichen Complex-Types. Dort musst du dann die unterschiedlichen Attribut-Typen definieren.
  • ich hoffe ich kann das so etwas verständlicher erklären was ich meine
    zu frage 1

    Quellcode

    1. <zp>
    2. <klat name="hallo">
    3. <gg name="jjjj"/>
    4. <klat/>
    5. <klat name="hallo2">
    6. <gg name="pppp"/>
    7. <klat/>
    8. <!-- und wenn ich nun ein part habe sollen z.b. die schon vorhandenen elemente wie klat hallo oder hallo2 durch eine referenz oder etwas ähniches
    9. sich auch in part darstellen lassen, ich weiß nicht wie vlt über ein attribut/element id was genau zu geordnet werden kann oder so -->
    10. <part name="part1">
    11. <!-- refrenz auf das bestehende element klat mit dem namen hallo -->
    12. <part/>
    13. <zp/>
    Alles anzeigen


    sorry aber ich verstehe die antwort zur 2. frage nicht ganz

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von diego86 ()

  • meinst du das vlt so

    Quellcode

    1. <xsd:complexType name="neuType">
    2. <xsd:sequence>
    3. <xsd:choice>
    4. <xsd:element name="scalar" type="scalarType"/>
    5. <xsd:element name="array" type="arrayType"/>
    6. </xsd:choice>
    7. </xsd:sequence>
    8. <xsd:complexType/>
    9. <xsd:complexType name="arrayType">
    10. <xsd:attribute name="dimension" use="required" default="0">
    11. <xsd:simpleType>
    12. <xsd:restriction base="xsd:integer">
    13. <xsd:enumeration value="1"/>
    14. <xsd:enumeration value="2"/>
    15. </xsd:restriction>
    16. </xsd:simpleType>
    17. </xsd:attribute>
    18. </xsd:complexType>
    19. <xsd:complexType name="scalarType">
    20. <xsd:attribute name="dimension" use="required" default="0">
    21. <xsd:simpleType>
    22. <xsd:restriction base="xsd:integer">
    23. <xsd:enumeration value="0"/>
    24. <xsd:enumeration value="1"/>
    25. </xsd:restriction>
    26. </xsd:simpleType>
    27. </xsd:attribute>
    28. </xsd:complexType>
    Alles anzeigen
  • @ 2. Frage
    Im Prinzip schon, aber es fehlt natürlich noch das Attribut group in den 2 complexTypes sowie alles was sonst noch rein soll.

    @ 1. Frage:
    Mal ehrlich, würdest du deinen eigenen Satz verstehen, wenn du nicht wüsstest, was du willst?
    und wenn ich nun ein part habe sollen z.b. die schon vorhandenen elemente wie klat hallo oder hallo2 durch eine referenz oder etwas ähniches sich auch in part darstellen lassen, ich weiß nicht wie vlt über ein attribut/element id was genau zu geordnet werden kann oder so