为什么Xpath 3.0有效,但Xquery 3.0不能使用相同的表达式

时间:2018-05-19 11:55:05

标签: xpath xquery

我在Oxygen中启动了Xpath。在Xpath 3.0中找到了我需要但在Xquery 3.0中找不到的东西。

这是我的Xpath表达式

//table[tbody/tr/th/p[contains(text(), 'All Water System Contacts')]]/tbody/tr[3]/td[1]

这是我的xml代码 我把部分代码。

<table border="1" cellpadding="1" cellspacing="1" summary="." width="640">
    <tbody>
        <tr>
            <th colspan="3">
                <p>All Water System Contacts </p></th>
        </tr>
        <tr>
            <th>Type</th>
            <th>Contact</th>
            <th>Communication</th>
        </tr>
        <tr>
            <td align="center">AC - Administrative Contact - GENERAL MANAGER </td>
            <td align="center">GRANT, JOHN, W <br/> PO BOX 869<br/> BIG SPRING, TX&nbsp;79721-0869 </td>
            <td align="center">
                <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse"
                    width="100%">
                    <tbody>
                        <tr>
                            <th><b>Electronic Type</b></th>
                            <th><b>Value</b></th>
                        </tr>
                    </tbody>
                </table>
                <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse"
                    width="100%">
                    <tbody>
                        <tr>
                            <th><b>Phone Type</b></th>
                            <th><b>Value</b></th>
                        </tr>
                        <tr>
                            <td align="center">BUS - Business</td>
                            <td align="center">432-267-6341 </td>
                        </tr>
                        <tr>
                            <td align="center">FAX - Facsimile</td>
                            <td align="center">432-267-3121 </td>
                        </tr>
                        <tr>
                            <td align="center">BUS - Business</td>
                            <td align="center">432-267-6070 </td>
                        </tr>
                    </tbody>
                </table>
            </td>
        </tr>
        <tr>
            <td align="center">OW - Owner </td>
            <td align="center">COLORADO RIVER MUNICIPAL WATER DISTRICT <br/> PO BOX 869<br/> BIG
                SPRING, TX&nbsp;79721-0869 </td>
            <td align="center"> </td>
        </tr>
    </tbody>
</table>

我尝试了不同的功能。

我不知道它为什么不起作用以及有什么区别

请帮帮我。

1 个答案:

答案 0 :(得分:6)

我怀疑你的真实,完整的输入有一个XHTML默认命名空间声明xmlns="http://www.w3.org/1999/xhtml",而在oXygen for XPath中你可以启用设置“使用根元素的默认命名空间”,这样你的路径就可以使用XPath了对于XQuery,您需要确保明确设置

declare default element namespace 'http://www.w3.org/1999/xhtml';

在您的XQuery文件或代码示例的序言中。