2014-09-11 2 views
0

Как я могу найти текстовый узел, который непосредственно предшествует элементу «specialElem» («Foo-» в этом примере)? В то время как все остальные пробелы внутри «основного» -элемента должны быть сохранены, пробелы перед элементом «специального эльфа» должны быть удалены.XSLT Найти предшествующий текстовый узел в элементе смешанного контента

<main> 
    Foo Foo 
    <someElem> 
    Foo Foo 
    </someElem> 
    Foo Foo 
    <otherElem> 
     <subElem> 
      Foo Foo 
     </subElem> 
    </otherElem> 
    Foo-  <!-- the whitespaces here shall be removed --> 
    <specialElem> 
     Bar! 
    <specialElem/> 
    Foo Foo 
</main> 

Желаемый результат:

Foo Foo Foo Foo Foo Foo Foo Foo Foo-Bar! Foo Foo

Thnaks заранее!

+0

Не могли бы вы дать нам реальный пример того, что вам нужно? Похоже, это странное требование. – JLRishe

ответ

0

Если вы закроете должным образом <specialElem> тега и удалить комментарий, то:

/main/text()[following-sibling::node()[1][self::specialElem]] 

будет выбрать требуемый текст узел/с.

-
Не совсем уверен, каков ваш запрошенный выходной формат.

+0

Спасибо! Кажется, это работает. Не могли бы вы объяснить выражение селектора на обычном языке? – Schinski

+0

@Schinski Выберите текстовый узел/s (дочерний элемент 'main'), чей непосредственный следующий родственный элемент является элементом' specialElem'. –

Смежные вопросы