解析XML并检查XSL文档中的Null值

时间:2013-12-02 15:45:26

标签: xml xslt xml-parsing xslt-1.0

我正在使用以下格式解析一些XML:

<J_TITLE>
<DATA pid="1"><xsl:value-of select = "//TITLE"/></DATA>
<DATA pid="3"><xsl:value-of select = "//TITLE_FOR_3"/></DATA>
</J_TITLE>

我想做的是检查TITLE_FOR_3是否为空。如果它将值更改为DATA pid = 3的其他内容。

我试图完成以下操作,但这不起作用:

<JPM_TITLE>
    <DATA pid="1"><xsl:value-of select = "//TITLE"/></DATA>

    <xsl:value-of select = "//TITLE_FOR_3"/>
    <xsl:choose>
        <xsl:when test="string-length($NorTitle)!=0">
          <DATA pid="3"><xsl:value-of select = "//TITLE"/></DATA>
        </xsl:when>
        <xsl:otherwise>
          <DATA pid="3"><xsl:value-of select = "//TITLE_FOR_3"/></DATA>
        </xsl:otherwise>
    </xsl:choose>
</JPM_TITLE>

上述情况与我原来的测试略有不同。如何命名选择值部分以便我可以进行字符串长度检查?或者我如何将其值传递给字符串长度检查?

1 个答案:

答案 0 :(得分:0)

你这样做:

<xsl:variable name="NorTitle" select = "//TITLE_FOR_3"/>

..正如Marcus正确指出的那样,测试为:

<xsl:when test="string-length(normalize-space($NorTitle))!=0">

或:

<xsl:when test="string(normalize-space($NorTitle))">

(在XPath中,当字符串为非空时,字符串为'true')