过滤null的任何方法都会导致XSLT?

时间:2018-05-25 19:01:29

标签: xml xslt

我正在进行跨越多个文件的XSLT转换,而某些文件不会有字段。我有一个解决方法(如下所示),但宁愿不必为所有字段都这样做。

注意:我使用的是XSLT 1.0,但现在可以使用2.0

<xsl:variable name="TestVar" select="ns2:value"/>
        <xsl:if test="$TestVar != null">
                <Namespace:hasThisValue>
                    <xsl:value-of select="ns2:value"/>
                </Namespace:hasThisValue>
                </xsl:if>

1 个答案:

答案 0 :(得分:0)

您必须在文字中显示输入样本的确切详细信息,并在文字中说明&#34;某些文件不会有字段&#34;,在您的代码中,您需要检查&#34; ; ns2:value!= null&#34;在我看来,作为右手边并没有多大意义&#34; null&#34;会尝试选择该名称null的元素。因此,大多数人都会问类似的问题,但是你没有很好地解释你期望的数据类型,以及你希望将其转化为什么样的数据,特别是你认为&#34; null&#34; XML上下文中的值(例如,XSD架构具有xsi:nil属性。)

一般情况下,如果您想将ns2:value元素转换为Namespace:hasThisValue元素,那么您可以编写模板

<xsl:template match="ns2:value">
  <Namespace:hasThisValue>
    <xsl:value-of select="."/>
  </Namespace:hasThisValue>
</xsl:template>

并确保进一步提升您拥有<xsl:apply-templates/>的层次结构。