🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

5 total messages Started by ant Wed, 04 Mar 2009 02:47
Nazwa węzła z parametru?
#10090
Author: ant
Date: Wed, 04 Mar 2009 02:47
82 lines
3104 bytes
Witam,


Mam taki prosty problem, z którego jednak nie potrafię wybrnąć ;-]

--%<-----%<-----%<-----%<-----%<-----%<-----%<-----%<-----%<-----%<-----%<----
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

	<xsl:param name="activenode">0</xsl:param>
	<xsl:param name="ChildcountKey">childcount</xsl:param>
	
    <xsl:template match="nodes">
	<ul>
        	<xsl:apply-templates select="node" />
        </ul>	
    </xsl:template>

    <xsl:template match="node">
    	<li>
    		<xsl:apply-templates select="title|nodes"/>
        </li>	
    </xsl:template>

    <xsl:template match="node/title">
		<xsl:choose>
			<xsl:when test="../@id = $activenode">
				<a href="?id={../@id}"><b><xsl:apply-templates /></b></a>
				<xsl:choose>
					<xsl:when test="../childcount > 0">
						(<xsl:value-of select="../childcount" />)
					</xsl:when>
				</xsl:choose>
			</xsl:when>
			<xsl:otherwise>
				<a href="?id={../@id}"><xsl:apply-templates /></a>
				<xsl:choose>
					<xsl:when test="childcount > 0">
						(<xsl:value-of select="../childcount" />)
					</xsl:when>
				</xsl:choose>
			</xsl:otherwise>
		</xsl:choose>
    </xsl:template>
</xsl:stylesheet>

--%<-----%<-----%<-----%<-----%<-----%<-----%<-----%<-----%<-----%<-----%<----

<nodes>
	<node id="2">
		<title>AAAAAAAAAAAAA</title>
	</node>
	<node id="3">
		<title>BBBBBBBBBBBBB</title>
		<childcount>3</childcount>
		<nodes>
			<node id="5">
				<title>CCCCCCCCCCCCC</title>
			</node>
		</nodes>
	</node>
</nodes>
--%<-----%<-----%<-----%<-----%<-----%<-----%<-----%<-----%<-----%<-----%<----

I to mi działa. Problem w tym, że w tym XMLu gałąź "childcount" może
przyjmować różne nazwy - nazwy które chcę podawać w postaci parametru
(<xsl:param name="ChildcountKey">childcount</xsl:param>).

Mój problem polega na tym, że kombinowałem już na wiele sposobów,
ale nie wiem jak poprawić te wiersze:

<xsl:when test="../childcount > 0">
	(<xsl:value-of select="../childcount" />)

żeby sprawdzał nie w ../childcount, a w czymś w stylu ../$ChildcountKey,
tylko to mi nie działa właśnie ;p i nie działa mi też wstawianie wartości
../$ChildcountKey.

Jak to poprawić?

Dziękuję z góry za wszelkie wskazówki :-)
Re: Nazwa węzła z parametru?
#10091
Author: szomiz
Date: Wed, 04 Mar 2009 09:14
12 lines
1385 bytes
Użytkownik "ant" <ant@nowhere.tld> napisał w wiadomości 
news:gokqie$8i5$1@nemesis.news.neostrada.pl...

> żeby sprawdzał nie w ../childcount, a w czymś w stylu ../$ChildcountKey,
> tylko to mi nie działa właśnie ;p i nie działa mi też wstawianie wartości
> ../$ChildcountKey.
>
> Jak to poprawić?

../*[name()=$ChildcountKey]

sz. 
Re: Nazwa węzła z parametru?
#10092
Author: ant
Date: Thu, 05 Mar 2009 18:00
19 lines
1838 bytes
szomiz wrote:
> Użytkownik "ant" <ant@nowhere.tld> napisał w wiadomości 
> news:gokqie$8i5$1@nemesis.news.neostrada.pl...
>> żeby sprawdzał nie w ../childcount, a w czymś w stylu ../$ChildcountKey,
>> tylko to mi nie działa właśnie ;p i nie działa mi też wstawianie wartości
>> ../$ChildcountKey.
>> Jak to poprawić?
> ../*[name()=$ChildcountKey]

Dzięki serdeczne. Jeszcze takie pytanko dodatkowe,
czy można i czy należy do dobrych praktyk ładowanie (include)
plików o nazwie np. utworzonej na podstawie wartości jakiegoś
parametru?

Jak w ogóle parser odczytuje parametry jeśli np. załadujemy
plik XML bezpośrednio w przeglądarce (A xml bedzie miał zdefiniowany
oczywisćie swój szablon xsl)? Czy zostaną użyte domyślne wartości
parametrów z szablonu czy może jakoś z URL'a pójdą? Mam na myśli
oczywiście czysty xml/xsl client-side bez udziału np. PHP.
Re: Nazwa węzła z parametru?
#10093
Author: szomiz
Date: Thu, 05 Mar 2009 19:04
22 lines
2082 bytes
Użytkownik "ant" <ant@nowhere.tld> napisał w wiadomości 
news:gop41i$ric$1@atlantis.news.neostrada.pl...

> Dzięki serdeczne. Jeszcze takie pytanko dodatkowe,
> czy można i czy należy do dobrych praktyk ładowanie (include)
> plików o nazwie np. utworzonej na podstawie wartości jakiegoś
> parametru?

Ktore include? xlinkowe? schemowe? xslowe?

Jezeli ostatnie, to zapomnij o "dynamicznym" includowniu szablonow.

> Jak w ogóle parser odczytuje parametry jeśli np. załadujemy
> plik XML bezpośrednio w przeglądarce (A xml bedzie miał zdefiniowany
> oczywisćie swój szablon xsl)? Czy zostaną użyte domyślne wartości
> parametrów z szablonu czy może jakoś z URL'a pójdą? Mam na myśli
> oczywiście czysty xml/xsl client-side bez udziału np. PHP.

Domyslne.  Transformacja sama z siebie niz z url'a nie zassie. A tak wogole, 
to transformownie w przegladarce zadko kiedy jest dobrym pomyslem.

sz. 
Re: Nazwa węzła z parametru?
#10094
Author: ant
Date: Thu, 12 Mar 2009 06:23
27 lines
2196 bytes
szomiz wrote:
> Użytkownik "ant" <ant@nowhere.tld> napisał w wiadomości 
> news:gop41i$ric$1@atlantis.news.neostrada.pl...
>> Dzięki serdeczne. Jeszcze takie pytanko dodatkowe,
>> czy można i czy należy do dobrych praktyk ładowanie (include)
>> plików o nazwie np. utworzonej na podstawie wartości jakiegoś
>> parametru?
> Ktore include? xlinkowe? schemowe? xslowe?

To ostatnie.

> Jezeli ostatnie, to zapomnij o "dynamicznym" includowniu szablonow.

hmm...

>> Jak w ogóle parser odczytuje parametry jeśli np. załadujemy
>> plik XML bezpośrednio w przeglądarce (A xml bedzie miał zdefiniowany
>> oczywisćie swój szablon xsl)? Czy zostaną użyte domyślne wartości
>> parametrów z szablonu czy może jakoś z URL'a pójdą? Mam na myśli
>> oczywiście czysty xml/xsl client-side bez udziału np. PHP.
> Domyslne.  Transformacja sama z siebie niz z url'a nie zassie. A tak wogole, 
> to transformownie w przegladarce zadko kiedy jest dobrym pomyslem.

Tak przypuszczałem. Będę musiał zmienić koncepcję,
i chyba nawet dobrze, bo będzie przejrzyściej :)

Dziękuję za cenne uwagi.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads