是否可以使用设置默认值<xsl:value-of>
?我正在尝试使用 XSLT 样式表生成 JSON 输出,并且某些字段在处理阶段可能不可用。这会留下一个空值,这会破坏 JSON 文档的有效性。理想情况下,如果一个默认值不可用,我可以设置一个默认值。所以在以下情况下:
"foo_count": <xsl:value-of select="count(foo)" />
如果<foo>
在文档中不可用,我可以以某种方式将其设置为 0 吗?
要么选择
<xsl:choose>
<xsl:when test="foo">
<xsl:value-of select="count(foo)" />
</xsl:when>
<xsl:otherwise>
<xsl:text>0</xsl:text>
</xsl:otherwise>
</xsl:choose>
或使用if 测试
<xsl:if test="foo">
<xsl:value-of select="count(foo)" />
</xsl:if>
<xsl:if test="not(foo)">
<xsl:text>0</xsl:text>
</xsl:if>
或使用命名模板进行调用
<xsl:template name="default">
<xsl:param name="node"/>
<xsl:if test="$node">
<xsl:value-of select="count($node)" />
</xsl:if>
<xsl:if test="not($node)">
<xsl:text>0</xsl:text>
</xsl:if>
</xsl:template>
<!-- use this in your actual translate -->
<xsl:call-template name="default">
<xsl:with-param name="node" select="."/>
</xsl:call-template>
使用序列表达式:
<xsl:value-of select="(foo,0)[1]"/>
构造序列的一种方法是使用逗号运算符,该运算符 评估其每个操作数并将结果序列按顺序连接到单个结果序列中。
您可以在表达式上使用条件表达式 ( if…then…else
)@select
:
<xsl:value-of select="if (foo) then foo else 0" />