Announcement

Collapse
No announcement yet.

Problem mit Inline Verschachtelung

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

  • Problem mit Inline Verschachtelung

    Ich erzeug mit einer Software aus einem XML und einer XSL ein PDF bzw. zuerst ein XSL-Fo.

    Die Struktur die ich benötige wäre:

    Code:
    <fo:inline font-family="Helvetica" font-size="10pt" color="#000000" >
       <fo:inline font-weight="bold">T</fo:inline>
       <fo:inline font-weight="normal">est</fo:inline>
    </fo:inline>
    ur XSL:

    Hiermit (1.) wird 2. in der XSL aufgerufen:

    1.
    Code:
    <fo:block>
                <xsl:apply-templates mode="root"/>
    </fo:block>

    2.
    Code:
    <xsl:template match="text()" mode="root">
    
      <fo:inline>
    
       <xsl:choose>
        <xsl:when test="ancestor::B">
         <xsl:attribute name="font-weight">bold</xsl:attribute>
        </xsl:when>
        <xsl:otherwise>
         <xsl:attribute name="font-weight">normal</xsl:attribute>
        </xsl:otherwise>
       </xsl:choose>
    
       <xsl:variable name="myString" select="."/>
       <xsl:value-of select="$myString"/>
    
      </fo:inline>
    
    </xsl:template>

    Der Input könnte so aussehen:

    <B>T</B>est das ist ein Text der auch mal fett ist.


    Das liefert mir natürlich

    <fo:inline bold>T</fo:inline>
    <fo:inline normal>est</fo:inline>

    und nicht das gewünschte Ergebnis, das ich ganz oben in diesem Post geschrieben hatte.


    Kann mir jemand auf die Sprünge helfen?

  • #2
    Probiere es so:
    Code:
    <xsl:attribute name="font-weight">
      <xsl:choose>
        <xsl:when test="ancestor::B">bold</xsl:when>
        <xsl:otherwise>normal</xsl:otherwise>
      </xsl:choose>
    </xsl:attribute>
    font-family, font-size und color wurden im XSLT-Code gar nicht angegeben. Zudem steht oben fo:inline, im Template aber fo:block, also den Code entsprechend anpassen.

    Comment

    Working...
    X