2016-08-09 2 views
0

У меня есть XML, как:Как изменить значения XML в соответствии с условием использования XSLT

<all> 
    <one>Something 1</one> 
    <two>something 2</two> 
    <check> 
     <present>true</present> 
    </check> 
    <action> 
     <perform></perform> 
    </action> 
</all> 

Я хочу, чтобы выполнить преобразование XML с помощью XSL:

ожидается выход: если <present>true</present>

all> 
    <one>Something 1</one> 
    <two>something 2</two> 
    <check> 
     <present>YES</present> 
    </check> 
    <action> 
     <perform>READ</perform> 
    </action> 
</all> 

еще, если: <present>false</present>

<all> 
    <one>Something 1</one> 
    <two>something 2</two> 
    <check> 
     <present>NO</present> 
    </check> 
    <action> 
     <perform>INSERT</perform> 
    </action> 
</all> 

Можно ли это сделать? Я не знаю о проверке состояния в XSL Я стараюсь, чтобы переместить элемент, но не работал:

<xsl:template match="perform"> 
    <xsl:copy> 
    <xsl:choose> 
     <xsl:when test="../check/present = 'true'"> 
     <xsl:text>READ</xsl:text> 
     </xsl:when> 
     <xsl:otherwise> 
     <xsl:apply-templates/> 
     </xsl:otherwise> 
    </xsl:choose> 
    </xsl:copy> 
</xsl:template> 

ответ

1

Почему бы вам не делать то, что вы говорите, должно быть сделано:

<xsl:template match="perform"> 
    <xsl:copy> 
     <xsl:choose> 
      <xsl:when test="../../check/present='true'">READ</xsl:when> 
      <xsl:when test="../../check/present='false'">INSERT</xsl:when> 
     </xsl:choose> 
    </xsl:copy> 
</xsl:template> 
+1

Thanks Alot. Он работал –

0

Попробуйте следующее:

<xsl:stylesheet version= "1.0" 
xmlns:xsl ="http://www.w3.org/1999/XSL/Transform" > 
<xsl:output method= "xml" version= "1.0" encoding= "UTF-8" indent= "yes" /> 
<xsl:strip-space elements= "*" /> 

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

<xsl:template match="action"/> 

<xsl:template match="check/present"> 
    <xsl:choose> 
      <xsl:when test=".='true'"> 
       <xsl:copy><xsl:text>YES</xsl:text></xsl:copy> 
       <action> 
        <perform><xsl:text>READ</xsl:text></perform> 
       </action> 
      </xsl:when> 
      <xsl:otherwise> 
       <xsl:copy><xsl:text>NO</xsl:text></xsl:copy> 
       <action> 
        <perform><xsl:text>INSERT</xsl:text></perform> 
       </action> 
      </xsl:otherwise> 
    </xsl:choose> 
</xsl:template> 
</xsl:stylesheet> 
+1

Спасибо за ответ .. –

+1

У меня есть еще одна проблема. Просто хотелось узнать, можно ли поместить файл xsl в git-репо и прочитать его заявки на локальные и сделать преобразование –

Смежные вопросы