2

私の問題は、Cocoon sitemap.xmapをある方法でセットアップすることです。これにより、最初にXSLを使用してXMLファイルの変換が行われ、それを自分の変換に使用できます。

私は次のファイルを持っています:

start.xml:combine_start.xslを適用してまとめられたファイルの参照が含まれています

transform.xsl:これはcombine_start.xsl(出力XML)で作成された変換で使用したい自分のXSLファイルです。

start.xmlは、プロセスで必要なすべてのファイルの一種のインデックスであるため、XSL関数が適用されている場合(タグが見つからない場合)、次のサイトマップには結果が表示されません。ネットを検索しましたが、別の変換を適用する前に、最初に変換を行うパイプラインを設定する方法が見つかりませんでした。

うまくいけば、私の問題はあまりにも混乱していません、そして私は私が得ることができるどんな助けにも感謝します。以下に、私が試したサイトマップを示します。

<?xml version="1.0"?>
<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">

 <map:pipelines>

  <map:pipeline>

   <map:match pattern="*">
     <map:generate src="start.xml"/>
     <map:transform src="transform.xsl">
             <map:parameter name="X" value="{request-param:X}"/>
             <map:parameter name="Semester" value="{request-param:Semester}"/>
             <map:parameter name="Name" value="{request-param:Name}"/>
             <map:parameter name="XXX" value="{request-param:XXX}"/>
     </map:transform>
     <map:serialize/>
   </map:match>

  </map:pipeline>
 </map:pipelines>
</map:sitemap>
4

2 に答える 2

1

複数回変換できます。シリアル化する前に、(別のxslを使用して)map:transformを再度呼び出します。

map:part / map:aggregateを使用して複数のマッチャーをマッシュアップし、それらにmap:transform(またはi:includeトランスフォーマー)を適用することもできます。

「タグが見つかりません」とはどういう意味かよくわからないので、間違った質問に答えているのかもしれません。

-

デバッグ出力(つまり、xmlに基づいて正確に生成されるもの)を表示する場合は、ビューを操作する必要があります-サイトマップで宣言します(http://cocoon.apache.org/2.0/userdocs/concepts/viewsを参照)。 .html)、トランスフォーマーにラベルを追加します。次に、url?cocoon-view = YOURLABELを呼び出すことにより、xslに使用されているデータを正確に確認できます。

于 2009-08-16T21:02:06.027 に答える
1

マイケルはもうユーザーではないようですが、とにかくこれに答えます。基本的に、ニコの答えを説明するコードを追加し、もう少し具体的にします。

convert_start.xsl [ObHalfLife2Reference] の出力に transform.xsl を適用する方法は次のとおりです。

   <map:match pattern="*">
     <map:generate src="start.xml"/>
     <map:transform src="combine_start.xsl" />
     <map:transform src="transform.xsl">
             <map:parameter name="X" value="{request-param:X}"/>
             <map:parameter name="Semester" value="{request-param:Semester}"/>
             <map:parameter name="Name" value="{request-param:Name}"/>
             <map:parameter name="XXX" value="{request-param:XXX}"/>
     </map:transform>
     <map:serialize/>
   </map:match>

Combine_start.xsl の出力が空であるとあなたが言っていることを私が理解している場合、それは Cocoon の問題ではなく、XSLT の問題です... あなたの Combine_start.xsl は正しく機能していません。

start.xml が transform.xsl にフィードするファイルのインデックスであることを考えると、cinclude トランスフォーマーは、それらを丸呑みするスタイルシートを実装するのではなく、おそらく探しているものです。一方、start.xml の内容が変更しない場合は、前述のように、<map:aggregate>より効率的です。

于 2010-08-23T22:14:46.700 に答える