処理命令をエスケープする何かを必要としない、彼らはそのまま正確に扱われ<?
と?>
間の何に、コメントに似た構文解析されている:そのように使用されます。あなたができる場合は、代わりにこれを生成するために、その命令を生成しています何でも修正する必要があります。
<?xm-mark data="<p>Here is the text</p>" ?>
あなたがそれを行うことができない場合は、私もそれを解析するためにXSLTを使用しようとしないでしょう。
編集:あなたがここに必要以上に複雑になる可能性が高いので、おそらく明確にする必要があります:処理命令には属性がなく、最後のスペースも '処理命令ノードの「値」となります。実際にはxm-mark
という名前の命令とここではdata="<p>Here is the text</p>"
という値があります(ここにはスペースは含まれていません)。data
も値の一部です<p>..</p>
部分として
あなたのケースでは、おそらく処理命令ノードの値は、おそらくあなたが興味を持っているでしょう、<?xm-mark <p>Here is the text</p>?>
で十分です。
EDIT:
<xsl:template match="processing-instruction('xm-mark')">
<xsl:element name="mymark">
<xsl:call-template name="unescape">
<xsl:with-param name="input" select="substring-before(substring-after(., 'data="'), '"')" />
</xsl:call-template>
</xsl:element>
</xsl:template>
<xsl:template name="unescape">
<xsl:param name="input" />
<xsl:choose>
<xsl:when test="contains($input, '&lt;')">
<xsl:call-template name="unescape">
<xsl:with-param name="input" select="substring-before($input, '&lt;')" />
</xsl:call-template>
<xsl:text><</xsl:text>
<xsl:call-template name="unescape">
<xsl:with-param name="input" select="substring-after($input, '&lt;')" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$input" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
NB:まあ、あなたはこれを試みることができるあなたはそれを参照するために&
を使用する必要がXSLTで処理する際&
は、むしろマークアップよりもテキストとして採用されているので。したがって、処理命令の値は、xml文書で 'そのまま'出力された場合、実際には&lt;p>etc..
と表されます。上記のxslは少なくとも<p>etc..
に変換されますが、実際のp
タグが必要な場合は、拡張メソッドを使用してください。
ここで誤解があると思います。「xsl:value-of」出力**テキストノード**とテキストノードには、適切なXML文書の中で**文字エンティティ**にエンコードする特殊文字「& 。いくつかの文字列を疑似XML "断片"ではなくポーズとして出力したい場合は、DOEメカニズムを使用してください。スマートデザイナーの中には、この ''と ''を '&'に変換する非解析擬似XML文字列を再エンコードすることを選択した場合、これをプリデコードする必要があります。これはすでに前に答えられました...私は検索します... –
これはマークアップを破壊する悲劇的なケースです。分析と推奨される解決策については私の答えを参照してください。 –
私はすべての処理命令とエンコードされた文字でxmlを作成していないし、サプライヤに変更を加える力を持っていないことは明らかです。エンコードを行うために.netで拡張を作成するのは簡単ですが、 "all xslt"ソリューションを望んでいました。 – Wavel