Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   HTML Tags in XML verwenden (https://www.delphipraxis.net/70353-html-tags-xml-verwenden.html)

Luckie 29. Mai 2006 09:49


HTML Tags in XML verwenden
 
Ich habe eine XML datei:
XML-Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet href="Links.xsl" type="text/xsl"?>

<links>
  <kategorie value="Programmierung">
    <sprache value="Delphi">
      <link caption="Delphipraxis">http://www.delphipraxis.net</link>
      <link caption="Delphi-Forum">http://www.delphi-forum.de</link>
    </sprache>
  </kategorie>
</links>
Diese wollte ich jetzt durch eine xsl datei darstellen. Nur leider nimmt er keine Winkel (<>) und keine Anführungszeichen an, wo ich den Link zusammenbaue:
XML-Code:
<xsl:template match="link">
   [url="<xsl:apply-templates"] <xsl:value-of select="@caption"/>[/url]


</xsl:template>
Und das Gleichzeichen macht wohl auch Probleme. Wie löse ich das jetzt am besten?

sh17 29. Mai 2006 10:22

Re: Winkel und Anführungszeichen in XML
 
So gehts

Delphi-Quellcode:
[url="#{link}"] <xsl:value-of select="@caption"/> [/url]

sh17 29. Mai 2006 10:23

Re: Winkel und Anführungszeichen in XML
 
nicht.

aber so ähnlich, ich guck noch mal

Luckie 29. Mai 2006 10:28

Re: Winkel und Anführungszeichen in XML
 
Das <xsl:apply-templates /> muss vorkommen, weil mir das den Link gibt.

sh17 29. Mai 2006 10:28

Re: Winkel und Anführungszeichen in XML
 
so wars

Delphi-Quellcode:
<xsl:template match="link">
   <a>
   <xsl:attribute name="HREF">
   <xsl:apply-templates/>
   </xsl:attribute>
   <xsl:value-of select="@caption"/> </a>
 
</xsl:template>

Luckie 29. Mai 2006 10:29

Re: Winkel und Anführungszeichen in XML
 
Ah. Sehr gut. danke. So geht's. :thumb:

Luckie 29. Mai 2006 13:48

Re: Winkel und Anführungszeichen in XML
 
Habe doch noch was: Wie bekomme ich da jetzt noch target="_blank" unter?

marabu 29. Mai 2006 13:51

Re: Winkel und Anführungszeichen in XML
 
Hallo Michael,

direkt aus der Abteilung Transferwissen:

XML-Code:
<xsl:template match="link">
  <a>
    <xsl:attribute name="HREF">
      <xsl:apply-templates/>
    </xsl:attribute>
    <xsl:attribute name="target">_blank</xsl:attribute>
    <xsl:value-of select="@caption"/>
  </a>
 


</xsl:template>
Grüße vom marabu

Luckie 29. Mai 2006 13:58

Re: Winkel und Anführungszeichen in XML
 
Zitat:

Zitat von marabu
direkt aus der Abteilung Transferwissen:

:oops: XML und xsl verwirrt mich immer noch etwas. ;)

Luckie 31. Mai 2006 13:44

Re: Winkel und Anführungszeichen in XML
 
Warum geht da smit dem
Tag nicht:
Code:
<td><xsl:value-of select="name()"/></td>
      <td><xsl:value-of select="@TS"/></td>
      <td>
        <xsl:attribute name="BR">
        <xsl:apply-templates/>
        </xsl:attribute>
        <xsl:apply-templates/>
      </td>
In der dritten Spalte kommt Text mit den Zeilenumbrüchen vor:

Zitat:

\\Hestia\test_PMD_COLD\Kopie (7) von J107898_Druckverwaltung_102238.001
\\Hestia\test_PMD_COLD\Kopie (7) von J107899_Druckverwaltung_102249.001
\\Hestia\test_PMD_COLD\Kopie (7) von J107901_Druckverwaltung_102559.001
\\Hestia\test_PMD_COLD\Kopie (7) von J107902_Druckverwaltung_102614.001

marabu 31. Mai 2006 21:17

Re: HTML Tags in XML verwenden
 
Hallo Michael,

ich kann die Eingabedaten gerade nicht sehen und dein XSL-T Code ist nur ein Fragment und passt auch nicht so recht zu den gezeigten Ausgabedaten, aber eines ist klar: Egal welchem Element du das Attribut BR zugeben möchtest, so wie du es machst, wird nie ein Element BR daraus. Um ein solches Element auszugeben braucht es schon das hier:

XML-Code:
<xsl:element name="br" />
Gute Nacht

marabu

Luckie 31. Mai 2006 21:45

Re: HTML Tags in XML verwenden
 
Aha. :gruebel: Werde ich mir aber erst wieder nächsten Dienstag angucken könne, wenn ich wieder im Büro bin.

MathiasSimmack 31. Mai 2006 22:03

Re: HTML Tags in XML verwenden
 
Muss es unbedingt <link> sein? Ansonsten verweise ich erneut auf mein Universalbeispiel:
XML-Code:
<xsl:template match="ul|ol|li|img|p|a|b|u|i|br|code|pre|span|iframe|del|small|hr|h1|h2|h3|acronym">
  <xsl:copy>
   <xsl:copy-of select="@*"/>
   <xsl:apply-templates/>
  </xsl:copy>
</xsl:template>
wodurch direkt im XML-Code Sachen wie
XML-Code:
[url="bla"]foo[/url]
benutzt werden können. :stupid:

Luckie 1. Jun 2006 00:20

Re: HTML Tags in XML verwenden
 
@Mathias: Sas mit dem Zeilenumbruch ist beruflich, da brauche ich das, aber sonst keine HTML Tags. Das mit dem Link war privat. Aber gerade so etwas wollte ich vermeiden, da ich daten und Darstellung strikt trennen möchte. Womit wir zum näöchsten Problem kommen. Irgendwie verstehe ich das Prinzip noch nicht so ganz:

Code:
<xsl:template match="kategorie">
   <a name=<xsl:value-of select="@value"/> />
   <h3><xsl:value-of select="@value"/></h3>
   <xsl:apply-templates />
   <hr />
</xsl:template>
Wie man sieht, möchte ich über der Überschrift einen Anker setzen. Aber so gibt das natürlich nichts. Wie macht man es richtig? :duck:

marabu 1. Jun 2006 06:23

Re: HTML Tags in XML verwenden
 
Wenn du das h3 Element direkt ausgeben willst, dann solltest du XHTML als default namespace vereinbaren - oder so (ungetestet):

XML-Code:
<xsl:template match="kategorie">
   <xsl:element name="a">
      <xsl:attribute name="name">
         #<xsl:value-of select="@value" />
      </xsl:attribute>
   </xsl:element>
   <xsl:element name="h3">
      <xsl:value-of select="@value"/>
   </xsl:element>
   <xsl:apply-templates />
   <hr />
</xsl:template>
Grüße vom marabu

MathiasSimmack 1. Jun 2006 08:06

Re: HTML Tags in XML verwenden
 
Zitat:

Zitat von Luckie
Wie man sieht, möchte ich über der Überschrift einen Anker setzen. Aber so gibt das natürlich nichts. Wie macht man es richtig? :duck:

Kleine Anekdote: Vor einiger Zeit schrieb ein talentierter junger API-Programmierer mal eine Adressverwaltung auf XML-Basis. Der Beispieldatei liegt ein XSL-Stylesheet bei, geschrieben von einem anderen jungen Programmierer, die im Prinzip die Grundlagen enthält. Selbst Anker kommen darin vor, damit man über das "Inhaltsverzeichnis" direkt zu einer bestimmten Adresse springen kann. :zwinker:

Luckie 1. Jun 2006 09:39

Re: HTML Tags in XML verwenden
 
:oops: Jetzt wo du es sagst. :wall:

Luckie 1. Jun 2006 13:03

Re: HTML Tags in XML verwenden
 
http://www.michael-puff.de/Ablage/Links.xml Geht. ;)

MathiasSimmack 1. Jun 2006 15:54

Re: HTML Tags in XML verwenden
 
Zwei kleine Patches fürs "gute Aussehen" :stupid:

XML-Code:
<xsl:template match="item">
   <xsl:if test="count(link)&gt;0">
      <h4><xsl:value-of select="@value"/></h4>
      <div class="ul">



         <xsl:apply-templates />
      </p></div>
      


   </xsl:if>
</xsl:template>
lässt leere Rubriken wie "Software->Programmierung" verschwinden.

XML-Code:
<xsl:template match="link">
   <a>
      <xsl:attribute name="HREF"><xsl:apply-templates/></xsl:attribute>
      <xsl:attribute name="title"><xsl:apply-templates/></xsl:attribute>
      <xsl:attribute name="target">_blank</xsl:attribute>
      <xsl:value-of select="@caption"/>
   </a>
   


   <xsl:choose>
      <xsl:when test="@description!=''">
         <span class="linkdescription"><xsl:value-of select="@description"/></span>
         <xsl:if test="position()!=last()">
            



         </xsl:if>
      </xsl:when>
      <xsl:otherwise>
         <xsl:if test="position()!=last()">
            


         </xsl:if>
      </xsl:otherwise>
   </xsl:choose>
</xsl:template>
fügt einen zusätzlichen Zeilenumbruch nach der Beschreibung oder dem Linknamen ein, es sei denn es handelt sich um den letzten Link in der Tabelle. Dann wird der Zeilenumbruch weggelassen.

Luckie 6. Jun 2006 09:39

Re: HTML Tags in XML verwenden
 
Zitat:

Zitat von marabu
Um ein solches Element auszugeben braucht es schon das hier:

XML-Code:
<xsl:element name="br" />

Ich habe es jetzt so:
Code:
      <td>
        <xsl:element name="br/">
        <xsl:apply-templates/>
        </xsl:element>
      </td>
Und in der XML-Datei sieht es so aus:
Code:
<Error TS="2006-06-06 10:24:32:120">Löschvorgang abgebrochen
Der angegebene Netzwerkname ist nicht mehr verfügbar [64]
Nicht mehr gelöschte Dateien:
\\Hestia\test_PMD_COLD\Kopie (4) von J107925_Druckverwaltung_113508.001
</Error>
Aber er macht keinen Umbruch.

@Mathias: Danke für die Tipps.

marabu 6. Jun 2006 10:28

Re: HTML Tags in XML verwenden
 
Hallo Michael,

hast du bereits in deinem XML-Input br-Elemente? Dann baue einfach ein template dafür mit ein:

XML-Code:
<xsl:template match="br">
 


</xsl:template>
Grüße vom marabu

Luckie 6. Jun 2006 10:35

Re: HTML Tags in XML verwenden
 
Mist. Auf die Idee hätte ich natürlich auch kommen können. :wall: So geht es wie gewollt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:39 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