我在嘗試獲取我的xml文件中的第一個非空值時遇到了問題。在XML中查找第一個非空值
下面是XML文件的樣子:
<?xml version="1.0"?>
<ROOT>
<Student>
<Student_id>TEST1</Student_id>
<last_printed>2014-03-11-08:00</last_printed>
</Student>
<Student>
<Student_id>TEST3</Student_id>
<last_printed></last_printed>
</Student>
<Student>
<Student_id>TEST4</Student_id>
<last_printed>2014-03-06-08:00</last_printed>
</Student>
</ROOT>
我想搶到第一<last_printed>
元素使用此XSLT解析出日期:
<xsl:variable name="day" select="substring-before(substring-after(substring-after(/ROOT/Student[1]/last_printed[text() != ''], '-'), '-'), '-')"/>
<xsl:variable name="month" select="substring-before(substring-after(/ROOT/Student[1]/last_printed[text() != ''], '-'), '-')"/>
<xsl:variable name="year" select="substring-before(/ROOT/Student[1]/last_printed[text() != ''], '-')"/>
最終的結果是一日期顯示MMDDYYYY:
<xsl:value-of select="substring(concat($month, $day, $year, $padding), 1, 8)"/>
我試過放置索引[1]
在變量聲明學生元件上,如上圖所示,我也試圖把在這裏:
<xsl:variable name="year" select="substring-before(/ROOT/Student/last_printed[1][text() != ''], '-')"/>
如果我不包括[1]
,我得到一個錯誤,指出:
序列(「2014-03-06-08:00」,「2014-03-11-08:00」)
它抓住了所有的項目不能作爲子串的第一個參數XML中的日期值。
隨着[1]
,它看起來像XSLT抓住它遇到的第一個元素,但它抓住一個空的元素。
我該如何抓住第一個非空元素。我認爲[text() != '']
會有所幫助,但事實並非如此。
您的XML無效; '''' –
Utkanos
@Utkanos - 抱歉,複製並粘貼錯誤。 – RXC
似乎對我來說 - http://www.xmlplayground.com/lTakkR – Utkanos