Почему Xpath 3.0 работает, но Xquery 3.0 не работает с тем же выражением - PullRequest
0 голосов
/ 19 мая 2018

Я запустил 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 голосов
/ 19 мая 2018

Я подозреваю, что ваш реальный, полный ввод имеет объявление пространства имен по умолчанию в XHTML xmlns="http://www.w3.org/1999/xhtml", и в oXygen для XPath у вас включен параметр "использовать пространство имен по умолчанию для корневого элемента", поэтому ваш путь работает с XPath из коробки.в то время как для XQuery вам необходимо убедиться, что вы явно указали

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

в прологе вашего файла XQuery или образца кода.

...