检查XSLT中的字符串是否为空或为空
如何使用XSL检查值是空还是空?
例如,如果categoryName
是空的? 我正在使用选择构造时。
例如:
<xsl:choose>
<xsl:when test="categoryName !=null">
<xsl:value-of select="categoryName " />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="other" />
</xsl:otherwise>
</xsl:choose>
test="categoryName != ''"
编辑 :这涵盖了最可能的解释,在我看来,从这个问题推断出来的“[not] null或empty”,包括它的伪代码和我自己早期的XSLT经验。 也就是说,“以下Java的等价物是什么?”:
!(categoryName == null || categoryName.equals(""))
有关更多详细信息,例如,明确识别空对空,请参阅下面的johnvey的答案和/或我从该答案改编的XSLT'小提琴',其中包括迈克尔凯评论中的选项以及第六种可能的解释。
在没有任何其他信息的情况下,我将假设以下XML:
<group>
<item>
<id>item 1</id>
<CategoryName>blue</CategoryName>
</item>
<item>
<id>item 2</id>
<CategoryName></CategoryName>
</item>
<item>
<id>item 3</id>
</item>
...
</group>
示例用例如下所示:
<xsl:for-each select="/group/item">
<xsl:if test="CategoryName">
<!-- will be instantiated for item #1 and item #2 -->
</xsl:if>
<xsl:if test="not(CategoryName)">
<!-- will be instantiated for item #3 -->
</xsl:if>
<xsl:if test="CategoryName != ''">
<!-- will be instantiated for item #1 -->
</xsl:if>
<xsl:if test="CategoryName = ''">
<!-- will be instantiated for item #2 -->
</xsl:if>
</xsl:for-each>
从空的元素:
测试某个节点的值是否为空
这取决于你的意思是空的。
not(node())
not(string(.))
not(normalize-space(.))
not(node()[not(self::comment())])
包含任何内容: not(node()[not(self::comment())])
上一篇: Check if a string is null or empty in XSLT
下一篇: Convert a string representation of a hex dump to a byte array using Java?