Mariusz P.

Mariusz P. Specjalista ds.
Rozwoju

Temat: Tworzenie statycznego pliku html z poziomu JSE

Witam

Jako, że mam niewielkie doświadczenie zastanawiam się nad kilkoma
rozwiązaniami:
1. Najprostszym chyba wypisywaniem wszystkiego po kolei do strumienia
wyjściowego.
2. Parser DOM lub SAX.
3. Z tego co wstępnie szukałem są jakieś gotowe klasy w JSE np.
javax.swing.text.html.

Plik html ma być strukturą dla galerii. Program na podstawie ilości
zdjęć w katalogu będzie określał ilość wierszy (i ewentualnie kolumn)
tej tabeli. Parametry te będzie mógł też określić użytkownik z poziomu
programu. Będzie tez on mógł określić wzorzec nazwy dla plików ze
zdjęciami. Na podstawie tych danych ma być właśnie generowany taki
prosty plik html. Co doradzicie?

Pozdrawiam i dzięki z góry za wskazówki
Mariusz

konto usunięte

Temat: Tworzenie statycznego pliku html z poziomu JSE

Rozwiazan jest n ;)
Uzywajac jakiegos parsera opartego na sax-ie mozesz pokusic sie o napisanie prostego silnika templejtow, mozesz tez uzyc velocity aby generowac xml w locie, mozesz uzyc jakiejs biblioteki dom, ktora umozliwi zbudowanie drzewa xml przy pomocy javowego api, do wyboru do koloru ...
Mariusz P.

Mariusz P. Specjalista ds.
Rozwoju

Temat: Tworzenie statycznego pliku html z poziomu JSE

Cały problem w tym, aby nie wyciągać ciężkiego działa na strukturę html, która będzie zajmować powiedzmy kartkę A4. Velocity jest mi znane tylko z nazwy. DOM i SAX znam tylko tyle co wyczytałem i zapamiętałem z serii Core (a dokładnie 2 tom). Tak naprawdę orientuję się zasadniczo w JSE i to nie we wszystkim zapewne. Oczywiście nie ma problemu by coś doczytać, byle nie była to znowu jakaś cegła i pół roku sensownej nauki, zanim będzie można zrobić coś konkretnego.Mariusz P. edytował(a) ten post dnia 18.12.11 o godzinie 19:38

konto usunięte

Temat: Tworzenie statycznego pliku html z poziomu JSE

Jezeli jest to jednorazowe rozwiazanie tylko do tego celu (tylko to listowanie zdjec z katalogu) to albo sobie doczytaj velocity lub cos podobnego albo sie nie zastanawiaj i łącz stringi ;)

Musisz sobie zadac pytanie czy to ma byc jakis reuzywalny tool czy to raczej jednorazowy strzal, jezeli jednorazowy - nie zastanawialby sie nad tym zbyt dlugo.

konto usunięte

Temat: Tworzenie statycznego pliku html z poziomu JSE

Dochodzi jeszcze aspekt edukacyjny :) Jeśli masz troszkę czasu na realizację, to może generuj sobie XML a później za pomocą XSLT wygeneruj sobie HTLM :)

Ot taki fajny sposób aby "liznąć" trochę innych technologii.
Jakub Grabowski

Jakub Grabowski Tworzenie aplikacji,
integracja SOA,
outsourcing,
szkolen...

Temat: Tworzenie statycznego pliku html z poziomu JSE

SAX to tylko parser i służy do odczytu, więc go nie wykorzystasz. DOM jest zbyt skomplikowany do tego zadania - umęczysz się tylko.
Poszedłbym drogą XML + XSLT lub jakiś engine szablonów. Łukasz polecał Velocity, ja korzystam często z FreeMarker i też polecam.
Mariusz P.

Mariusz P. Specjalista ds.
Rozwoju

Temat: Tworzenie statycznego pliku html z poziomu JSE

Racja. Właśnie czytam i kombinuje co tu wykorzystać. SAX to tylko parser, ale StAX to już Streaming API for XML, więc wstępnie wydaje mi się, że mógłbym to wykorzystać. Droga XML + XSLT też wydaje mi się słuszna. Jeśli chodzi o Velocity to z czego konkretnie korzystać: Engine, Tools, Anakia, Texen, DocBook Framework, DVSL?Mariusz P. edytował(a) ten post dnia 18.12.11 o godzinie 23:13
Marcin Wasiluk

Marcin Wasiluk Software Engineer

Temat: Tworzenie statycznego pliku html z poziomu JSE

z wlasnego doswiadczenia polecam rozwiazanie z XSLT,
mysle ze dla front end developera (usera) bedzie latwiejsze do modyfikacji i jest duzo bardziej "prostsze" do debugowania.
Jezeli chodzi o velocity to jest bardzo przyjemne na poczatku ale z czasem staje sie ciezkie do zarzadzania.

http://velocity.apache.org/
jezeli chodzi o skrypty to chyba najbardziej popularne sa velocity i freemaker
http://freemarker.org/fmVsVel.htmlMarcin Wasiluk edytował(a) ten post dnia 19.12.11 o godzinie 00:00
Marcin Wasiluk

Marcin Wasiluk Software Engineer

Temat: Tworzenie statycznego pliku html z poziomu JSE

PS. Jezeli XSLT to 2.0
Maciej Nowicki

Maciej Nowicki Java Developer

Temat: Tworzenie statycznego pliku html z poziomu JSE

Ja zaś zgodzę się z Łukaszem - jeżeli to ma być tylko prosty tool, a samo generowanie HTMLa (jak podejrzewam w celu zapisania go na dysku) ma się ograniczać do prostej strony z tabelką, to daj sobie spokój z kombinowaniem z szablonami, Velovity, XSLT itp. tylko po prostu sklejaj Stringi.

Jeżeli nie znasz tych technologii, zaimplementujesz generowanie HTMLa do Stringa szybciej, niż zrobisz tutorial Hello World z którychkolwiek szablonów. A bibliotek nauczysz się, "jak będzie czas"

Pamiętaj - http://pl.wikipedia.org/wiki/Worse_is_Better

konto usunięte

Temat: Tworzenie statycznego pliku html z poziomu JSE

Etam, nie prawda.
Uzywajac parsera SAX masz mozliwosc modyfikacji xmla, ktory parsujesz.
Ja na bazie saxa zbudowalem silnik szablonow - da sie.
Jakub Grabowski:
SAX to tylko parser i służy do odczytu, więc go nie wykorzystasz. DOM jest zbyt skomplikowany do tego zadania - umęczysz się tylko.
Poszedłbym drogą XML + XSLT lub jakiś engine szablonów. Łukasz polecał Velocity, ja korzystam często z FreeMarker i też polecam.
Jakub Grabowski

Jakub Grabowski Tworzenie aplikacji,
integracja SOA,
outsourcing,
szkolen...

Temat: Tworzenie statycznego pliku html z poziomu JSE

My bad... Poszukałem i faktycznie da się, choć rzadko spotykane. Dzięki za zwrócenie uwagi!
Łukasz Grabski:
Etam, nie prawda.
Uzywajac parsera SAX masz mozliwosc modyfikacji xmla, ktory parsujesz.
Ja na bazie saxa zbudowalem silnik szablonow - da sie.
Jakub Grabowski edytował(a) ten post dnia 19.12.11 o godzinie 13:11
Mariusz P.

Mariusz P. Specjalista ds.
Rozwoju

Temat: Tworzenie statycznego pliku html z poziomu JSE

Możecie jeszcze doradzić gdzie znajdę jakieś usystematyzowane informacje na temat transformacji XSLT? Gogole zasypuje wręcz ilością stron, ale, albo są to wybiórcze informacje, albo jakoś tak nieuporządkowane. Będę miał prosty plik xml. Zapisywane będą do niego nazwy plików zdjęć z danego katalogu, nazwa albumu:

<photos>
<album>nazwa albumu></album>
<photo>photo1.jpg</photo>
<photo>photo2.jpg</photo>
<photo>photon.jpg</photo>
</photos>

Pewnie mogłoby być nawet prościej. Teraz przydałoby się napisać plik xsl, tylko trzeba się nauczyć jak :-) Z obrazków będzie tworzona tabela w html, więc jakaś pętla lub foreach w xsl?

konto usunięte

Temat: Tworzenie statycznego pliku html z poziomu JSE

Tak
będzie tworzona tabela w html, więc jakaś pętla lub foreach w xsl?
Damian L.

Damian L. Architekt IT

Temat: Tworzenie statycznego pliku html z poziomu JSE

Możecie jeszcze doradzić gdzie znajdę jakieś usystematyzowane informacje na temat transformacji XSLT?
Wydaje mi się, że najbardziej oczywisty i najlepszy wybór to: http://www.w3schools.com/xsl/xsl_languages.asp
A zaraz po tym XPATH (link na dole podanej strony), kilka przykładów i działamy... :)Damian L. edytował(a) ten post dnia 20.12.11 o godzinie 21:58
Adrian C.

Adrian C.
projektant/programis
ta

Temat: Tworzenie statycznego pliku html z poziomu JSE

Skoro to są Twoje pierwsze kroki w XSLT, proponuję uczyć się dobrych praktyk, zamiast pętli użyj szablonów. W XSL ogólnie są dwa podejścia albo iterowanie po nodach pliku wejściowego i robienie coś z nimi, albo używanie szablonów, które uruchamiane są gdy zgadza się wyrażenie w atrybucie match takiego szablonu. Użycie szablonów będzie czytelniejsze i łatwiej będzie Ci się modyfikowało i wprowadzało zmiany. W Twoim przypadku sprawa nie jest trudna, tutaj masz to czego potrzebujesz:

http://www.w3schools.com/xsl/el_template.asp

Z przykładem, który pasuje jak ulał.
Mariusz P.

Mariusz P. Specjalista ds.
Rozwoju

Temat: Tworzenie statycznego pliku html z poziomu JSE

Wszystko fajnie, tylko na razie nie mogę ugryźć jednej rzeczy. Tworzenia wiersza w tabeli. Są dwie kolumny, więc różne atrybuty jak szerokość, wyrównanie. Da się iterować foreach co dwa (tak mi się wzorzec w html powtarza)?

Na naukę będzie czas, jak terminy nie będą gonić. Teraz deadline jest na ok. 20 stycznia. Dlatego nie chcę wyciągać haubicy, żeby zapolować na kurczaka :-)Mariusz P. edytował(a) ten post dnia 21.12.11 o godzinie 17:02
Adrian C.

Adrian C.
projektant/programis
ta

Temat: Tworzenie statycznego pliku html z poziomu JSE

Mariusz pokaż kawałek xml'a wejściowego i to co chcesz dostać na wyjściu, może uda się cos wspólnymi siłami wykombinować.
Mariusz P.

Mariusz P. Specjalista ds.
Rozwoju

Temat: Tworzenie statycznego pliku html z poziomu JSE

To jest struktura html jaką chcę uzyskać. Tak jakby jeden rząd w tabeli. Gify są powtarzalne, więc to nie problem. Zdjęcia np. photo01.jpg, photo02.jpg mają być rozmieszczane w dwukolumnowej tabeli. Niestety inne są atrybuty lewej kolumny, a inne prawej. Wiem, że za poniższą strukturę html można byłoby zabić, ale została ona stworzona XX lat temu przez jakąś osobę. Wolałbym uniknąć jej modyfikacji. Przykładowy plik xml z którego miałaby być generowana taka struktura przy użyciu XSLT podałem w jednym z powyższych moich postów. Przepraszam za brak formatowania, ale tak chyba jest najlepiej.


<td align="center">
<table width="458" border="0" align="left" cellpadding="0" cellspacing="0">
<tr>
<td>
<table width="174" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><img src="../images/30.gif"></td>
</tr>
<tr>
<td>
<table width="174" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><img src="../images/33.gif"></td>
<td width="150" height="99"><a class="czarny" href="javascript:zoom('./galerie/photo01.jpg')"><img src="./galerie/photo01m.jpg" width="150" height="99" border="0"></a></td>
<td><img src="../images/35.gif"></td>
</tr>
</table>
</td>
</tr>
<tr>
<td><img src="../images/38.gif"></td>
</tr>
</table>
</td>
<td width="30"> </td>
<td align="left">
<table width="174" border="0" cellspacing="0" cellpadding="0">
<tr> <td><img src="../images/30.gif"></td>
</tr>
<tr>
<td>
<table width="174" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><img src="../images/33.gif"></td>
<td width="150" height="99"><a class="czarny" href="javascript:zoom('./galerie/photo02.jpg')"><img src="./galerie/photo02m.jpg" width="150" height="99" border="0"></a></td>
<td><img src="../images/35.gif"></td>
</tr>
</table>
</td>
</tr>
<tr>
<td><img src="../images/38.gif"></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
Mariusz P. edytował(a) ten post dnia 21.12.11 o godzinie 16:52
Damian L.

Damian L. Architekt IT

Temat: Tworzenie statycznego pliku html z poziomu JSE

Na szybko:

<table border="1">
<xsl:for-each select="photos/photo">
<xsl:choose>
<xsl:when test="(position() mod 2) = 1">
<tr><td>Magia dla nieparzystych... <xsl:value-of select="." /></td></tr>
</xsl:when>
<xsl:otherwise>
<tr><td>Magia dla parzystych... <xsl:value-of select="." /></td></tr>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</table>

To oczywiście nie jest rozwiązanie, a przykład który powinien coś rozjaśnić :)Damian L. edytował(a) ten post dnia 21.12.11 o godzinie 17:48

Następna dyskusja:

dziedziczenie z klasy Socke...




Wyślij zaproszenie do