XSLT - текст () объединяет слова - PullRequest
0 голосов
/ 29 мая 2018

У меня есть xsl, который выбирает текст со страницы html:

<content name="body_content">
  <xsl:apply-templates select="//body//text()"/>
</content>

Он работает нормально, отбрасывает все теги HTML и выбирает только текст между тегами body.

Проблема в том, чтокогда он отбрасывает тег HTML и выбирает текст, он объединяет слова, например:

<body>
  <u>Internet Access</u>
  <u>Web</u>
  <u>new cars</u>
</body>

Это создаст поле XML, подобное этому:

<content name="body_content">Internet Accesswebnew cars</content>

Это на самом деле не такпотому что он выбирает только текст в соответствии с инструкциями, но он не работает для меня из-за конкатенации слов.

Я использую XSL 1.0, кто-нибудь знает какой-либо способ преодоления этой проблемы?

Заранее спасибо

(html тэги могут не иметь смысла, я писал так только для этого примера)

1 Ответ

0 голосов
/ 30 мая 2018

Вы можете изменить ваши узлы text() с помощью следующего шаблона:

<xsl:template match="text()[normalize-space(.) != '']">
  <txt><xsl:value-of select="." /><txt />       <!-- Customize this line -->
</xsl:template> 

В этом примере каждый непустой узел text() заключен в элемент <txt>.Но вы можете настроить его так, как хотите.

...