XSLT выделить весь текст - PullRequest
       1

XSLT выделить весь текст

2 голосов
/ 01 сентября 2011

Я хочу выделить весь текст, выполнить поиск и заменить.
Я хочу превратить все разбитые в неразрывные черты.

Я использую этот шаблон для поиска и замены детали,
теперь мне просто нужно запустить весь текст через него ..

1 Ответ

3 голосов
/ 01 сентября 2011

Я не знаю, что вы подразумеваете под "неразрывной чертой", но вот простое решение :

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:param name="vRep" select="'&#8212;'"/>

 <xsl:template match="node()|@*">
  <xsl:copy>
   <xsl:apply-templates select="node()|@*"/>
  </xsl:copy>
 </xsl:template>

 <xsl:template match="text()">
  <xsl:value-of select="translate(.,'-', $vRep)"/>
 </xsl:template>
</xsl:stylesheet>

Когда применяется это преобразованиев любом XML-документе результатом является тот же документ, в котором любой '-' заменяется тем, что указано в качестве значения глобального параметра $ vRep .

Например, когда применяетсяв этом XML-документе :

<a>
 <b>Hi - hi</b>
 - - -
 <c>
   <d>Wow... - cool</d>
 </c>
 - - -
</a>

результат будет :

<a>
  <b>Hi — hi</b>
 — — —
 <c><d>Wow... — cool</d></c>
 — — —
</a>

Объяснение : использование правила идентификации,переопределяется шаблоном, соответствующим любому текстовому узлу, и переводит любой символ '-' в нем в символ, содержащийся в $vRep - с помощью стандартной функции XPath translate().

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