Announcement

Collapse
No announcement yet.

Anfänger braucht hilfe

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Anfänger braucht hilfe

    Hallo,

    mein xml dokument sieht so aus:


    <TPL_01>
    <txt>
    <metadaten>
    <name>fusszeile_1</name>
    <wbtVisibility>true</wbtVisibility>
    <pdfVisibility>true</pdfVisibility>
    <authorEditable>true</authorEditable>
    </metadaten>
    <content>
    <boxField1>
    <txt>text hier steht was</txt>
    <timeStamp>1246283214964</timeStamp>
    </boxField1>
    </content>
    </txt>
    <txt>
    <metadaten>
    <name>fusszeile_2</name>
    <wbtVisibility>true</wbtVisibility>
    <pdfVisibility>true</pdfVisibility>
    <authorEditable>true</authorEditable>
    </metadaten>
    <content>
    <boxField1>
    <txt>text hier dann auch noch</txt>
    <timeStamp>1246283224386</timeStamp>
    </boxField1>
    </content>
    </txt>

    </TPL_01>

    in xsl versuche ich nun per xsl:if abzufragen, ob ich mich in der fußzeile_1 oder 2 befinde.
    das scheint auch soweit zu klappen.
    aber den text, der in /txt/co9ntent/boxField1/txt drin ist, wird nicht korrekt angezeigt. da steht dann zweimal der text von der fußzeile1.
    die if-Abfragen scheinen zu stimmen, da ich sie mit einem fo:block, der unterschiedliche texte umschließt, getestet habe.

    xsl:
    <fo:block-container>
    <fo:block xsl:use-attribute-sets="font.tpl3" margin-top ="200mm">
    <xsl:if test="../TPL_01/txt/metadaten/name= 'fusszeile_1' ">
    <xsl:value-of select= "txt/content/boxField1/txt"/>
    </xsl:if>
    </fo:block>
    </fo:block-container>
    <fo:block-container>
    <fo:block xsl:use-attribute-sets="font.tpl3" margin-top ="20mm">
    <xsl:if test="../TPL_01/txt/metadaten/name= 'fusszeile_2' ">
    <xsl:value-of select= "txt/content/boxField1/txt"/>
    </xsl:if>
    </fo:block>
    </fo:block-container>

    irgendwo habe ich also einen gewaltigen denkfehler, aber wo?

  • #2
    in welchen knoten bin ich



    xpath
    Code:
    <xsl:if test="../TPL_01/txt/metadaten/name= 'fusszeile_1' ">
    <xsl:value-of select= "../TPL_01/txt/content/boxField1/txt"/>
    </xsl:if>
    wenn das geht
    daß dazufügen

    Comment


    • #3
      Hallo,

      danke schonmal für deine Hilfe. es funktioniert trotzdem noch nicht...

      ich bekomme zweimal den ersten text angezeigt.

      vielleicht liegt das problem doch in dem zweiten if-statement...
      was ich mir aber nicht vorstellen kann, da dieses ja genauso aufgebaut ist wie das erste...

      kann es sein, dass durch das value-of select der knotenbaum neu durchgegangen wird und dann in der ersten fußzeile hängen bleibt?
      aber müssten dann nicht beide knoten ausgegeben werden?

      Comment


      • #4
        ok, ich habe es weiter probiert und weiß jetzt,
        dass durch <xsl:value-of select: /TPL_01/txt/content/boxField1/txt>
        wirklich beide texte, also die aus beiden fußzeilen angesprochen werden...

        jetzt probiere ich es gerade mit

        <xsl:value-of select: /TPL_01/txt/content/boxField1/txt[/TPL_01/metadaten/name= fusszeile_1] >

        und mit

        <xsl:value-of select: /TPL_01/txt/content/boxField1/txt[position = 1] >

        (analog für zweite fußzeile)

        so komme ich aber auch nicht weiter...

        beim position scheitert es daran, dass es angeblich keine knoten gibt und beim abfragen des attributes bekomme ich nichtmal eine fehlermeldung...
        (konvertierung des xml mittels fop 0.94 in ein pdf)

        Comment

        Working...
        X