如何检查xml中是否存在标记

时间:2018-05-08 10:52:53

标签: xml xslt

我的XML是 -

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

我想检查一下是否存在'lang'标签/元素。 我使用下面的代码来检查它,但我认为它不起作用。 -

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

我无法理解我在这里做错了什么。我提到了stackoverflow的this页面。 请建议任何其他方式来解决这个问题。 提前谢谢!

回答 -

经过多次更改,我得到了一个解决方案。我做了一个小改动来解决这个问题。我在'app'之前添加了'/'。

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

感谢大家分享他们的解决方案。

4 个答案:

答案 0 :(得分:0)

您可以使用XSLT检查。选择和何时做好 以下是示例代码

   <xsl:choose>
          <xsl:when test="app/data/lang">
                 *write what ever you want*
          </xsl:when>
   </xsl:choose>

答案 1 :(得分:0)

E.g。在匹配app的模板中,您可以使用<xsl:if test="data/lang">

提到的标签必须存在,尽管它可能是空的。

您的脚本失败的可疑原因是当前对象可能 是app/data/lang路径找不到任何东西。

有关工作示例,请参阅http://xsltransform.net/bEJaog9

要获得“缺席”案例,请更改,例如源lang标记的名称。

答案 2 :(得分:0)

根据我对此答案的理解,请考虑这可能是您的XML

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

你需要根据你必须调用的模板来检查AddInfo标签,那么这将是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 Link here

相关的更多内容

答案 3 :(得分:0)

我做了一个小改动来解决这个问题。我添加了&#39; /&#39;之前&#39; app&#39;。

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