Проверьте наличие на Атрибуте и не пустоту его значения - PullRequest
1 голос
/ 21 июля 2010
<ROWS>
     <ROW oid="28439">
        <EFL eid="8" fid="27672" count="2" Name = "A : bbb">
            <MK id="3" val="0"/>
            <MK id="11" val="0578678"/>
        </EFL>
   </ROW>
</ROWS>

У меня есть вышеуказанный xml, я хочу иметь следующий цикл в XSL

, если Имя атрибут в теге EFL Существует И Не пусто Затем
Показать значение Имя Атрибут
Остальное
сделать что-то (что я знаю, как написать)
Endif

Обратите внимание , что это ЕСЛИ условие будет записано в цикле for-each для тега Row .Вот почему мы не можем использовать Match .

Спасибо

Ответы [ 2 ]

2 голосов
/ 21 июля 2010

См. Следующий XSL. Это работает, но не проверял угловые случаи.

<xsl:stylesheet version = '1.0'
 xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

 <xsl:template match="/ROWS">
     <xsl:for-each select="ROW">
         <xsl:choose>
             <xsl:when test='string-length(EFL/@Name)>0'>
                 <xsl:value-of select="EFL/@Name"/> 
             </xsl:when>

             <xsl:otherwise>I know  what to do here....</xsl:otherwise>
         </xsl:choose>
     </xsl:for-each>
 </xsl:template>

1 голос
/ 21 июля 2010

Алехандро совершенно прав;чтобы экстраполировать пример Тушара:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="text" indent="yes"/>

  <xsl:template match="/ROWS">
    <xsl:apply-templates select="ROW" />
  </xsl:template>

  <xsl:template match="ROW[string-length(EFL/@Name)>0]">
    <xsl:value-of select="EFL/@Name" />
  </xsl:template>

  <xsl:template match="ROW">
    <xsl:text>Something else..</xsl:text>
  </xsl:template>
</xsl:stylesheet>

В зависимости от характера вашей проблемы в целом, это может быть лучшим вариантом;либо совершенно верно, хотя.Строго говоря, в этом примере даже шаблон, соответствующий /ROWS, не нужен, но, вероятно, будет для чего-то более сложного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...