Перебрать простой XML с помощью xslt - PullRequest
0 голосов
/ 13 марта 2019

У меня есть мыльное сообщение

 <soapenv:Envelope 
     xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
       <soapenv:Body>
         <id>0</id>
         <id>1</id>
       </soapenv:Body>
  </soapenv:Envelope>

Я хочу просмотреть элементы id и проверить, имеет ли текущий значение значение = 1, но мой xslt не работает.

   <xsl:template match="/">
         <xsl:for-each select="node()">
          <xsl:if test="current()/text='1'">
          do something
          </xsl:if>
         </xsl:for-each>
   </xsl:template> 

Может ли кто-нибудь указать, что я делаю неправильно, и дать мне указания о том, как действовать?

РЕДАКТИРОВАТЬ: Мне нужно что-то, что вернет истину, когда один из идентификаторов равен1, иначе ложно.

Ответы [ 2 ]

1 голос
/ 13 марта 2019

Я хочу перебрать элементы id и проверить, является ли текущий имеет значение = 1

Тебе не нужно этого делать. Следующее выражение:

/soapenv:Envelope/soapenv:Body/id=1

вернет true, если один или несколько элементов id имеют значение 1, в противном случае false.


Демоверсия : https://xsltfiddle.liberty -development.net / ej9EGc8

1 голос
/ 13 марта 2019
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    exclude-result-prefixes="xs"
    version="2.0">
    <xsl:template match="soapenv:Envelope">
        <xsl:for-each select="soapenv:Body">
            <xsl:if test="id='1'">
                do something
            </xsl:if>
        </xsl:for-each>
    </xsl:template>
You may use like this
...