Homepage  Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum


.dsy:it. .dsy:it. Archive > Didattica > Corsi G - M > Gestione dell'informazione nei sistemi mobili e pervasivi
 
Tecweb - Help progetto Cocoon
Clicca QUI per vedere il messaggio nel forum
dagarlas
Ciao a tutti. Ho un quesito riguardo al progetto.

Per le parte di amministrazione da fare per tecweb (nell'ultimo punto delle specifiche) avevo pensato di utilizzare php insieme al PHPGenerator di Cocoon; tuttavia il phpgenerator da un sacco di problemi (a me personalmente non funziona...anke se nn da alcun errore..) e dopo aver postato alcuni messaggi sulla mailing list di cocoon mi è stato detto da + fonti che è un componente in se molto problematico, e forse sulla strada per essere deprecato...boh..

cmq la domanda è questa: c'è qualcuno che riesce a farlo andare, o si è trovato nella stessa situazione?

purtroppo qui le lezioni sono finite e quindi non abbiamo nemmeno + la possibilità di chiedere qualcosa in laboratorio...

zyo
Non so, questo esame è x me assurdo!!!
Eppure ho superato abbastanza facilmente quello di "basi di dati".

Non riesco a capire come modificare i links relativi ( es. cartella/img.jpg) !!!
Non pensavo di incontrare tante difficoltà sin da questo punto!!!

Penso di aver buttato via un semestre seguendo questa materia, mi rendo conto che non ci hanno detto abbastanza su cocoon!!!

Ciao a tutti.

unidavide
anche secondo me questo progetto è un po troppo pesante volgio dire per poterlo fare bisognerebbe conoscere molto bene xml, xpath, xslt, cocoon con la valanga di concetti che ha e poi naturalmente un linguaggio lato srver per fare la parte di amministrazione cmq ho spedito una mail a sala ma non mi risponde vediamo se qualcuno mi puo aiutare:

1) .... in una sitemap nella parte dei compenenti devo elencare i compeneti che intendo usare nelle successive pipeline, non riesco pero a capire perchè se per esempio come serializzatori metto solo
<map:serializers default="html"/>
e poi in una pipeline uso
<map:serialize type="wml"/>
non mi viene segnalato nessun errore.

2) ... per la sitemap del progetto avevo pensato che quando l'utente mi fornisce username e password per autenticarsi controllo se la password o lo username sono sbagliati e in questo caso presento una pagina di errore il problema è che non riesco a capire come posso dalla sitemap controllare cosa c'è nel xml che sta passando da un trasformatore ad un altro, voglio dire se ho questo pezzo di sitemap
PHP:

<map:match pattern=&quot;portal/user/editfeeds&quot;>
    <
map:act set=&quot;portal&quot;>
    <
map:parameter name=&quot;descriptor&quot;
value=&quot;context://capitolo7/portal/resources/dbfeeds.xml&quot;/>
    
</map:act>
    <
map:generate src=&quot;portal/resources/editfeeds.xml&quot;/>
    <
map:transform src=&quot;portal/styles/editfeeds.xsl&quot;>
        <
map:parameter name=&quot;use-request-parameters&quotvalue=&quot;true&quot;/>
    </
map:transform>
    <
map:transform type=&quot;sql&quot;>
        <
map:parameter name=&quot;use-connection&quotvalue=&quot;portal&quot;/>
    </
map:transform>



che è contenuto dentro la pipeline del portalino sviluppato a lezione come faccio a capire nella sitemap se il nodo
/user/rowset/row/username
dell'xml restituito dal trasformatore sql è vuoto oppure no?
se infatti questo nodo fosse vuoto vorrebbe dire che la query al database non ha prodotto nessun risultato e che quindi user e password sono sbagliate. In questo caso vorrei fare un redirect ad una pagina di errore mentre se in quel nodo c'è qualcosa vorrei fare un redirect ad un altra pipeline che riceve come parametro l'id dell' utente e la url che questo ha specificato insieme a user e password.
Anche qui non riesco a capire come faccio a passare tutte queste informazioni da un pipeline ad un altra se per fare il redirect ho a disposizione solo
<map:redirect-to uri="new uri"/>

ma in quanti hanno passato l'fse? e in quanti sono riusciti a fare sto progetto?

zyo
X quanto riguarda il redirect può essere fatto anche ad una risorsa della sitemap:

Redirecting to Resources:
Specifiying a resource attribute allows the redirection to a sitemap resource. This usage has been deprecated.
map:call should be used instead.

Preso dal sito di cocoon negli userdocs

X il resto penso che sia tanto + facile con php o asp ma con cocoon proprio non so!!!

Ciao.

zyo
Forse cosi è meglio:

Internal Redirects Using the Cocoon Protocol
A redirection URI can make use of the cocoon: protocol to return content from another Cocoon pipeline. In this case, the redirection happens internally. The content from the redirected URI is returned to the client as if it came from the original URI.

Directory handling is the same here as for other sitemap components. So that:

<map:match pattern="folder/page1.html">
<map:redirect-to uri="cocoon:/folder/page2.html"/>
</map:match>

will return the content of page2.html to the client in response to the request for page1.html.

Note: when the cocoon: protocol is used, an HTTP redirect is not used.

mozilla
Originally posted by unidavide
[.....]
Anche qui non riesco a capire come faccio a passare tutte queste informazioni da un pipeline ad un altra se per fare il redirect ho a disposizione solo
<map:redirect-to uri="new uri"/>


In molti casi al posto di fare una redirect da una pipeline ad un altra è molto utile utilizzare il CInclude Transformer che permette di incapsulare risorse di vario tipo tra cui anche altre pipeline.

In questo modo attraverso trasformazioni successive l'XSL costruisce l'XML ed è possibile anche simulare costrutti decisionali. Ad esempio se guardi quello che torna l'SQL ti accorgi che il tag ROW che identifica una riga del database viene messo solo se estrae dei dati altrimenti no. Quindi con un test="sql:row" dentro un tag 'when' puoi testare se ha estratto o no la riga dal db. Un altro modo è quello di richiedere all'SQL (c'è un parametro) di mettere un attributo (mi sembra nel rowset) che ti dice quante righe ha estratto.
Una volta eseguito il test, avrai un CInclude che manda alla pagina "giusta" se l'utente esiste ed un altro CInclude che manda alla pagina di errore altrimenti.

Lo sapete che Mercoledì c'è un seminario sui WebServices in sala lauree?

Ciao, :)

mozilla
Originally posted by zyo
.....
Non riesco a capire come modificare i links relativi ( es. cartella/img.jpg) !!!

http://www.dsy.it/forum/showthread....1324#post121324

unidavide
Originally posted by mozilla
In molti casi al posto di fare una redirect da una pipeline ad un altra è molto utile utilizzare il CInclude Transformer che permette di incapsulare risorse di vario tipo tra cui anche altre pipeline.

In questo modo attraverso trasformazioni successive l'XSL costruisce l'XML ed è possibile anche simulare costrutti decisionali. Ad esempio se guardi quello che torna l'SQL ti accorgi che il tag ROW che identifica una riga del database viene messo solo se estrae dei dati altrimenti no. Quindi con un test="sql:row" dentro un tag 'when' puoi testare se ha estratto o no la riga dal db.


ho provato ma non riesco, non ho capito come si fa? sbaglio cosi?
PHP:

<map:select type=&quot;parameter&quot;>
<
map:parameter name=&quot;parameter-selector-test&quotvalue=&quot;sql:row&quot;/>
<
map:when test=&quot;&quot;>
    <
map:redirect-to uri=&quot;0&quot;/>
</
map:when>
<
map:otherwise>
    <
map:redirect-to uri=&quot;2&quot;/>
</
map:otherwise>
</
map:select>


Originally posted by mozilla
Un altro modo è quello di richiedere all'SQL (c'è un parametro) di mettere un attributo (mi sembra nel rowset) che ti dice quante righe ha estratto.


<map:parameter name="show-nr-of-rows" value="true"/>
l'ho visto, ma dopo come faccio a utilizzare il valore restituito?
Originally posted by mozilla
Una volta eseguito il test, avrai un CInclude che manda alla pagina "giusta" se l'utente esiste ed un altro CInclude che manda alla pagina di errore altrimenti.

il CInclude non so se va bene, voglio dire io volevo capire se la user e password sono giusti dopo volevo entrare in una pipeline dove passavo la url inserita dall'utente nella fase di login, questa url l'avrei utilizata prima di tutto per controllare se la risorsa esiste e poi come genratore della pipeline che sotituisce i link, lo posso fare anche con CInclude?

ps grazie delle risposte :lode: :lode: :lode:

mozilla
Originally posted by unidavide
ho provato ma non riesco, non ho capito come si fa? sbaglio cosi?
.....

Scusa, forse mi sono spiegato male. Tra i tag del trasformatore classico di default XSL esiste <xsl:choose> che racchiude <xsl:when> e <xsl:otherwise>. Con questi tag nel file XSL di trasformazione, costruisci la forma condizionale che ti permette di testare in questo modo <xsl:when test="sql:row"> se esiste una riga all'interno del rowset.


<map:parameter name="show-nr-of-rows" value="true"/>
l'ho visto, ma dopo come faccio a utilizzare il valore restituito?

Il trasformatore SQL metterà il numero di righe come attributo nrofrows di rowset. Quindi potrai accederci tramite un trasformatore di default XSL che testa questo attributo.

A te la scelta: o testi la presenza di una riga ( con <xsl:when test="sql:row"> ) oppure testi il numero di righe con nrofrows. Quest'ultima soluzione dicono che non è compatibile con tutti i DBMS, comunque puoi fare la prova.


il CInclude non so se va bene, ..... lo posso fare anche con CInclude?

Qui sotto ti metto un esempio di ipotetico trasformatore con la forma condizionale che testa la presenza del tag ROW ed il CInclude.
PHP:

<xsl:template match=&quot;sql:rowset&quot;>
 <
xsl:choose>
  <
xsl:when test=&quot;sql:row&quot;>
   <
cinclude:include src=&quot;[I]L'UTENTE ESISTE, VADO A QUESTA PAGINA[/I]&quot;/>
  </xsl:when>
  <xsl:otherwise>
   <cinclude:include src=&quot;[I]L'
UTENTE NON ESISTESPEDISCO LA PAGINA DI ERRORE![/I]&quot;/>
  </
xsl:otherwise>
 </
xsl:choose>
</
xsl:template>



Per l'SQLTrasformer puoi vedere degli esempi qui: SQLTrasformer

unidavide
Originally posted by mozilla
Scusa, forse mi sono spiegato male. Tra i tag del trasformatore classico di default XSL esiste <xsl:choose> che racchiude <xsl:when> e <xsl:otherwise>. Con questi tag nel file XSL di trasformazione, costruisci la forma condizionale che ti permette di testare in questo modo <xsl:when test="sql:row"> se esiste una riga all'interno del rowset.

ok adesso ho capito, io pensavo si potesse fare dalla sitemap per poter cosi chiamare appunto un altra pipeline, proverò a farlo cosi dal xsl
grazie

Powered by: vbHome (lite) v4.1 and vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento |Licenze | Thanks | Syndacate