Я ищу способ написать тест xpath/schematron для идентификации конкретного узла каждый раз, когда он содержит какое-либо небелое пространство, развернутый текст в любом месте непосредственно внутри узла (имеется в виду, возможно, среди, но не в дочернем элементе) . Итак, если мой xml выглядит так:
<root>
...
<node>
<arbitraryChild/>
Find me
<arbitraryChild>Don't find me</arbitraryChild>
more text
</node>
...
<node>
<arbitraryChild/> <arbitraryChild/>
<arbitraryChild>Don't find me</arbitraryChild>
</someNode>
...
</node>
Он идентифицирует первый экземпляр somenode, но не второй. Я пробовал каждую вариацию contains(...), text() и test="...", которую я могу придумать, но очевидно, что я подхожу к этому не с той стороны.
test="normalize-space(text()[1])"
Мой синтаксический анализатор жалуется и дает сбой каждый раз, когда я использую text(), и он попадает в узел с текстом с дочерними элементами, перемежающимися в середине строки (он говорит мне, что последовательность из более чем одного узла не разрешена, так как первый аргумент...). Таким образом, просто пройдясь по первому текстовому узлу, я могу определенно сказать, что в узле есть текст. Тем не менее, это кажется глупым. Должен быть лучший подход... - person wolfmason   schedule 15.07.2015