Как найти все пустые поддеревья в XPath - PullRequest
2 голосов
/ 08 июля 2010

Общая цель состоит в том, чтобы удалить все пустые узлы, включая узлы, которые были бы сделаны пустыми, если бы дочерние пустые узлы были удалены.Следующее:

<xsl:template match="*[not(node())]"/>

удалит пустые узлы, но оставит пустые узлы, в которых ранее были только пустые узлы.Я думаю, что мне нужен xpath, который будет соответствовать всем узлам, у всех потомков которых нет атрибутов и текстовых узлов (игнорируя пробелы).

Ответы [ 2 ]

4 голосов
/ 08 июля 2010

Использование :

<xsl:template match="*[not(.//@*) and not(descendent::text())]"/>

Уведомление оператора and.Использование or не решает проблему.

0 голосов
/ 08 июля 2010

Я думаю, что нашел ответ ...

<xsl:template match="*[not(.//text() | .//@*)]"/>

Просто найдите все узлы, у которых нет текста или атрибутов-потомков, верно?Есть ли что-то, чего мне не хватает, чтобы это не делало то, что я думаю, в некоторых случаях?В моем простом тесте это сработало.

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