Я не знаю, что вы подразумеваете под "неразрывной чертой", но вот простое решение :
<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="'—'"/>
<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()
.