AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

XML-Datei mit dtd Datei darstellen

Ein Thema von Luckie · begonnen am 19. Apr 2004 · letzter Beitrag vom 21. Apr 2004
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#11

Re: XML-Datei mit dtd Datei darstellen

  Alt 20. Apr 2004, 12:40
Und schon wieder was gelernt. Jetzt müsste ich auch in der Lage sein da etwas ranrumzuschrauben.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#12

Re: XML-Datei mit dtd Datei darstellen

  Alt 20. Apr 2004, 12:59
*hi hi* Du kannst ja bei Gelegenheit mal einen Blick in das Archiv im Anhang werfen. Das war harte Arbeit *schwitz* ...

Aber um auf dein Thema zurückzukommen: Ich habe bisher keine Möglichkeit gefunden, eine externe DTD nachträglich in ein XML-Dokument einzufügen. Mit Delphi, meine ich. (s. hier). Na ja, den Tipp von morbo müsste ich vielleicht noch ausprobieren.
Angehängte Dateien
Dateityp: zip simmack.zip (12,5 KB, 9x aufgerufen)
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#13

Re: XML-Datei mit dtd Datei darstellen

  Alt 20. Apr 2004, 14:51
@Luckie: Es gibt noch eine Möglichkeit der Validierung mit einem XSD-Schema. Das ist auch eine XML-Datei, die die gleiche Aufgabe wie die DTD hat, aber wohl (laut PSDK und W3C) flexibler sein soll.


Der Vorteil: Die Datei muss nicht in der XML-Adressdatenbank angegeben werden, sondern das Programm könnte die Validierung mit dem so genannten "schema cache" durchführen. Das heißt, die XSD-Datei wird wie eine XML-Datei geladen und dann an das XML-Objekt der Adressendatei übergeben. Wenn du die dann lädtst, findet der Parser ebenfalls Fehler. Ganz so wie bei der DTD. Man könnte also das XSD-Schema mit dem Programm ausliefern, oder meinetwegen auch auf dem Server ablegen.

Und du kannst sogar die Typen angeben, bspw.:
Code:
<xsd:element name="HighestID" type="xsd:decimal"/>
Würde in der XML-Datei jetzt stehen:
Code:
<HighestID>abc</HighestID>
dann schimpft der Parser:
Zitat:
Fehler beim Analysieren von 'abc' als decimal-Datentyp.
Das Element 'HighestID' hat gemäß seinem Datentyp einen ungültigen Wert.
Der Nachteil: Es läuft auf Namespaces hinaus. Zumindest ist das mein momentaner Eindruck als totaler XSD-Laie. Damit das Schema auch Fehler findet, muss die XML-Datei ein bisschen erweitert werden, bspw.
Code:
<[b]x[/b]:adressdb xmlns:[b]x[/b]="urn:adressdb">
 
</[b]x[/b]:adressdb>
(Die Angaben kann man IMHO frei wählen, aber dennoch: ) Mal gucken ob´s nicht noch einfacher geht. Vielleicht ist ja auch wer hier, der sich mit XSD auskennt?


Edit: Ich glaube ich hab´s (s. Anhang).
Angehängte Dateien
Dateityp: zip xsd-validierung.zip (2,3 KB, 10x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#14

Re: XML-Datei mit dtd Datei darstellen

  Alt 21. Apr 2004, 05:47
So. Ich habe es jetzt geschaft die "Direktwahl" der XML-Datei mit xsl:sort zu sortieren:
XML-Code:


[b]Direktwahl[/b]:


          <xsl:for-each select="Kontakt">
          <xsl:sort select="concat(Name, Vorname)">
          </xsl:sort>
            <!-- für den Fall, dass es mehrere identische Namen gibt
                wird noch die aktuelle Position in die Sprungmarke
                 eingefügt -->

            <a href="#{Vorname}_{Name}:{position()}">
              <xsl:value-of select="Name"/> <xsl:value-of select="Vorname"/> <xsl:value-of select="Firma"/>
            </a>


          </xsl:for-each>
Nur leider klappen dann nicht mehr alle Links. Mathias, weißt du was da los ist und wie man das beheben kann? Eine alternative Möglichkeit zum sortieren, würde ich auch akzeptieren.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#15

Re: XML-Datei mit dtd Datei darstellen

  Alt 21. Apr 2004, 07:57
Na ja, der Anker auf der Seite setzt sich doch zusammen aus dem Vornamen, dem Namen und der Position, also bspw.
Code:
#Mathias_Simmack:666
Durch die Sortierung
Code:
<xsl:if test="count(child::Kontakt)&gt;0">
 

[b]Direktwahl[/b]:


    <xsl:for-each select="Kontakt">
      <xsl:sort select="concat(Name, Vorname)"/>
      <a href="#{Vorname}_{Name}:{position()}">
        <xsl:value-of select="Name"/> <xsl:value-of select="Vorname"/> <xsl:value-of select="Firma"/>
      </a>


    </xsl:for-each>
 
</p><hr size="1"/>
</xsl:if>
ändert sich aber die Reihenfolge der Knoten und damit natürlich auch deren Position. Du musst also beim Aufruf des Templates "Kontakt" auch noch mal für die gleiche Sortierung sorgen
Code:
<xsl:apply-templates select="Kontakt">
  <xsl:sort select="concat(Name, Vorname)"/>
</xsl:apply-templates>
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#16

Re: XML-Datei mit dtd Datei darstellen

  Alt 21. Apr 2004, 11:10
Ok. Ich verstecke mich dann für den Rest des Vormittages únter dem Schreibtisch. Falls mich jemand sucht, ich bin in der Ecke hinten links.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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 aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz