tutorials.de Buch-Aktion 02/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
702
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    elkassi elkassi ist offline Mitglied
    Registriert seit
    Oct 2003
    Beiträge
    22
    Hallo,

    mir fiel kein besserer Titel dafür ein. Mein Problem:

    Ich möchte folgende Struktur mittels XML-Schema beschreiben:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    <el1 lang="de">
      <el2 attr1="inhalt1">
      <el2 attr1="inhalt2">
    </el1>
     
    <el1 lang="en">
      <el2 attr1="inhalt2">
      <el2 attr1="inhalt3">
    </el1>
    wobei: Werte für attr1 sind vorgegeben (enumeration) und können sein: inhalt1, inhalt2, inhalt3
    ABER: wenn der Vaterknoten (oder evtl. das Root-Element) das (required) Attribut lang="de" hat, dann sind nur inhalt1 und inhalt2 zugelassen, bei "en" ist es inhalt2 und inhalt3, inhalt4 usw.
    Also: zulässige Attributwerte in Abhängigkeit von Werten des XML-Dokumentes definieren. Die Werte für lang sind ebenfalls vorgegeben (im Schema bekannt).

    Hat jemand eine Idee?

    Dank und Gruß
    ElKassi
     

  2. #2
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.724
    Blog-Einträge
    29
    Hallo!

    Ich denke diese Form der Validierung ist mit "normalen" XML Mitteln nicht möglich. Aber sollte diese Überprüfung (beim Schreiben/Lesen) nicht von deiner Anwendung übernommen werden?

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  3. #3
    elkassi elkassi ist offline Mitglied
    Registriert seit
    Oct 2003
    Beiträge
    22
    Ne, nicht unbedingt.

    Geht im Prinzip auch darum, einen guten XML-Editor zur Eingabe zu verwenden, welcher dann die gültigen Attributwerte zur Auswahl liefert.

    Schade, wenn XML das nicht vorsieht.
    Bei xs:selector wertet er ja auch einen xpath-Ausdruck aus, der sich auf den Kontextknoten bezieht. Mein Anwendung muss daher auch nicht auf Eindeutigkeit prüfen (bei Keys z.B.). Daher dachte ich, dass sowas hier auch möglich wäre.



    Dank und Gruß
    ElKassi
     

  4. #4
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.724
    Blog-Einträge
    29
    Hallo,

    ich bin mir jetzt gar nicht mehr so sicher ob das ganze wiklich nicht geht....
    mein Testdokument:

    data.xml:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    <?xml version="1.0"?>
    <root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="data.xsd">
        <elem lang="de">
            <subelem attr1="inhalt1"/>
            <subelem attr1="inhalt2"/>
        </elem>
        <elem lang="en">
            <subelem attr1="inhalt2"/>
            <subelem attr1="inhalt3"/>
        </elem>
    </root>

    data.xsd:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    
    <?xml version="1.0" ?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
        <xs:element name="subelem">
            <xs:complexType>
                <xs:attribute name="attr1" type="xs:string" use="required"/>
            </xs:complexType>
        </xs:element>
        <xs:element name="elem">
            <xs:complexType>
                        <xs:sequence>
                    <xs:element ref="subelem" minOccurs="0" maxOccurs="unbounded"/>
                </xs:sequence>
                <xs:attribute name="lang">
                                   <xs:simpleType>
                            <xs:restriction base="xs:string">
                            <xs:enumeration value="de"/>
                                            <xs:enumeration value="en"/>
                                        </xs:restriction>
                                    </xs:simpleType>
                </xs:attribute>
            </xs:complexType>
        </xs:element>
        <xs:element name="root">
            <xs:complexType>
                <xs:sequence>
                    <xs:element ref="elem" minOccurs="0" maxOccurs="unbounded"/>
                </xs:sequence>
            </xs:complexType>
        </xs:element>
    </xs:schema>

    Du könntest es mal damit versuchen aus dem einen Element "subelem" zwei zu machen mit jeweils anderer Attribute-Basis. Die Einschränkung von einem Element abhänig vom umgebenden Kontext (Attributwert des Parent-Elements) stelle ich mir machbar vor, auch wenn ich derweil leider nicht weis wie.

    HTH,
    Gruß Tom
    Geändert von Thomas Darimont (14.01.05 um 12:53 Uhr)
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 03.08.10, 17:08
  2. Attribute von einem XML-Schema lesen
    Von RE-DIK im Forum XML Technologien
    Antworten: 5
    Letzter Beitrag: 09.02.10, 15:10
  3. XML-Schema
    Von chriss_2oo4 im Forum XML Technologien
    Antworten: 13
    Letzter Beitrag: 13.07.08, 17:52
  4. XML - Schema
    Von downset04 im Forum XML Technologien
    Antworten: 0
    Letzter Beitrag: 04.12.05, 14:09
  5. Oracle - Tabelle von einem Schema in ein anderes Schema verschieben
    Von Plumpsi im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 15.09.04, 10:26