2015-06-23 3 views
-1

Не могу использовать, если состояние внутри if. Я хочу, чтобы проверить второе условие, если первый является проход,Если Состояние внутри, если Условие в xslt

<cc> 
    <xsl:variable name="UpperNode" select="(substring-before(//Node1/@SubMan, ' -'))"/> 
    <xsl:if test="contains($UpperNode,'CUBE')"> 
     <xsl:if test="not(//CubeNode/@att = 'NORMAL')"> 
      <ERROR Significiance="U can't draw it" ErrorCode="Sket" ErrorType="Error" Template="Arts.xsd"/> 
      <action_on_error> 
       <msg_box/> 
      </action_on_error> 
     </xsl:if> 
    </xsl:if> 
</cc> 

Это не выскакивает окно сообщения, даже если UpperNode является CUBE и CubeNode/@ АТТ NORMAL. Как этот тип состояния может быть проверен.

+0

Какую ошибку вы получаете? –

+0

Это не дает ошибки, но я не получаю ожидаемого результата. –

+0

Пожалуйста, разместите полный реестр (входной документ, полную и минимальную таблицу стилей, которая воспроизводит проблему, фактический вывод и ожидаемый результат). –

ответ

1

У вас есть опечатка во втором тестовом выражении: //CubeNode/&att. См. &?

+0

Извините, я исправил его. Но это не так. –

+1

Пожалуйста, разместите полный репрограммирование, а затем получите ошибку. –

+0

Это не ошибка, но я не получаю ожидаемого результата –

0

Вот пример, который показывает, что ваш вопрос неверен. Может быть, вы увидите какое-то решение в этом:

Входной XML:

<stuff> 
     <test1> 
      <Node1 SubMan="CUBE - Stuff"/> 
      <CubeNode att='NOT NORMAL'/>   
     </test1> 
     <test2> 
      <Node1 SubMan="CUBE - Stuff"/> 
      <CubeNode att='NORMAL'/> 
     </test2> 
    </stuff> 

Тест XSL:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
     version="1.0"> 
     <xsl:output indent="yes"/> 
     <xsl:template match="/"> 
      <results> 
       <xsl:call-template name="optest"> 
        <xsl:with-param name="test" select="//test1"/> 
       </xsl:call-template> 
       <xsl:call-template name="optest"> 
        <xsl:with-param name="test" select="//test2"/> 
       </xsl:call-template> 
      </results> 
     </xsl:template> 
     <xsl:template name="optest"> 
      <xsl:param name="test"/> 
      <cc> 
       <xsl:variable name="UpperNode" select="(substring-before(//Node1/@SubMan, ' -'))"/> 
       <xsl:if test="contains($UpperNode,'CUBE')"> 
        <xsl:message><xsl:value-of select="$test/CubeNode/@att"/></xsl:message> 
        <xsl:if test="not($test/CubeNode/@att[. = 'NORMAL'])"> 
         <ERROR Significiance="U can't draw it" ErrorCode="Sket" ErrorType="Error" Template="Arts.xsd"/> 
         <action_on_error> 
          <msg_box/> 
         </action_on_error> 
        </xsl:if> 
       </xsl:if> 
      </cc> 
     </xsl:template> 
    </xsl:stylesheet> 

Выход:

<results> 
<cc> 
    <ERROR Significiance="U can't draw it" ErrorCode="Sket" ErrorType="Error" Template="Arts.xsd"/> 
    <action_on_error> 
    <msg_box/> 
    </action_on_error> 
</cc> 
<cc/> 
</results 
Смежные вопросы