使用XPath仅测试CDATA内容字符串

时间:2013-10-03 15:35:53

标签: xml xslt xpath cdata

我有以下XML代码:

<?xml version="1.0" encoding="ISO-8859-1"?>
<articles>
    <article>
        <title>
            <![CDATA[The title of the test]]>
        </title>
        <date>
            <![CDATA[27/07/2013]]>
        </date>
        <url>
            <![CDATA[http://www.google.com]]>
        </url>
    </article>
    <article>
        <title>
            <![CDATA[The title of the SECOND test]]>
        </title>
        <date>
            <![CDATA[27/12/2013]]>
        </date>
        <url>
            <![CDATA[]]>
        </url>
    </article>
</articles>

我想测试URL的CDATA中的字符串是否为空。在我的XML示例中,我认为第一个URL节点不为空,但第二个是空字符串。

是否可以在XSL 1.0样式表中使用XPath进行测试(我需要使用XSL解析此XML)?

我尝试使用以下XPath选择器:

string-length(/articles/article[2]/url)
string-length(/articles/article[2]/url/text())

根据Notepad ++中的XML Tools,第一个选择器结果为7,第二个选择器结果为4。

1 个答案:

答案 0 :(得分:1)

使用normalize-space函数去除开始和尾随空格: http://www.w3.org/TR/xpath/#function-normalize-space

像这样

string-length(normalize-space(/articles/article[2]/url))