Thomas J.S.: Tabellenattribute auslesen

Beitrag lesen

Hallo,

nochmal ein Nachtrag. Ich glaube er zeigt die Tabelle nicht an, weil er sie nicht kennt. Das letzte Stylesheet (XSL_2) kennt nur die Struktur

<data>
   <meinText/>
   <meineForm>...
      <meineListe>...</meineListe>
      <meineTabelle>...</meineTabelle>
   </meineForm>
</data>

Könnte es daran liegen, dass er meine Tabelle nicht anzeigt, weil es in der Struktur vorher nicht vorgesehen war, das es eine Tabelle geben kann, wie hier

<meineTabelle>
   <table><body>...</body></table>
</meineTabelle>

und er deshalb nur die Texte in den Spalten ausliest und ausgibt?

Das ist genau der Grund.

Also wenn deine erste Tranformation ein XML erzeugt, wäre eigentlich das hier (aus: https://forum.selfhtml.org/?t=154268&m=1005522
<xsl:template match="data">
    <html>
      <head>
       <title />
      </head>
      <body>
       xsl:copy
     <xsl:copy-of select="@*" />
        <xsl:apply-templates />
       </xsl:copy>
     </body>
    </html>
  </xsl:template>

Unnötig.
Da würde schon so etwas reichen:
<xsl:template match="data">
  xsl:copy
     <xsl:copy-of select="@*" />
     <xsl:apply-templates />
  </xsl:copy>
</xsl:template>

In dem XML (XML File B) für die zweiten Transformation würde dann so etwas stehen:
-----------
<?xml version="1.0" encoding="UTF-8"?>
<data xmlns:deltaxml="http://www.deltaxml.com/ns/well-formed-delta-v1" deltaxml:delta="WFmodify" xml:lang="en-us">
 <table class="dataTableStyle msoUcTable" ... border="1">
<tbody>
<tr>
<td style="FONT-SIZE: 11px" class="readonlyGroupDataStyle">
<div> </div>
----------

Beziehungsweise, wenn du in der ersten Transformation für deine "meineForm" "meineTabelle" etc. Elemente das Template erstellt hast dann so etwas:

<data xmlns:deltaxml="http://www.deltaxml.com/ns/well-formed-delta-v1" deltaxml:delta="WFmodify" xml:lang="en-us">
<meineForm>
<meineTabelle>
 <table class="dataTableStyle msoUcTable" ... border="1">
<tbody>
<tr>
<td style="FONT-SIZE: 11px" class="readonlyGroupDataStyle">
<div> </div>
...
</meineTabelle>
</meineForm>

Jetzt _muss_ du natürlich in deinem zweiten XSLT dafür sorgen, dass Templates für die HTML-Elemente (also für die Tabelle aus dem XML File B) vorhanden sind:
--------
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xhtml="http://www.w3.org/1999/xhtml" >
<xsl:output method="html" indent="no" encoding="UTF-8"/>
 <xsl:template match="data">
  <html>
   <head> ... </head>
   <body>
      <xsl:apply-templates select="meineForm" mode="_480" />
   </body>
  </html>
 </xsl:template>
...
<xsl:template match="table">
   <xsl:copy-of select="." />
</xsl:template>
</xsl:stylesheet>

Das einzige was hier bei diesem Lösungsweg noch geben könnte, dass du nochmal  auf die Namensräume schauen musst und sie ggf. richtigstellen.

Aber auch wenn du jetzt, wo die erste Transformation funktioniert, daran nicht mehr rüttelst, brauchst du in der zweiten XSLT noch immer das Template für die Tabelle.

Grüße
Thomas

PS: bitte du so etwas <body><span> ... gesamter Seitenihalt ... </span></body> doch keinem an! ;-)