1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Attribute- dynmaische Werte,

Dieses Thema im Forum "XML Technologien" wurde erstellt von helpmeaimnew, 26. Februar 2013.

  1. helpmeaimnew

    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 (Text):
    1. <xsl:template match="table">
    2. <xsl:variable name="anzahl" select="count(tr/th)"></xsl:variable>
    3. <p aid:pstyle="p"><xsl:copy-of select="$anzahl"/>
    4. <Tabelle aid5:tablestyle="mytable" aid:table="table" aid:trows="10" aid:tcols="2"> <xsl:apply-templates select="tr"/></Tabelle></p>
    5. </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 (Text):
    1. <xsl:template match="table">
    2. <xsl:variable name="anzahl" select="count(tr/th)"></xsl:variable>
    3. <p aid:pstyle="p"><xsl:copy-of select="$anzahl" />
    4. <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>
    5. <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 (Text):
    1. <xsl:attribute-set name="mytablestyle">
    2.     <xsl:attribute name="aid5:tablestyle">mytable</xsl:attribute>
    3.     <xsl:attribute name="aid:table">table</xsl:attribute>
    4.     <xsl:attribute name="aid:trows">3</xsl:attribute>
    5.     <xsl:attribute name="aid:tcols"><xsl:copy-of select="$anzahl" /></xsl:attribute>
    6. </xsl:attribute-set>
    7.  
    8. xsl:template match="table">
    9. <xsl:variable name="anzahl" select="count(/tr/th)"></xsl:variable>
    10. <p aid:pstyle="p"><xsl:element name="Tabelle" use-attribute-sets="mytablestyle"> ......
    Alternativ hab ich auch das versucht, liefert aber leider keinen Wert.

    Code (Text):
    1. <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: 27. Februar 2013
  2. deepthroat

    deepthroat Erfahrenes Mitglied

    Hi.
    copy-of ist unnötig, value-of reicht
    Code (XML):
    1. <Tabelle aid5:tablestyle="mytable"
    2.      aid:table="table"
    3.      aid:trows="10"
    4.      aid:tcols="{$anzahl}">
    Du greifst hier auf das den root path zu, das liefert keine Ergebnisse, es müßte "count(tr/th)" heißen.
     
    Zuletzt von einem Moderator bearbeitet: 23. Mai 2014
    helpmeaimnew gefällt das.
  3. helpmeaimnew

    helpmeaimnew Grünschnabel

    Mist das hab ich glatt übersehen, so funktioniert es ohne Probleme.
     
Die Seite wird geladen...