XML 如果第一个变量为空,则使用另一个变量

Posted

技术标签:

【中文标题】XML 如果第一个变量为空,则使用另一个变量【英文标题】:XML Use another variable if first one is empty 【发布时间】:2021-12-17 22:17:05 【问题描述】:

我是 xml 和 xsl 的新手。 我有一个与 xsl:value-of select 相关的问题

有没有办法插入“isnull”类型,这意味着如果一个值为空,它应该隐藏该标签并使用另一个标签?

代码示例:

      <ExternalIdentifier>
        <!-- Id number -->
        <TypeCode>IdentityDocumentId </TypeCode>
        <Id>
          <xsl:value-of select="idy_nbr"/>
        </Id>
      </ExternalIdentifier>

我需要将其更改为类似的内容(但如果没有值,它应该隐藏 IdentityDocumentId 标记并改用 Passport Number 标记:

  <ExternalIdentifier>
    <!-- Id number -->
    <TypeCode>IdentityDocumentId </TypeCode>
    <Id>
      <xsl:value-of select="idy_nbr"/>
    </Id>
    <TypeCode>Passport Number</TypeCode>
    <Id>
      <xsl:value-of select="ppo_nbr"/>
    </Id>
  </ExternalIdentifier>

谢谢。

【问题讨论】:

【参考方案1】:

这就是模板规则的用途:

<xsl:apply-templates select="idy_nbr, "pro_nbr"/>

<xsl:template match="idy_nbr">
   <TypeCode>IdentityDocumentId</TypeCode>
   <Id>
       <xsl:value-of select="idy_nbr"/>
   </Id>
</xsl:template>

<xsl:template match="pro_nbr">
   <TypeCode>Passport Number</TypeCode>
   <Id>
       <xsl:value-of select="pro_nbr"/>
   </Id>
</xsl:template>

【讨论】:

【参考方案2】:

我想你想要这样的东西:

<ExternalIdentifier>
    <xsl:choose>
        <xsl:when test="string(idy_nbr)">
            <TypeCode>IdentityDocumentId</TypeCode>
            <Id>
                <xsl:value-of select="idy_nbr"/>
            </Id>
        </xsl:when>
        <xsl:otherwise>
            <TypeCode>Passport Number</TypeCode>
            <Id>
                <xsl:value-of select="ppo_nbr"/>
            </Id>
        </xsl:otherwise>
    </xsl:choose>
</ExternalIdentifier>

未测试,因为没有提供输入示例。

【讨论】:

以上是关于XML 如果第一个变量为空,则使用另一个变量的主要内容,如果未能解决你的问题,请参考以下文章

plsql 检查 where 子句中至少一个变量不为空

复制并粘贴到另一个工作表的第一个空行,如果第一个单元格为空,则粘贴到上一行

vbscript 如果另一个返回变量不可为空,则VB.NET可空整数通过if语句可能没有任何结果= 0。

学习shell第五天

prepareforsegue 函数中的变量为空

两个文本框,一个按钮,js怎样判断,点击按钮时,两个文本框都为空,则提示必填一个,两个都有内容?