Attribute- dynmaische Werte,

helpmeaimnew

Grünschnabel
Tach

Ich möchte eine xml Datei für Indesign mit einer xsl Datei entsprechend ändern.
Problematisch wird das ganze bei Spalten und Reihen-Anzahl für Tabellen. Ich habe zwar eine Lösung die funktioniert nur würde ich diese gern optimieren falls möglich

Ausgehend von folgenden code

Die Variable Anzahl liest mir die Anzahl der "Tabellenköpfe" aus. Die Variable will ich nun an aid:tcols übergeben. (Variable überprüfe ich durch <xsl:copy-of select="$anzahl"/> )

Code:
<xsl:template match="table">
<xsl:variable name="anzahl" select="count(tr/th)"></xsl:variable> 
<p aid:pstyle="p"><xsl:copy-of select="$anzahl"/> 
<Tabelle aid5:tablestyle="mytable" aid:table="table" aid:trows="10" aid:tcols="2"> <xsl:apply-templates select="tr"/></Tabelle></p>
</xsl:template>


Leider habe ich keinen Weg gefunden die Variable an aid:tcols zu übergeben bzw. kenne ich den richtigen Ausdruck nicht hierfür.
Frage 1 : Ist es überhaupt möglich hier den Wert mittels Variable zu übergeben? Und wenn ja wie?


Deshalb habe ich den Umweg über <xsl:attribute... genommen. Diese Lösung funktioniert.



Code:
<xsl:template match="table">
<xsl:variable name="anzahl" select="count(tr/th)"></xsl:variable> 
<p aid:pstyle="p"><xsl:copy-of select="$anzahl" /> 
<Tabelle><xsl:attribute name="aid5:tablestyle">mytable</xsl:attribute><xsl:attribute name="aid:table">table</xsl:attribute> <xsl:attribute name="aid:trows">2</xsl:attribute>
<xsl:attribute name="aid:tcols"><xsl:copy-of select="$anzahl" /></xsl:attribute> .....

Bin dadurch auf die Idee gekommen gleich ein Attributset zu erstellen. Nur hier habe ich das Problem, dass die Variable logischerweise noch nicht definiert ist.

Code:
<xsl:attribute-set name="mytablestyle">
	<xsl:attribute name="aid5:tablestyle">mytable</xsl:attribute>
	<xsl:attribute name="aid:table">table</xsl:attribute>
	<xsl:attribute name="aid:trows">3</xsl:attribute>
	<xsl:attribute name="aid:tcols"><xsl:copy-of select="$anzahl" /></xsl:attribute>
</xsl:attribute-set>

xsl:template match="table">
<xsl:variable name="anzahl" select="count(/tr/th)"></xsl:variable>
<p aid:pstyle="p"><xsl:element name="Tabelle" use-attribute-sets="mytablestyle"> ......

Alternativ hab ich auch das versucht, liefert aber leider keinen Wert.

Code:
<xsl:attribute name="aid:tcols"><xsl:value-of select="count(/tr/th)" /></xsl:attribute>

Frage 2 : Ist es überhaupt möglich hier den Wert mittels Variable zu ermitteln? Und wenn ja wie?

Beschäftige mich mit dem Thema erst seit ein paar Tagen!
 
Zuletzt bearbeitet:
Hi.
Ich möchte eine xml Datei für Indesign mit einer xsl Datei entsprechend ändern.
Problematisch wird das ganze bei Spalten und Reihen-Anzahl für Tabellen. Ich habe zwar eine Lösung die funktioniert nur würde ich diese gern optimieren falls möglich

Ausgehend von folgenden code

Die Variable Anzahl liest mir die Anzahl der "Tabellenköpfe" aus. Die Variable will ich nun an aid:tcols übergeben. (Variable überprüfe ich durch <xsl:copy-of select="$anzahl"/> )
copy-of ist unnötig, value-of reicht
Code:
<xsl:template match="table">
<xsl:variable name="anzahl" select="count(tr/th)"></xsl:variable> 
<p aid:pstyle="p"><xsl:copy-of select="$anzahl"/> 
<Tabelle aid5:tablestyle="mytable" aid:table="table" aid:trows="10" aid:tcols="2"> <xsl:apply-templates select="tr"/></Tabelle></p>
</xsl:template>


Leider habe ich keinen Weg gefunden die Variable an aid:tcols zu übergeben bzw. kenne ich den richtigen Ausdruck nicht hierfür.
XML:
<Tabelle aid5:tablestyle="mytable"
      aid:table="table"
      aid:trows="10"
      aid:tcols="{$anzahl}">

Alternativ hab ich auch das versucht, liefert aber leider keinen Wert.

Code:
<xsl:attribute name="aid:tcols"><xsl:value-of select="count(/tr/th)" /></xsl:attribute>
Du greifst hier auf das den root path zu, das liefert keine Ergebnisse, es müßte "count(tr/th)" heißen.
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück