2016-08-22 21 views
0

部分的にエンコードされた入力XML文書があります。ここではサンプルです:XSLアンエスケープ前処理

<content> 
    <body> 
    &lt;div class="contentLayout"&gt;&lt;div&gt;&lt;div&gt;&lt;table&gt; 
     [table's content] 
    &lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; 
    </body> 
</content> 

XSLスタイルシートの助けを借りて、私は、テーブルの内容を表示したいのですが、エスケープコードに対処する方法がわかりません。 私は最初にエスケープして<table>ノードを選択すると考えましたが、これを行う方法は見つけられませんでした。 <xsl:value-of select="." disable-output-escaping="yes" />を使用しているようですが、<table>ノードのみを選択することはできません。

解決策はありますか?

+0

してください[編集]コードとしてあなたの質問やフォーマットのマークアップ、それは正しく表示されるように。ありがとう。 – kjhughes

+0

完了。事前に感謝 –

+0

良いスタート。立ち止まるな。あなたは終わっていない。 – kjhughes

答えて

0

XSL変換は

私はツールに慣れていないよ怖い

マクロConfluenceのXSLTによって行われます。できる場合は、2つのパスでこれを行うことをお勧めします:まず、要素で disable-output-escapingを使用し、結果を新しいファイルに保存します。次に、2回目のパスで新しいファイルを処理します。

代替は醜いであり、容易に予期しない結果につながることができます:

<xsl:template match="/content"> 
    <table> 
     <xsl:value-of select="substring-before(substring-after(body, '&lt;table&gt;'), '&lt;/table&gt;')" disable-output-escaping="yes"/> 
    </table> 
</xsl:template> 
+0

ありがとうございました。 新しい物理ファイルではなく、最初のパスを変数に保存することはできますか? –

+1

@PierreGいいえ、そうではありません。プロセッサに結果をシリアル化する必要があります。これは最終出力でのみ発生します。 –