XSL FO Таблицы с исключениями - PullRequest
0 голосов
/ 02 апреля 2020

У меня проблема с файлом .XSL, мне нужно составить таблицу с этими значениями, но с моим файлом я создаю таблицу без столбцов, и мне бы хотелось иметь их, столбец с данными «año». "и другой с данными" титуло ". Я не знаю, как это сделать. Это мой код:

<xsl:template match="catalogo">
<fo:table border="solid" border-collapse="collapse" table-layout="fixed" width="100%">
  <fo:table-body>
    <xsl:apply-templates/>
  </fo:table-body>
</fo:table>
</xsl:template>

<xsl:template match="cd">
  <fo:table-row>
    <fo:table-cell border="1pt solid black">
      <xsl:if test="año &gt; 2000">
      <fo:block color="green">
      <xsl:value-of select="titulo"/>
      </fo:block>
      </xsl:if>

      <xsl:if test="año &lt; 2000">
      <fo:block color="red">
      <xsl:value-of select="titulo"/>
      </fo:block>
      </xsl:if>

      <xsl:if test="año='2000'">
      <fo:block color="black">
      <xsl:value-of select="titulo"/>
      </fo:block>
      </xsl:if>

      <fo:block>
      <xsl:value-of select="año"/>
      </fo:block>
      </fo:table-cell>
      </fo:table-row>
</xsl:template>
</xsl:stylesheet>

И результат этого:

image

Ответы [ 2 ]

0 голосов
/ 03 апреля 2020

Не ответ на ваш вопрос, но вы могли бы упростить свой выбор color следующим образом:

<fo:block>
  <xsl:attribute name="color">
    <xsl:choose>
      <xsl:when test="año &gt; 2000">green</xsl:when>
      <xsl:when test="año &lt; 2000">red</xsl:when>
      <xsl:otherwise>black</xsl:otherwise>
    </xsl:choose>
  </xsl:attribute>
  <xsl:value-of select="titulo"/>
</fo:block>

Это могло бы быть еще короче, если бы мы знали, что вы используете XSLT 2.0 или XSLT 3.0.

0 голосов
/ 03 апреля 2020

Кто знает, что вы хотите, но, как общее предположение:

<xsl:template match="cd">
  <fo:table-row>
    <!-- add a table cell for ano -->
    <fo:table-cell>
       <fo:block><xsl:value-of select="año"/></fo:block>
    </fo:table-cell>
    <fo:table-cell border="1pt solid black">
      <xsl:if test="año &gt; 2000">
      <fo:block color="green">
      <xsl:value-of select="titulo"/>
      </fo:block>
      </xsl:if>

      <xsl:if test="año &lt; 2000">
      <fo:block color="red">
      <xsl:value-of select="titulo"/>
      </fo:block>
      </xsl:if>

      <xsl:if test="año='2000'">
      <fo:block color="black">
      <xsl:value-of select="titulo"/>
      </fo:block>
      </xsl:if>

      <fo:block>
      <xsl:value-of select="año"/>
      </fo:block>
      </fo:table-cell>
      </fo:table-row>
</xsl:template>
...