php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > XML
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


XML Hier passt alles rein, was das Thema XML (XSLT, JSON etc...) betrifft, auch in Verbindung mit PHP

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 06-08-2003, 11:47
flatauge
 Newbie
Links : Onlinestatus : flatauge ist offline
Registriert seit: Jul 2003
Beiträge: 10
flatauge ist zur Zeit noch ein unbeschriebenes Blatt
Standard XML Schema

Hallo zusammen

es geht um Folgendes:

ich hab einen complex Type "TeleType" definiert mit drei verschiedenen Elementen: Länderkennung, Netzugang und Rufnummer.
Als Plausibilisierung ist verlangt, dass wenn eins der drei Elemente auftritt dass die anderen beiden nicht leer bleiben dürfen!

Mein bisheriger Ansatz sieht folgendermaßen aus:
<xs:complexType name="TeleType">
<xs:all>
<xs:element name="CC" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:totalDigits value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="NDC" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:totalDigits value="5"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="SN" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:totalDigits value="10"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:all>
</xs:complexType>

Mit der all-Gruppe hab ich erhofft die Anforderung um gesetzt zu haben aber es klappt irgendwie nicht. Das Instanzdokument ist auch dann validiert wenn 1 der 3en fehlt

Danke für jede Hilfe

Flat
Mit Zitat antworten
freelancermap.de - IT Projektvermittlung für Selbständige und Freiberufler
  #2 (permalink)  
Alt 07-08-2003, 01:52
Blaster
 PHP Junior
Links : Onlinestatus : Blaster ist offline
Registriert seit: Nov 2001
Ort: Köln
Beiträge: 970
Blaster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi flatauge,

willkommen in der Community!
Interessant:
registriert seit Jul 03
1 Post vom 6.8.03

Bist Du schüchtern... (kl. Scherz)

Zum Thema - Mein Vorschlag;
PHP-Code:
<xs:complexType name="TeleType" minOccurs="0" maxOccurs="1" >
  <
xs:complexContent>
    <
xs:element name="CC" minOccurs="1">      
        <
xs:restriction base="xs:integer">
          <
xs:totalDigits value="3"/>
        </
xs:restriction>
      </
xs:simpleType>
   </
xs:element>
   <
xs:element name="NDC" minOccurs="1">
     <
xs:restriction base="xs:integer">
       <
xs:totalDigits value="5"/>
     </
xs:restriction>
   </
xs:element>
   <
xs:element name="SN" minOccurs="1">
     <
xs:restriction base="xs:integer">
       <
xs:totalDigits value="10"/>
     </
xs:restriction>
   </
xs:element>
  </
xs:complexContent>
</
xs:complexType
all erlaubt nur, dass jede Teilmenge der Elemente die definiert sind, in jeder beliebigen Reihenfolge erscheinen darf, mit minoccurs=0 undmaxoccurs=1. Keine Aussage über den ComplexContent.
Setz den minOccurs der Elemente doch auf eins.

Vielleicht wäre auch ein Polymorphismus eines Basis-Elements unter xs sinnvoll. Kenne den Rest nicht

cu

Blaster
__________________
Yuppi, endlich Elite ...

Geändert von Blaster (07-08-2003 um 02:04 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 07-08-2003, 09:43
flatauge
 Newbie
Links : Onlinestatus : flatauge ist offline
Registriert seit: Jul 2003
Beiträge: 10
flatauge ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Guten Morgen Blaster

bitte genau hinschauen registriert seit dem 31-07-2003!
Die paar Tage kannste mir doch kein Strick draus ziehen!

Wie dem auch sei, zurück zum Thema:

Erst mal Danke. Deinen Ansatz hatte ich auch schon in Erwägung gezogen, aber es bildet nicht die Abhängigkeiten der einzelnen Elemente untereinander ab. Mittlerweile denke ich das so eine höre Plausi gar nicht modellierbar ist im XML Schema.

Deine Lösung ist zumindest besser als meine all-Gruppe. Schließlich macht die Reihenfolge eine TelefonNr aus! Bei wem ruf ich denn sonst an?

>Vielleicht wäre auch ein Polymorphismus eines Basis-Elements unter xs sinnvoll.

Was meinst Du damit?

Cu Flat
Mit Zitat antworten
  #4 (permalink)  
Alt 07-08-2003, 20:58
Blaster
 PHP Junior
Links : Onlinestatus : Blaster ist offline
Registriert seit: Nov 2001
Ort: Köln
Beiträge: 970
Blaster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von flatauge
...Deine Lösung ist zumindest besser als meine all-Gruppe. Schließlich macht die Reihenfolge eine TelefonNr aus! Bei wem ruf ich denn sonst an?
Ach so! ... Telefonnummern!
That´s overkill, Master!
PHP-Code:
<simpleType name="MeineZusammenfassung">
   <
union memberTypes="string int"/>
</
simpleType>

<
simpleType name="TeleType">
  <
union>
    
    <
simpleType name="InternationaleTelefonnummer">
      <
restriction base="string"/>
         <
pattern value="+[0-9]{2} (0)[0-9]{4} [0-9]{4-10}"/>
         <!-- 
z.B. +44 (0)5678 1202440055 -->
      </
restriction>
    </
simpleType>
    
    <
simpleType name="NationaleTelefonnummer">
      <
restriction base="string"/>
         <
pattern value="([0-9]{5}) [0-9]{4-10}"/>
         <!-- 
z.B. (056781202440 -->
      </
restriction>
    </
simpleType>
    
  </
union>
</
simpleType
Zitat:
Original geschrieben von flatauge
... Was meinst Du damit?
Polymorphismus liegt dann vor, wenn Instanzen unterschiedlicher Typen gleich behandelt werden können. XML Schema bietet zwei Mechanismen für die Aktivierung - Vererbung und Substitutionsgruppen.

cu

Blaster
__________________
Yuppi, endlich Elite ...

Geändert von Blaster (07-08-2003 um 21:06 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 11-08-2003, 12:40
flatauge
 Newbie
Links : Onlinestatus : flatauge ist offline
Registriert seit: Jul 2003
Beiträge: 10
flatauge ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Halloo

ich seh nicht den zusammenhang zwischen MeineZusammenfassung und dem Rest?
Wo zu brauchst Du MeineZusammenfassung??

Dann noch eine Grundsätzliche Frage:
Wie muss ich Elemente im XML Schema verstehen, sind sie jeweils für ein Eingabefeld zu denken oder muss das nicht zwangsläufig der Fall sein?!
Meine Frage kommt daher weil ich ein Dialogeingabe in HTML als Vorlage habe und das in XML modelliere.

Also Deine TeleType Konstruktion sieht ganz OK aus, jedoch hab ich so meine Probleme damit.
1. relevant ist für mich nur die Internationale, Nationale spielen keine Rolle mit der ersten decke ich auch die Nationale ab. Muss ich dann Union weglassen? Bestimmt, oder? Oder bezieht sich das Union auch auf MeineZusammenfassung?
2. wie schon oben erwähnt: Im HTML Formular hab ich 3 Felder einmal für Länderkennung (2-stellig), Netzzugang (5-stellig) und Rufnummer (10-stellig). Kann ich auch in diesem Fall Dein Schema verwenden um die TelefonNr richtig abzubilden.

Danke!!!

FLat
Mit Zitat antworten
  #6 (permalink)  
Alt 11-08-2003, 22:47
Blaster
 PHP Junior
Links : Onlinestatus : Blaster ist offline
Registriert seit: Nov 2001
Ort: Köln
Beiträge: 970
Blaster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von flatauge
Wo zu brauchst Du MeineZusammenfassung??.
Die erste Typendefinition verwendet memberTypes, um die Typen aufzulisten, die in der Union enthalten sind.
Die Elemente können string- und int- Elemente enthalten.

Zitat:
Original geschrieben von flatauge
Dann noch eine Grundsätzliche Frage:
Wie muss ich Elemente im XML Schema verstehen, sind sie jeweils für ein Eingabefeld zu denken oder muss das nicht zwangsläufig der Fall sein?!
Meine Frage kommt daher weil ich ein Dialogeingabe in HTML als Vorlage habe und das in XML modelliere.
Die Validierung erfolgt beim Parsen. Wie die Werte gebildet werden - ob Du sie durch Stringaddition nachträchlich aus Formeingaben erstellst oder direkt eingibst - ist dabei unerheblich.

Zitat:
Original geschrieben von flatauge
1. relevant ist für mich nur die Internationale, Nationale spielen keine Rolle mit der ersten decke ich auch die Nationale ab. Muss ich dann Union weglassen? Bestimmt, oder? Oder bezieht sich das Union auch auf MeineZusammenfassung?
Wenn Du keine Substitutionsgruppe benötigst. Weg damit - bilde aus base="sting", base="string int">

Zitat:
Original geschrieben von flatauge
2. wie schon oben erwähnt: Im HTML Formular hab ich 3 Felder einmal für Länderkennung (2-stellig), Netzzugang (5-stellig) und Rufnummer (10-stellig). Kann ich auch in diesem Fall Dein Schema verwenden um die TelefonNr richtig abzubilden.
Ja! - 1000,- € Lizenzgebühren (kl. Scherz!)

cu

Blaster
__________________
Yuppi, endlich Elite ...
Mit Zitat antworten
  #7 (permalink)  
Alt 14-08-2003, 15:02
flatauge
 Newbie
Links : Onlinestatus : flatauge ist offline
Registriert seit: Jul 2003
Beiträge: 10
flatauge ist zur Zeit noch ein unbeschriebenes Blatt
Standard Danke:)

Zitat:
Die erste Typendefinition verwendet memberTypes, um die Typen aufzulisten, die in der Union enthalten sind. Die Elemente können string- und int- Elemente enthalten.
Aber Du verwendest nur String oder? Daher meine Frage. Ist da nicht MeineZusammenfassung nicht überflüssig?
Oder braucht man sie damit nur die Möglichkeit sicher gestellt das base"string int" verwendet werden kann?

---------- --------- --------- ---------- -----------

Eine Neue Frage


PHP-Code:
<xs:element name="Einzelpreis" minOccurs="0">
                                    <
xs:simpleType>
                                        <
xs:restriction base="xs:decimal">
                                            <
xs:totalDigits value="6"/>
                                            <
xs:fractionDigits value="2"/>
                                        </
xs:restriction>
                                    </
xs:simpleType>

         </
xs:element
Zu dem obigen Einzelpreis will ich ein Währungsattribut anfügen. Aber leider ist das mit der Restriction nicht zu vereinbaren. Es verlangt eine vorhergehende Extension. Mein Problem: Restriction schließt Extension aus??
Mit Zitat antworten
  #8 (permalink)  
Alt 15-08-2003, 20:17
Blaster
 PHP Junior
Links : Onlinestatus : Blaster ist offline
Registriert seit: Nov 2001
Ort: Köln
Beiträge: 970
Blaster ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: Danke:)

Zitat:
Original geschrieben von flatauge
Aber Du verwendest nur String oder? Daher meine Frage. Ist da nicht MeineZusammenfassung nicht überflüssig?
Oder braucht man sie damit nur die Möglichkeit sicher gestellt das base"string int" verwendet werden kann?
Ja, das weiß ich nicht, ob Du Ziffern oder Zahlen brauchst.
Nach der Ableitung ist internaleTelefonnummer weiterhin vom
Typ 'string int' auch wenn die Restriction vom Typ 'string' ist.

---------- --------- --------- ---------- -----------
Zitat:
Original geschrieben von flatauge
Eine Neue Frage
Nicht wirklich! - Sie haben den Stoff einfach noch immer nicht verstanden, Hr. flatauge!
Zitat:
"Ein komplexer Typ ist eine logische Gruppierung von Element- und/oder Attributedeklarationen - Ein einfacher Typ kann den Datentyp beschreiben, der in einen Element oder Attribute enthalten ist."
Zitat:
Original geschrieben von flatauge
Zu dem obigen Einzelpreis will ich ein Währungsattribut anfügen. Aber leider ist das mit der Restriction nicht zu vereinbaren. Es verlangt eine vorhergehende Extension. Mein Problem: Restriction schließt Extension aus??
Nö!
PHP-Code:
<xs:element name="Einzelpreis" minOccurs="0">
             <
xs:complexContent>
                    <
xs:extension base="xs:decimal">
                        <!-- 
ob der Namespace und das Basiselement auf Dauer so geschickt gewählt ist .... -->                       
                          <
xs:element name="Waehrung" type="string">
                             <
xspattern value='[&euro;....] {1-3}' />
                          </
xs:element>
                 
                                    <
xs:simpleType>
                                        <
xs:restriction base="xs:decimal">
                                            <
xs:totalDigits value="6"/>
                                            <
xs:fractionDigits value="2"/>
                                        </
xs:restriction>
                                    </
xs:simpleType>

                   </
xs:extension>
             </
xs:complexContent>
 </
xs:element
__________________
Yuppi, endlich Elite ...

Geändert von Blaster (16-08-2003 um 12:54 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 16-08-2003, 22:29
flatauge
 Newbie
Links : Onlinestatus : flatauge ist offline
Registriert seit: Jul 2003
Beiträge: 10
flatauge ist zur Zeit noch ein unbeschriebenes Blatt
Lightbulb

Hallo, danke erstmal für Deine Mühe Herr Blaster

aber ich muss sie leider enttäuschen -> Fr. Flatauge

so nun denn:

Ich gebe zu der Unterschied zwischen complex und simple Type war mir nicht so klar. Aber jetzt!

Dennoch, Dein Schema klappt nicht wirklich, ich habs mit XMLSpy validiert und der spuckt mir nach der extension vor dem Währungselement eine Fehlermeldung! "xs:element" is unexpected at this location/ unexpected childelment. Tja das ähnlich sah auch mein Problem aus.

Abgesehen davon wollte ich mein Element im Instanzdokument wie folgt:

<Einzelpreis währung="EUR">22.22</Einzelpreis>

Mein Problem an der Stelle ist, ich begrenze die Nachkomma Stellen des Preises mit einer Restriction und will noch ein Attribut anfügen mit Extension. Jedoch vertragen sich beide nicht gleichzeitig

Was tut man da?
Mit Zitat antworten
  #10 (permalink)  
Alt 17-08-2003, 19:49
Blaster
 PHP Junior
Links : Onlinestatus : Blaster ist offline
Registriert seit: Nov 2001
Ort: Köln
Beiträge: 970
Blaster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von flatauge
...aber ich muss sie leider enttäuschen -> Fr. Flatauge
Opps! - Sorry!
Zitat:
Original geschrieben von flatauge
Dennoch, Dein Schema klappt nicht wirklich, ich habs mit XMLSpy validiert und der spuckt mir nach der extension vor dem Währungselement eine Fehlermeldung! "xs:element" is unexpected at this location/ unexpected childelment. Tja das ähnlich sah auch mein Problem aus.
Wundert mich gar nicht ... war einfach zuviel 'Pfusch am Bau'
... Motto: "xs:decimal" ist ehe Sch**** und damit sowieso auch kein ComplexType.
Aber wenigstens vernünftiges Werkzeug bei der Arbeit (XMLSpy)!
Zitat:
Original geschrieben von flatauge
Abgesehen davon wollte ich mein Element im Instanzdokument wie folgt:
<Einzelpreis währung="EUR">22.22</Einzelpreis>

Mein Problem an der Stelle ist, ich begrenze die Nachkomma Stellen des Preises mit einer Restriction und will noch ein Attribut anfügen mit Extension. Jedoch vertragen sich beide nicht gleichzeitig

Was tut man da?
Das wird mir jetzt aber langsam ein wenig zu nooby...
Da Du erst seit kurzem Mitglied bist, kann ich auch deine Skills nicht einzätzen...
Zitat:
XML Schema ist wie die meisten XML Schlüsselspezifikationen und - standards ein direktes Abbild von OOT´s. D.h. die meisten Sprach- und semantische Elemente von OO-Programmiersprachen wie z.B. Java, C++ und C# flossen direkt in XML Schema mit ein. Ohne Verständnis der OO oder deren Kenntnis ist XML Schema schwer anwendbar:
PHP-Code:

<complexType name="Preise" abstract="true">
      <
complexContent>
           <
restriction base="decimal">
                <
totalDigits value="6"/>
                <
fractionDigits value="2"/>
          </
restriction>
     </
complexContent>
</
complexType>

<
element name="Einzelpreis">
   <
complexContent>
       <
extension base="Preise">
           <
simpleType>
               <
attribute name="Waehrung" type="string">
                     <
pattern value='[&euro;....] {1-3}' />
              </
attribute>
            </
simpleType>
       </
extension>
   </
complexContent>
</
element
Hier wurde von mir die abstrakte Basisklasse Preise erstellt, so wie sie in Java mit den Begriff abstract oder in C++ durch die Deklaration einer sog. rein virtuellen Funktionen erstellt wird. D.h.: von diese Klasse kann keine Instanz erstellt werden, sondern nur von deren Ableitungen.
Die Ableitung des Elementes Einzelpreis ist vergleichbar der Ableitung z.b. in c++: class Einzelpreis : public Preise { ... vergleichbar
oder class Einzelpreis extends Preise { ... in PHP.

Alles in den Namespace 'xs' zu schreiben ist, wie ein gesamtes Programm in main() statt in Klassen.. Genau wie in den OO-Hochsprache, dient der namespace als freie Zusammenfassung und Zuweisung von Objektgruppen. Vielleicht wäre z.B. de Deklaration xmlns:vt="urn:Kosten" sinvoll. => base="vt:Preise"

Somit ist auch ein xsd eine Objektgruppe, für die Validierung verwendet man aber über die Bildung deren Instanz xsi. Deshalb funktioniert eine Validierung mit XML Schema meistens in der Form <Einzelpreise xsi:type="vt:waehrung"> .
Ich weiß nicht, wozu Du XML Schema brauchst, aber es ist ein komplexer Standard. Vielleicht kaufst Du Dir mal ein gutes Buch....

cu

Blaster
__________________
Yuppi, endlich Elite ...
Mit Zitat antworten
  #11 (permalink)  
Alt 17-08-2003, 23:39
flatauge
 Newbie
Links : Onlinestatus : flatauge ist offline
Registriert seit: Jul 2003
Beiträge: 10
flatauge ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi,

genau die Lösung hatte ich mir auch überlegt, aber leider hat ichs nicht so durchdacht für die Umsetzung. Klasse von Dir

Apropos Klasse(n), mir war die OO Sichtweise hier nicht so klar.
Aber mit Deinen Erklärungen leuchtet mir der Zusammenhang ein.
Mir ist durchaus die Basis für die OOP geläufig.

Bisher hab ich den XML Schema Primer vom www.w3.org nur als Stütze, falls Du andere Quellen als Empfehlungen hast, nur raus damit.

Ach ja noch was: Du hast doch nicht etwa zufällig eine Verwandschaft mit dem msBlaster Worm, ooder? (Sorry, kleiner Joke)
Mit dem hatte ich heute zum 2ten Mal meinen Spass, dacher meine unverschämte Assoziation mit Deinem Synonym

Danke nochmals

Gute N8

Flat
Mit Zitat antworten
  #12 (permalink)  
Alt 18-08-2003, 17:52
Blaster
 PHP Junior
Links : Onlinestatus : Blaster ist offline
Registriert seit: Nov 2001
Ort: Köln
Beiträge: 970
Blaster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von flatauge
Ach ja noch was: Du hast doch nicht etwa zufällig eine Verwandschaft mit dem msBlaster Worm, ooder? (Sorry, kleiner Joke)
Mit dem hatte ich heute zum 2ten Mal meinen Spass, dacher meine unverschämte Assoziation mit Deinem Synonym
Tja, das kommt darauf an von welcher Fraktion Du kommst :

Nach Leuten von der Ersten werden Stadte, Schule, Strassen und Krankenhäuser benannt...

Nach Leute der Zweiten Hariikans, Viren, Strahlenwaffen und Krachmacher... Also alles was "konstruktiv" ist .
__________________
Yuppi, endlich Elite ...
Mit Zitat antworten
  #13 (permalink)  
Alt 24-08-2003, 12:33
Blaster
 PHP Junior
Links : Onlinestatus : Blaster ist offline
Registriert seit: Nov 2001
Ort: Köln
Beiträge: 970
Blaster ist zur Zeit noch ein unbeschriebenes Blatt
Exclamation

In der aktuellen c´t 18/03 S.190-195 ist eine gute Einführung in XML-Schema, XSL(T), XPath, DTD erscienen:

"Für Menschen und Maschinen- Vom leichtn Umgang mit XML Dokumenten"

....
__________________
Yuppi, endlich Elite ...
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

PHP Marktplatz-Software
PHP Marktplatz-SoftwareEs hat sich viel getan! Die neue Version 7.5.9 unserer PHP Marktplatz-Software ebiz-trader steht ab sofort zur Verfügung.

28.10.2019 | Berni

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni


 

Aktuelle PHP Scripte

SMT

Server Monitoring & Management Tool Das SMT wurde von einem Administrator für Administratoren entwickelt, es vereinfacht den Alltag in der klassischen Administration und Verwaltung. Mit dem SMT kannst Du alle Deine Server & Dienste verwalten und überwach

04.09.2020 palle_1977 | Kategorie: PHP
numaeks Web-Farbmixer

Die RGB-Farben lassen sich hier auf unterschiedliche Weise mischen. Zur Einstellung werden auch die Dreh- und Schieberegler mit Canvas verwendet. Gespeichert werden die Farben in einem Cookie.

04.09.2020 numaek | Kategorie: JAVASCRIPT/ Tools
phplinX-Erotikportal 4 ansehen phplinX-Erotikportal 4

Erweiterbares Portal speziell für Erotik mit den Modulen Webkatalog, Bannermanagement und Kleinanzeigenmarkt. Sämtliche Module können über einen einzigen Adminbereich verwaltet werden.

18.06.2020 Cosinus14 | Kategorie: PHP/ Anzeigenmarkt
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:05 Uhr.