DDietze: XML Schema (xsd) - Element mit Attribut

ich hab da en kleines Problem. Und zwar möchte ich mir ein Element erstellen und dieses dann mit einem Attribut versehen. Im XML File soll es dann so aussehen:

<MeinElement MeinAttribut="irgendwas">...Text soll hier hin </MeinElement>

Danke schonmal für jede Hilfe

  1. Hallo,

    ich hab da en kleines Problem. Und zwar möchte ich mir ein Element erstellen und dieses dann mit einem Attribut versehen. Im XML File soll es dann so aussehen:

    <MeinElement MeinAttribut="irgendwas">...Text soll hier hin </MeinElement>

    Das ist viel zu wenig Info.
    Möchtest du dein Element von einem Typ ableiten, oder direkt als Element deklarieren.
    Welche beschränkungen soll das Attribut haben (welche Werte? (Text, ID, Nummer etc.)) Ist es ein optionales oder verpflichtedes attribut?

    Eine Möglichkeit:
    -------------------------------
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
     <xs:element name="MeinElement">
      xs:complexType
       xs:simpleContent
        <xs:extension base="xs:string">
         <xs:attribute name="MeinAttribut" type="xs:string" use="required"/>
        </xs:extension>
       </xs:simpleContent>
      </xs:complexType>
     </xs:element>
    </xs:schema>
    --------------------------------------

    Grüße
    Thomas

    1. xs:simpleContent
        <xs:extension base="xs:string">
          ..
        </xs:extension>
      </xs:simpleContent>

    2. shit ausversehen gepostet ..

      Danke erstma das du das so prompt beantwortet hast. war genau das was ich gesucht hab.

      hab ma noch ne Frage.
      Was genau bewirkt dieses simple-content bzw complex-content?
      ist mir noch nicht so ganz klar.

      xs:simpleContent
          <xs:extension base="xs:string">

      ..

      </xs:extension>
         </xs:simpleContent>

      1. Hallo,

        Danke erstma das du das so prompt beantwortet hast. war genau das was ich gesucht hab.

        hab ma noch ne Frage.
        Was genau bewirkt dieses simple-content bzw complex-content?
        ist mir noch nicht so ganz klar.

        Ich zietiere hier aus der deutschen Übersetung von "Schema Part 0: Primer": "In XML Schema gibt es eine grundlegende Unterscheidung zwischen komplexen Typen (complex types), die Elemente enthalten und Attribute tragen dürfen, und einfachen Typen (simple types), bei denen das nicht erlaubt ist."

        Angenommen dein Element wäre so definiert gewesen (eigentlich ist es ja ja so definiert):
        <xs:element name="MeinElement" type="xs:string">

        das bedeutet, dass dein Element vom einfachen Typ (simpleType)ist (string ist ein einfacher Typ).
        So ist es nicht möglich diesem Element ein Attribut zuzufügen (siehe den Zitat).

        Also habe ich eine Ableitung eines (hier anonymen) komplexen Typs von einem einfachen Typ gemacht (hiermit habe ich das eingeleitet):

        <xs:element name="MeinElement">
          xs:complexType

        </xs:complexType>
         </xs:element>

        Um festzulegen, dass das Inhaltsmodell diesen neuen Typs nur Zeichendaten und keine Elemente enthält nahm ich das simpleContent

        xs:complexType
            xs:simpleContent

        </xs:simpleContent>
        </xs:complexType>

        Dann kam die eigentliche Ableitung durch die Erweiterung des einfachen Typs 'string':

        xs:simpleContent
            <xs:extension base="xs:string">

        </xs:extension>
        </xs:simpleContent>

        Die Erweiterung selbst besteht dann aus dem Hinzufügen dein Attributs  mit einer normalen Attribut-Deklaration.

        <xs:extension base="xs:string">
             <xs:attribute name="MeinAttribut" type="xs:string" use="required"/>
            </xs:extension>

        Hoffe es hilft. ;-)

        Grüße
        Thomas

        1. jupp es hilft ^^ danke.

          Ich hab das irgendwie übersehen oder ignoriert auf der www.w3.org seite. Ich bin noch am aneignen sozusagn. Der knackpunkt war das ich nich sorecht wusste was das simplecontent is und es somitz nich angewendet hab.

          Was genau ist dann der <complexcontent> ?

          1. Hi,

            Was genau ist dann der <complexcontent> ?

            "Um festzulegen, dass das Inhaltsmodell diesen neuen Typs nur Zeichendaten und keine Elemente enthält nahm ich das simpleContent"

            Also wenn simpleContent signalisiert dass das Element nur Zeichendaten und keine Elemente als Inhalt enthält, was wird complexContent signalisieren?

            Eben.
            complexContent signalisiert also, dass das Element nur Elemente als Inhalt enthalten kann.

            Zu Unterschiedung:
            complexType und simpleType beziehen sich auf die Definition von Typen.
            complexContent und simpleContent beziehen sich auf das Inhaltsmodell von Elementen.

            Grüße
            Thomas