๐Ÿš€ go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.xml
Article #9651

Re: Poczatkujacy w XSLT

#9651
From: adam_laszcz
Date: Mon, 28 Jan 2008 09:08
114 lines
4315 bytes
Witam ponownie

> Adam wrote:
> > Probuje utworzyc XSLT ktory z tego XML wygeneruje nastepujacy kod
> > HTML (XSLT otrzymuje na wejsciu parameter path okreslajacy sciezke do
> > wybranego elementu). Czyli jesli input path jest rowne 1.2.1
> > (okreslone przez parametry @name kolejnych elementow <item>) to HTML
> > bedzie nastepujacy
> > 
> > <div id="item"> <div>Item 0</div>
> 
> [OT] Dygresja 1. Tworzysz pozagniezdzane listy, wiec uzyj elementow listy
> 
> <ul>
>    <li>...
> 
> > <div id="on_path">Item 1</div> <div id="indentedlevel"> <div>Subitem
> > 1</div> <div id="on_path">Subitem 2</div> </div>
> 
> [OT] Dygresja 2. Grubszy blad. Id sluzy do oznaczenia jednego, 
> konkretnego elementu. "Jest w sciezce" to pewna wlasciwosc jednego lub 
> wielu elementow. Innymi slowy - okresla przynaleznosc do _klasy_ 
> elementow sciezki. Podobnie z "intendedlevel". Co wiecej - jesli zamiast 
> tworzyc plaska strukture, pozagniezdzasz poziomy w sobie, to glebokosc 
> bedzie wynikac z kontekstu i dodatkowe klasy numerujace poziomy nie beda 
> potrzebne. Np:
> <ul>
>    <li class="in_path">
>      <ul>
>        <li class="in_path selected">...

Zgadzam sie z Twoimi dygresjami jednak wyjsciowy format nie zostal ustalony
przeze mnie i nie mam na niego wplywu. Dlatego musze sie trzymac tego jak to
opisalem :)

> 
> 
> > Problem z tym jest taki, ze przy wejsciu w trzeci poziom <div
> > id="secondindentedlevel"> trzeba najpierw zamknac poziom drugi
> > (indentedlevel) tagiem </div>, a po wyjsciu z niego ponownie go
> > otworzyc. 
> 
> Nie pokazales najwazniejszego, czyli kodu transformacji. Ale trudno, 
> podrzuce (zaznaczam, ze uproszczona) sugestie:
> 
> <xsl:template math="item">
>    <li> <!-- otwieramy -->
>      <xsl:value-of select="label"/>
>      <ul>
>        <xsl:apply-templates select="item"/> <!-- glebiej -->
>      </ul>
>    <li> <!-- zamykamy -->
> <xsl:template>
> 

Wydaje mi sie problem zostal nie do konca zrozumiany. Napisalem w pierwszym
poscie ze napisalem XSL ktory (prawie :)) tworzy pozadany kod HTML. W duzym
skrocie wyglada on wlasnie tak jak to opisales powyzej. Ale nie jest to
dokladnie to co potrzebuje. Roznica jest w tym ze zamiast

<div id="indentedlevel">
    <li>Item 1</li>
    <div id="secondindentedlevel">
        <li>Subitem 1</li>
    </div>
    <li>Item 2</li>
</div>

potrzebuje

<div id="indentedlevel">
    <li>Item 1</li>
</div>
<div id="secondindentedlevel">
    <li>Subitem 1</li>
</div>
<div id="indentedlevel">
    <li>Item 2</li>
</div>

Oba przyklady sa poprawnie sformatowanymi XMTMLami wiec teoretycznie powinien
istniec XSL ktory wygeneruje ten kod. Tyle ze ja potrzebuje konstrukcji w stylu

...
<xsl:if test"warunek">
    </div>
</xsl:if>
    <div id="secondindentedlevel">
        <xsl:apply-templates select="item"/> <!-- glebiej -->
    </div>
<xsl:if test"ten sam warunek co poprzednio">
    <div id="indentedlevel">
</xsl:if>

Jak przeczytalem juz tutaj
http://www.dpawson.co.uk/xsl/sect2/nono.html#d1942e157
http://www.dpawson.co.uk/xsl/sect2/nono.html#d1942e199
warunkowe wklejanie kodu nie jest mozliwe. Ale moze jednak isnieja jakies tricki
ktore pozwalaja to realizowac? A moze nie tyle tricki co "xsl pattern" ktore
realizuja takie sytuacje.



> 
> 
> -- 
> NotBear


Pozdrawiam
Adam

-- 
Wysล‚ano z serwisu OnetNiusy: http://niusy.onet.pl
Technical Details
Message-ID: <7db6.0000004b.479d9b70@newsgate.onet.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsgate.onet.pl!niusy.onet.pl
References: <fnf0kb$oj5$1@pyro.tvk.wroc.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsgate.onet.pl!niusy.onet.pl
From: adam_laszcz@op.pl
Newsgroups: pl.comp.xml
Subject: Re: Poczatkujacy w XSLT
Date: 28 Jan 2008 10:08:00 +0100
Organization: Onet.pl SA
Lines: 114
Message-ID: <7db6.0000004b.479d9b70@newsgate.onet.pl>
References: <fnf0kb$oj5$1@pyro.tvk.wroc.pl>
NNTP-Posting-Host: newsgate.onet.pl
Mime-Version: 1.0
X-Trace: newsgate.test.onet.pl 1201511280 7341 213.180.130.18 (28 Jan 2008 09:08:00 GMT)
X-Complaints-To: abuse@onet.pl
NNTP-Posting-Date: 28 Jan 2008 09:08:00 GMT
X-Mailer: http://niusy.onet.pl
X-Forwarded-For: 193.3.225.212, 10.14.14.102, 192.168.243.170
X-User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;    rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit