繁体   English   中英

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

[英]how to check if tag is present in xml or not

我的XML是-

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

我想检查“ lang”标记/元素是否存在。 我正在使用下面的代码进行检查,但我认为它不起作用。 --

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

我无法理解我在这里做错了什么。 我提到了stackoverflow的这一页。 请提出其他解决方法。 提前致谢!

答案-

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

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

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

您可以使用XSLT检查。 选择并在什么时候适合这样做下面是示例代码

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

例如,在模板匹配app您可以使用<xsl:if test="data/lang">

提及的标签必须存在,尽管它可以为空。

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

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

要获得“不存在”的情况,请将源lang标记的名称更改为其他名称。

根据我对给出此答案的理解,认为这可能是您的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>

根据存在或不存在,您提供您的条件。 与呼叫模板相关的更多信息

我做了一个小小的改动来解决这个问题。 我在“ app”之前添加了“ /”。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM