Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml NULL时从输出中排除节点_Xml_Xslt - Fatal编程技术网

Xml NULL时从输出中排除节点

Xml NULL时从输出中排除节点,xml,xslt,Xml,Xslt,需要找到一种方法来防止XML节点在没有填充值的情况下被输出 这是我需要更改的XSLT的当前部分: <xsl:element name="CdtrAcct"> <xsl:element name="Id"> <xsl:element name="IBAN"> <xsl:value-of select="Supplier/Iban"/> </xsl:element> </xsl:element> &

需要找到一种方法来防止XML节点在没有填充值的情况下被输出

这是我需要更改的XSLT的当前部分:

<xsl:element name="CdtrAcct">
  <xsl:element name="Id">
   <xsl:element name="IBAN">
     <xsl:value-of select="Supplier/Iban"/>
   </xsl:element>
  </xsl:element>
</xsl:element>

环顾四周后,我尝试更改为以下内容,但不起作用:

<xsl:element name="CdtrAcct">
  <xsl:element name="Id">#
    <xsl:for-each select="CdtrAcct/Id">
  <xsl:if test="IBAN!= ''">
        <xsl:element name="IBAN">
          <xsl:value-of select="Supplier/Iban"/>
        </xsl:element>
  </xsl:if>
    </xsl:for-each>
  </xsl:element>
</xsl:element>

#
i、 e.如果IBAN为空,则CdtrAcct/Id不应具有该CdtrAcct/Id的IBAN子节点,但如果下一个CdtrAcct/Id具有IBAN,则应具有IBAN

非常感谢您的帮助。

只需更换此

<xsl:if test="IBAN!= ''">

谢谢,效果很好。我发现如果没有填充IBAN,我还需要排除ID节点,因此我将if测试提高了一个级别:)
<xsl:if test="Supplier/Iban != ''">
<CdtrAcct>
  <Id>#
    <xsl:for-each select="CdtrAcct/Id">
      <xsl:if test="Supplier/Iban!= ''">
        <IBAN>
          <xsl:value-of select="Supplier/Iban"/>
        </IBAN>
      </xsl:if>
    </xsl:for-each>
  </Id>
</CdtrAcct>