Cocoon - Pipeline: transformace XML s XSL dvakrát?

hlasů
2

Můj problém je k nastavení Cocoon sitemap.xmap takovým způsobem, že se nejprve vytvoří transformaci XML souboru s XSL, které jsem pak mohou použít pro své vlastní transformaci.

Mám následující soubory:

start.xml: Obsahuje odkazy na soubory, které jsou dohromady použitím combine_start.xsl

transform.xsl: Je to moje vlastní soubor XSL, které chci použít na přeměnu uzavřené s combine_start.xsl (výstup XML)

Vzhledem k tomu, start.xml je v jistém smyslu index pro všechny soubory potřebné v procesu následující sitemap zvyklý ukázat nějaké výsledky, pokud jsou použity nějaké funkce XSL (žádné tagy jsou nalezeny). Byl jsem hledat na internetu, ale já havent našel způsob, jak nastavit plynovodu, který poprvé umožňuje transformaci, před nanesením další transformaci.

Doufejme, že můj problém istn příliš matoucí a oceňuji jakoukoliv pomoc mohu získat. Níže najdete sitemap Snažil jsem se.

<?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>
Položena 16/08/2009 v 21:25
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
1

Michael se nezdá být uživatel už, ale budu odpovědět stejně. V podstatě přidání kódu pro ilustraci k Nikovi jeho odpověď, a být trochu konkrétnější.

Způsob, jakým se vztahují transform.xsl k výstupu combine_start.xsl [ObHalfLife2Reference] je:

   <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>

Pokud chápu, abyste se tím, že výstup combine_start.xsl je prázdný, pak to není problém Cocoon ale problém XSLT ... Váš combine_start.xsl nefunguje správně.

Vzhledem k tomu, že start.xml je index souborů, které se živí na transform.xsl se cinclude transformátor je pravděpodobně to, co hledáte, spíše než provádění stylů je usrkávat dovnitř. Na druhou stranu, pokud je obsah start.xml bude se nikdy nezmění, pak jak je uvedeno výše, <map:aggregate>by bylo účinnější.

Odpovězeno 23/08/2010 v 23:14
zdroj uživatelem

hlasů
1

Můžete proměnit vícekrát. stačí zavolat mapu: transformovat znovu (s jiným XSL) - Před serializaci.

můžete použít také mapu: část / mapu: agregát do kaše dohromady více dohazovač a pak použít mapu: transformovat na nich (nebo i: zahrnují transformátor).

I dont opravdu vědět, co máte na mysli s „Nebyly nalezeny žádné značky“, takže možná obracím na otázku špatně.

-

. Chcete-li zobrazit výstup ladění (tedy to, co přesně je generována na základě xml, měli byste pracovat s výhledem - prohlásit ji do souboru Sitemap (viz: http://cocoon.apache.org/2.0/userdocs/concepts/views .html ) a přidat štítek do svého transformátoru. pak můžete vidět přesně to, co data se používají pro xsl voláním url? kukla-view = YOURLABEL

Odpovězeno 16/08/2009 v 22:02
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more