AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML concat: Ergebnis "string" aber Knoten als Ergebnis erwünscht
Thema durchsuchen
Ansicht
Themen-Optionen

concat: Ergebnis "string" aber Knoten als Ergebnis erwünscht

Ein Thema von Neuromancer · begonnen am 23. Jun 2006 · letzter Beitrag vom 27. Jun 2006
Antwort Antwort
Neuromancer

Registriert seit: 8. Aug 2003
62 Beiträge
 
Delphi 7 Enterprise
 
#1

concat: Ergebnis "string" aber Knoten als Ergebnis

  Alt 23. Jun 2006, 08:53
Hallo zusammen,

folgendes Problem:
Hier ein Ausschnitt aus einem xsl:template, das ein anderes Template aufruft:
XML-Code:
<td class="RahmenLeistungsziffer" style="border-left:1px solid black">
  <xsl:call-template name="BuildLeistungszifferBlock">
    <xsl:with-param name="iBlockNummer" select="1" />
    <xsl:with-param name="sLeistungsziffer" select="Formular/Components/edG01_Leistungsziffer/@value" />
    <xsl:with-param name="sAnzahlBehandlungen" select="Formular/Components/edG01_AnzahlBehandlungen/@value" />
    <xsl:with-param name="sBehandlungstageWoche" select="Formular/Components/edG01_BehandlungstageWoche/@value" />
  </xsl:call-template>
</td>
<td class="RahmenLeistungsziffer" style="border-left:1px solid black">
  <xsl:call-template name="BuildLeistungszifferBlock">
    <xsl:with-param name="iBlockNummer" select="2" />
    <xsl:with-param name="sLeistungsziffer" select="Formular/Components/edG02_Leistungsziffer/@value" />
    <xsl:with-param name="sAnzahlBehandlungen" select="Formular/Components/edG02_AnzahlBehandlungen/@value" />
    <xsl:with-param name="sBehandlungstageWoche" select="Formular/Components/edG02_BehandlungstageWoche/@value" />
  </xsl:call-template>
</td>
Natürlich ist es jetzt sehr unschön, dass 4(!) Parameter übergeben werden, wo doch eigentlich einer (nämlich iBlockNummer) völlig ausgereicht hätte.
Mit concat hätte man so vorgehen können:
select="concat('Formular/Components/edG0', $iBlockNummer, '_Leistungsziffer/@value')" Nun ist es aber so, dass die Funktion "concat" mir -leider - einen String statt einem ausführbaren XPath-Befehl zurückgibt. Also liefert mir der select auch einen String (nämlich z.B. 'Formular/Components/edG01_Leistungsziffer/@value') anstatt dem Inhalt des Attributs "value" des Knotens "edG01_Leistungsziffer".

Wie bekomme ich es hin, dass der String als XPath und nicht als string interpretiert wird?

Danke für eure Hilfe.

Gruß

//Edit:
Natürlich hätte man auch so vorgehen können:
select="Formular/Components/*[$iBlockNummer + $Offset]/@value" Aber das ist schlicht und einfach grauenhaft...
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: concat: Ergebnis "string" aber Knoten als Erge

  Alt 23. Jun 2006, 13:15
Hallo Armin,

Zitat von Neuromancer:
Nun ist es aber so, dass die Funktion "concat" mir -leider - einen String statt einem ausführbaren XPath-Befehl zurückgibt.
ich würde es anders ausdrücken: du kannst für den NodeTest keine functions verwenden. Dort funktionieren functions nur im Filter.

Die Übernahme einer laufenden Nummer in den tagname bei edGnn_... hast aber nicht du verbrochen - oder? Ohne diesen Kunstfehler könntest du wahrscheinlich xsl:for-each einsetzen.

Grüße vom marabu
  Mit Zitat antworten Zitat
Neuromancer

Registriert seit: 8. Aug 2003
62 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: concat: Ergebnis "string" aber Knoten als Erge

  Alt 24. Jun 2006, 14:48
Hallo Marabu,

Zitat von marabu:
Die Übernahme einer laufenden Nummer in den tagname bei edGnn_... hast aber nicht du verbrochen - oder? Ohne diesen Kunstfehler könntest du wahrscheinlich xsl:for-each einsetzen.
hmmm...ich habe selbst lange darüber nachgedacht, ob es sich um einen "Kunstfehler" (wie du es nennst) handelt oder nicht. Ergebnis: nein, ist es nicht.

Zur Erklärung:
Die Daten in der XML-Datei sind ein 1:1-Abbild eines Delphi-Formulars wie man vielleicht unschwer erkennen kann. Bei "edGxx_usw." handelt es sich um Edits, die einer Gruppe zugeordnet sind, die aber trotz allem plan auf dem Formular liegen, also nicht in Panels oder Groupboxen organisiert sind.
Aber eben weil diese Komponenten alle in einer Ebene liegen, macht es meiner Meinung nach auch am meisten Sinn, sie in der XML-Datei in einer Ebene zu organisieren.

Das Processing über XSL soll mir lediglich erlauben, endlich unabhängig von Reports (im speziellen Fall vom Report-Builder) zu werden. Sprich: es wird hier nichts zusammengefasst, berechnet oder in tabellarischer Form festgehalten sondern lediglich am Originalformular orientiert ausdruckbar auf die Glotze gebracht. Die <td>-Tags sind lediglich an eine blinde Tabelle gebunden.

Ich hoffe, das ist nachvollziehbar. Falls du trotzdem noch die eine oder andere Anregung hast, bin ich dir - wie immer - dankbar.

Ansonsten Gruß und Dank für deine Hilfe.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: concat: Ergebnis "string" aber Knoten als Erge

  Alt 24. Jun 2006, 18:55
Hallo Armin,

natürlich ist deine Abbildung der Controls auf eine XML-Datei praktikabel - keine Frage. Als Ontologe würdest du dir aber die Frage gestellt haben: was ist die Entität und was das Attribut? Hier dein Lösungsansatz - zu Demonstrationszwecken stark vereinfacht:

XML-Code:
<edG01_Leistungsziffer/>
<edG02_Leistungsziffer/>
Mein Ansatz wäre:

XML-Code:
<edit name="edG01_Leistungsziffer"/>
<edit name="edG02_Leistungsziffer"/>
Du erkennst den Unterschied gewiss.

Freundliche Grüße

marabu
  Mit Zitat antworten Zitat
Neuromancer

Registriert seit: 8. Aug 2003
62 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: concat: Ergebnis "string" aber Knoten als Erge

  Alt 24. Jun 2006, 19:04
Zitat von marabu:
Du erkennst den Unterschied gewiss.
Klar sehe ich den...

Nur: wo genau ist da der Vorteil? Die Schwierigkeit, einen ganz bestimmten Knoten anzusprechen, hat sich hier nicht vereinfacht, sondern lediglich verschoben, oder habe ich etwas Wichtiges übersehen? Die Methode, über xsl:for-each durchzuiterieren birgt die gleiche Hürde, nämlich mit xsl:if/xsl:choose den Knoten herauszufinden, den ich benötige...
Ich bin leider gesundheitlich etwas angeschlagen, das "Brett vor dem Kopf" will ich also mal lieber nicht ausschließen...

Gruß und danke für deine Anregungen.

//Edit:
Man darf auch nicht den Value vergessen, der ja ebenfalls mitgespeichert wird:

XML-Code:
<edG01_Leistungsziffer value="foo"/>
<edG02_Leistungsziffer value="bar"/>
usw.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: concat: Ergebnis "string" aber Knoten als Erge

  Alt 24. Jun 2006, 19:17
Meine Sicht auf die Dinge ist sehr abstrakt und völlig ungetrübt von jeder Sachkenntnis, was dein Projekt angeht. Ob das jetzt ein Vorteil ist oder doch eher ein Nachteil - wer weiß. Der Vorteil ist aus meiner Sicht eine semantische Reinheit. An die spätere Verwendung in deinem Projekt denke ich gar nicht - wie auch. Bei deinem Hinweis auf "value" kommt mir noch ein weiterer Gedanke. In XML musst du ja nicht nur entscheiden, was du zum Element machst und was zum Attribut - auch die Frage "ist es element content oder attribute value" kann einem den Schlaf rauben.

XML-Code:
<edit name="edG01_Leistungsziffer">foo</edit>
<edit name="edG02_Leistungsziffer">bar</edit>
Ich bin sicher du triffst die richtigen Entscheidungen. Lass dich von mir nicht beirren.

marabu
  Mit Zitat antworten Zitat
Neuromancer

Registriert seit: 8. Aug 2003
62 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: concat: Ergebnis "string" aber Knoten als Erge

  Alt 27. Jun 2006, 12:54
Zitat von marabu:
In XML musst du ja nicht nur entscheiden, was du zum Element machst und was zum Attribut - auch die Frage "ist es element content oder attribute value" kann einem den Schlaf rauben.

Der war gut...

Erinnert mich irgendwie an die dispensorische Erziehungstheorie...

Gruß
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: concat: Ergebnis "string" aber Knoten als Erge

  Alt 27. Jun 2006, 17:32
Zitat von Neuromancer:
Der war gut...

Erinnert mich irgendwie an die dispensorische Erziehungstheorie...
Falscher Alarm, Armin - ich wollte gar nicht in Meyers Fußstapfen treten. Zumindest nicht wissentlich.

Freundliche Grüße

marabu
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:04 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