Как вы отметили вопрос, как XSLT 2.0, если вы действительно хотите неэкранированный амперсанд &
в выводе HTML, то вы можете использовать карту символов:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="2.0">
<xsl:output method="html" use-character-maps="m1"/>
<xsl:character-map name="m1">
<xsl:output-character character="&" string="&"/>
</xsl:character-map>
<xsl:template match="/">
<html>
<body>
<p>This is a test of the encoding of the <code>&</code> character.</p>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Выход на
<html>
<body>
<p>This is a test of the encoding of the <code>&</code> character.
</p>
</body>
</html>
Но в HTML, как и в XML, амперсанд, как правило, экранируется как &
по какой-либо причине, и если ваш XSLT-процессор ускользает от него в результате вывода HTML, то это обычно реализуется nting правил синтаксиса HTML.
Не могли бы вы объяснить, в чем проблема? В HTML, как и в XML, амперсанд обычно кодируется как «&», поэтому где/почему на вашем выходе HTML вам нужен неограниченный амперсанд? –