Как проверить, есть ли тег в XML или нет - PullRequest
0 голосов
/ 08 мая 2018

мой XML -

<app>
 <data>
    <lang>en</lang>
 </data>
</app>

Я хочу проверить, присутствует ли тег / элемент lang или нет. Я использую код ниже, чтобы проверить это, но я думаю, что это не работает. -

<xsl:if test="app/data/lang">
<xsl:call-template name="xyz" /></xsl:if>

Я не могу понять, что я делаю здесь неправильно. Я упомянул эту страницу стека overflow. Пожалуйста, предложите любой другой способ решить эту проблему. Заранее спасибо!

Ответ -

После многих изменений я получил одно решение. Я сделал небольшое изменение, чтобы решить эту проблему. Я добавил «/» перед «app».

<xsl:if test="/app/data/lang">
  <xsl:call-template name="xyz" />
</xsl:if>

Спасибо всем за то, что поделились своими решениями.

Ответы [ 4 ]

0 голосов
/ 09 мая 2018

Я сделал небольшое изменение, чтобы решить это. Я добавил «/» перед «app».

<xsl:if test="/app/data/lang">
  <xsl:call-template name="xyz" />
</xsl:if>
0 голосов
/ 08 мая 2018

например. в шаблоне соответствия app вы можете использовать <xsl:if test="data/lang">.

Указанный тег должен существовать, хотя он может быть пустым.

Предположительная причина того, что ваш скрипт не выполнен, заключается в том, что текущий объект может быть таким, что app/data/lang путь ничего не находит.

Рабочий пример см. http://xsltransform.net/bEJaog9

Чтобы получить дело об отсутствии, измените, например, имя исходного тега lang для любого другого.

0 голосов
/ 08 мая 2018

Исходя из моего понимания, дающего этот ответ, подумайте, что это может быть ваш XML

<Data>
    <Record>
     <AddInfo>
     </AddInfo>
    </Record>
</Data>

вам нужно проверить тег AddInfo, основываясь на том, что вы должны вызвать call-template, тогда это будет XSL, который нужно сформировать

<?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"/>

  <xsl:template match="Data/Record">
      <xsl:choose>
        <xsl:when test="AddInfo">Present</xsl:when>
        <xsl:otherwise>Not Present</xsl:otherwise>
      </xsl:choose>
  </xsl:template>
</xsl:stylesheet>

Исходя из того, присутствует или нет, вы указываете свое состояние. Другие материалы, связанные с call-template Ссылка здесь

0 голосов
/ 08 мая 2018

Вы можете использовать проверку XSLT. Выберите и Когда это хорошо Ниже приведен пример кода

   <xsl:choose>
          <xsl:when test="app/data/lang">
                 *write what ever you want*
          </xsl:when>
   </xsl:choose>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...