У меня есть XML, как это,XSLT - преобразование символов Юникода
<doc>
<?PIValue ÒÓÔÕÖØ ÀÁÂÃÄÅ?>
<p>ÒÓÔÕÖØ ÀÁÂÃÄÅ</p>
</doc>
У меня есть XSLT преобразование для этого XML следующим образом,
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="doc">
<doc>
<xsl:apply-templates/>
<p2><xsl:value-of select="processing-instruction('PIValue')"/></p2>
</doc>
</xsl:template>
<xsl:template match="p">
<p1>
<xsl:apply-templates/>
</p1>
</xsl:template>
Выход из выше преобразования это это,
<doc>
<?PIValue ÒÓÔÕÖØ ÀÁÂÃÄÅ?>
<p1>ÒÓÔÕÖØ ÀÁÂÃÄÅ</p1>
<p2>&#x00D2;&#x00D3;&#x00D4;&#x00D5;&#x00D6;&#x00D8; &#x00C0;&#x00C1;&#x00C2;&#x00C3;&#x00C4;&#x00C5;</p2>
</doc>
Как вы можете видеть символы Юникода находились в пределах <p>
, элемент отображался как обычный текст на выходе (в пределах <p1>
элемент). Но те же символы юникода в инструкции обработки не показаны, как соответствующие символы на выходе (в пределах <p2>
).
Как я могу изменить свое преобразование, чтобы показать текстовую строку и в элементе.
expected output,
<doc>
<?PIValue ÒÓÔÕÖØ ÀÁÂÃÄÅ?>
<p1>ÒÓÔÕÖØ ÀÁÂÃÄÅ</p1>
<p2>ÒÓÔÕÖØ ÀÁÂÃÄÅ</p2>
</doc>
Хороший вопрос, но нет простого решения, так как с элементом 'p' во вводе символьные ссылки в содержимом просто преобразуются парсером XML в соответствующие символы. Это не происходит с содержимым pi, так как это содержание символа. Какой процессор XSLT вы используете точно? –
@MartinHonnen, я использую XSLT 2.0 – sanjay