2012-01-02 22 views
1

要素にいくつかのhtmlコードを保持するxmlファイルがあります。しかし、HTML要素はエスケープされ、CDATAまたは '<'と '>'のエンティティで宣言されます。スタイルシート(XSLT)を使用したXMLでの文字データへのアクセス

したがって、私は単純にこれらの要素をxsl要素 'テンプレート'と一致させることはできません。 私はスタイルシートでhtml要素とその属性にアクセスして修正したいと思いますが、これは可能ですが、まだそれを行う方法を見つけることができませんでした。

私はこの問題でかなり長い時間を扱っているので、本当にあなたの助けに感謝します。 ありがとうございます!

<?xml version="1.0"?> 
<Master> 
<Content> 
    <SomeHTML> &lt; img src="./world.jpg" &gt; 
      <!-- This is one out of many other html elements I want to access --> 
    </SomeHTML> 
</Content 
</Master> 

答えて

1

あなたは、<SomeHTML>の内のテキストを解析するための拡張機能を使用します(多分別のモードを使用して)テンプレート上にそれを渡し、最終的にあなたの出力に<xsl:value-of disable-output-escaping="true"/>を使用することができます。

    もちろんの拡張機能必見は、さまざまな理由のために、このような拡張機能をインストールする、および/または使用できないことがあり、あなたのパーサまたはあなたの環境のいずれかによって制約されることを意味し、あなたのパーサによってサポートされますJavaの標準的なXSLTインフラストラクチャの

  • アン拡張機能はhttp://docs.oracle.com/cd/B10464_05/web.904/b12099/adx04xsl.htm#1008934

  • サクソンsaxon:parse(string)を持っているに与えられたが、文書によると、これは整形式のXMLに限定されている - 限り私はあなたの例から見ることができるように、あなたがドン」それはありません。

+0

実際には、Ibexのプロセッサ( 'Ibex PDF Creator')を使用してPDFを作成するサードパーティのソフトウェアを使用しています。このソフトウェアでは、カスタムスタイルシートを使用してPDFのレイアウトを変更することができます。デフォルトのスタイルシートもあります。ソースコードの一部であるため、編集もオープンもできません。しかし、PDFにはxmlのすべてのhtmlデータが含まれているため、デフォルトのスタイルシートは文字データに何らかの形でアクセスして管理します。 – Thomas

1

いいえ、文字データは通常のテキストではなく、htmlですので、それは、純粋なXSLTに不可能ですので、あなたは、文字列関数(例えば、サブストリング)と通常のテキストとして、それを処理することができます。 HTMLパーサで拡張機能を使用する必要があります。プロセッサ固有です。

htmlは、最初にタグとしてXMLファイルに格納する必要があります(もちろん、タグを閉じて空にするか、<img/>として使用する必要があります)。

1

どのXSLTプロセッサを使用しますか?たとえば、Saxon 9では、http://www.saxonica.com/documentation/extensions/functions/parse-html.xmlのような拡張機能を使用できます。

+0

私は、Ibex PDF Creatorを使用するサードパーティのソフトウェアを使用しています。しかし、私は適切な拡張機能を見つけることができませんでした。 – Thomas

関連する問題