Как проверить, имеет ли тег значение или нет в xslt - PullRequest
1 голос
/ 19 марта 2012

Я использую xslt.Если моя входная строка похожа на

<entry colsep="0" rowsep="0" />
<entry colsep="0" rowsep="0">Acid suppressant</entry>

, мне нужно проверить, чтобы тег ввода содержал любое значение.если нет, мне нужно заменить его как

<entry colsep="0" rowsep="0">...</entry>

Как проверить это в XSLT.

Спасибо, Пуджа

1 Ответ

2 голосов
/ 19 марта 2012

Если вы хотите сопоставить элемент без текстового значения, вы можете просто сделать это

<xsl:template match="entry[not(text())]" >

Затем вы можете добавить свой код для копирования элемента, но в то же время добавить значение по умолчанию.

Сочетание этого с преобразованием идентичности дает следующий XSLT

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:template match="entry[not(text())]">
      <entry>
         <xsl:copy-of select="@*"/>
         <xsl:text>Default Value</xsl:text>
      </entry>
   </xsl:template>

   <xsl:template match="@*|node()">
      <xsl:copy>
         <xsl:apply-templates select="@*|node()"/>
      </xsl:copy>
   </xsl:template>
</xsl:stylesheet>

При применении к следующему XML:

<entries>
   <entry colsep="0" rowsep="0" /> 
   <entry colsep="0" rowsep="0">Acid suppressant</entry> 
</entries>

Ниже выводится

<entries>
   <entry colsep="0" rowsep="0">Default Value</entry>
   <entry colsep="0" rowsep="0">Acid suppressant</entry>
</entries>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...