0

XMLJava だけを使用してファイルをに変換する方法を学んでいましたが、後で言語をHTML使用して同じことを行う方法を学ぶことにしました。XSLT


javaということは、XSLT 言語ではなく、Java 言語の構文だけを使用することを意味します。


明確にするために:

  1. XML を DOM にロードする ( を使用DocumentBuilder)。
  2. それを解析します(のようなことをするだけですdoc.getFirstChild())。
  3. HTML ファイルに書き込みます (XML シリアライゼーションではなく、文字ストリームを使用するだけです)。

どうしたの?

次の行を my に含めた後XML:

<?xml-stylesheet type="text/xsl" href="mystylesheet.xsl"?>

私のJavaアプリケーションはHTML正しいものを書くことができませんでした...

それを取り除けば大丈夫ですが、残しておきたいです。

この「指示」を無視する方法はありますか?

4

3 に答える 3

1

デフォルトでは、XSLT は処理命令を無視します (つまり、削除します)。これを保持したい場合は、テンプレート ルールを追加するだけです。

<xsl:template match="processing-instruction('xml-stylesheet')">
  <xsl:copy/>
</xsl:template>

これは、スタイルシートが apply-templates を使用して従来の再帰降下スタイルで記述されていることを前提としています。XSLT を独学している場合は、このスタイルをまだ学んでいない可能性があります。いつものように、コードを見せてもらったほうがずっと簡単です。

于 2013-05-15T07:54:13.743 に答える
0

Java アプリケーションから XML を読み取る方法によって異なります。しかし、XMLに次のような処理命令が埋め込まれている場合

<?xml-stylesheet type="text/xsl" href="mystylesheet.xsl"?>

つまり、スタイルシートはデータの不可欠な部分であり、XML を使用するには XML に適用する必要があります。これは、次のような CSS スタイルシート処理命令に非常に似ています。

<?xml-stylesheet type="text/css" href="standard.css"?>

<style>これは、タグ内の内部スタイルであるかのように、XHTML の不可欠な部分です。

スタイルシートを適用せずに XML を読み取って使用することは明らかに可能ですが、それはデータ自体の指示を無視することです。

XML を生データとして扱い、オプションの変換をさまざまな方法で適用する場合は、XML から処理命令を省略する必要があります。

于 2013-05-14T22:05:59.823 に答える
0

申し訳ありませんが、XML の解析に使用していたオブジェクトで が「変換」されているXMLと思いました。stylesheet.xslDOM

私は次のように仮定しました。

  • XML は、DOM に配置される前に変換されていました。
  • <?xml-stylesheet type="text/xsl" href="mystylesheet.xsl"?>DOM では見えませんでした。

基本的に、変換方法の学習を開始するための単純な XML がありました。次のようなもの:

<?xml version="1.0" encoding="UTF-8"?>
<items><item>...</item></items>

簡単にするために(私は学んでいました...)、次の構文解析を開始することにしました:

parse(doc.getFirstChild().getFirstChild()); //Expecting the first "item".

しかし、スタイルシートを XML に導入した後、ドキュメントは次のようになりました。

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="mystylesheet.xsl"?>
<items><item>...</item></items>

この導入により、doc.getFirstChild().getFirstChild()はもはや「アイテム」ではなくなりました。

次に、この命令でノードをスキップするのを忘れたことに気付きました (DOM ツリーでは「見えない」と本当に思っていました)。

みんなを学ぶ、学ぶ...

PS XSLT を使用して XML を変換するのは初めての試みでした。

ご協力ありがとうございました。

于 2013-05-15T16:31:44.313 に答える