Как мне ничего не вставить / пустой текст в ячейку в Excel, используя xslt? - PullRequest
0 голосов
/ 21 марта 2011

Я создаю книгу Excel xml через xslt. Одно из полей даты часто NULL, и мне не нужно ничего вставлять в ячейку, когда это так. На данный момент, хотя я ничего не определяю, в ячейку вводится значение -146087. Затем он отображается в виде хэшей, поскольку ячейка отформатирована.

Что можно поставить между

<xsl:otherwise></xsl:otherswise>

метки

Вот хзлт ...

<Cell>
  <Data ss:Type="DateTime">
    <xsl:choose>
      <xsl:when test="substring(EOI_StartDate, 0, 11)">
        <xsl:value-of select="substring(EOI_StartDate, 0, 11)"/>
      </xsl:when>
      <xsl:otherwise>

      </xsl:otherwise>
    </xsl:choose>
  </Data>
  <NamedCell ss:Name="_FilterDatabase"/>
</Cell>

1 Ответ

1 голос
/ 21 марта 2011

Судя по вашему вопросу, вы хотите произвести:

<Data/>

в случае, если условие не выполнено.

Самый простой способ сделать это - не использовать <xsl:choose>, а более простой <xsl:if>:

<Data ss:Type="DateTime">
  <xsl:if test="substring(EOI_StartDate, 0, 11)">
    <xsl:value-of select="substring(EOI_StartDate, 0, 11)"/>
  </xsl:if>
</Data>

Или, если вы хотите полностью пропустить элемент <Data>, если условие не выполняется, то:

<xsl:if test="substring(EOI_StartDate, 0, 11)">
  <Data ss:Type="DateTime">
    <xsl:value-of select="substring(EOI_StartDate, 0, 11)"/>
  </Data>
</xsl:if>

Наконец, если элемент <Data> должен оставаться там, но вы не хотите, чтобы он считался датой, если условие не выполняется, сделайте следующее:

<xsl:choose>
  <xsl:when test="substring(EOI_StartDate, 0, 11)">
    <Data ss:Type="DateTime">
            <xsl:value-of select="substring(EOI_StartDate, 0, 11)"/>
    </Data>
  </xsl:when>
  <xsl:otherwise>
    <Data ss:Type="String"> </Data>
  </xsl:otherwise>
</xsl:choose>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...