переписать XPATH выражение отрицание без использования NOT? - PullRequest
0 голосов
/ 26 января 2019

Я хочу разрешить <applic> для <table>, но не для table потомков.Я пишу XPATH в текстовом файле, который импортируется в базу данных.По какой-то причине база данных помечает некоторые или все XPATH с not в выражении как недействительные.Есть ли способ написать следующее без not?(Я проверил с помощью онлайн-проверки и проверки XPATH, и это сработало, как и ожидалось.)

//ancestor::table//applic/not(parent::table)

<table>
    <applic>table applic
        <assert displayclass="assert displayclass"/>
        <evaluate displayclass="eval displayclass"/>
    </applic>
    <tgroup>
        <thead>
            <row>
                <entry>entry<applic>entry applic</applic><ftnote/></entry>
            </row>
        </thead>
    </tgroup>
</table>

Сначала applic в порядке, applic в entry нетразрешено.

Объединение обоих ответов решило проблему и позволило мне исправить другие неверные пути:

//parent::table//applic[not(parent::table)]

1 Ответ

0 голосов
/ 26 января 2019

Вы можете выбрать все элементы applic, которые являются прямыми потомками элементов table со следующим выражением:

//applic[parent::table]

Ось ancestor::, напротив, выберет все элементы applic, которые имеют предка table. В вашем случае это выберет оба узла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...