Article View: pl.comp.xml
Article #9754Re: XSLT wybranie node'ów odpowiadających innym node'om
From: szomiz
Date: Thu, 13 Mar 2008 12:15
Date: Thu, 13 Mar 2008 12:15
50 lines
2488 bytes
2488 bytes
Użytkownik "zbyszek malec" <zbyszanna@gazeta.SKASUJ-TO.pl> napisał w
wiadomości news:frb54a$gcc$1@inews.gazeta.pl...
> Witam
> Mam następujący dokument xml:
>
> <data>
> <usages>
> <usage table="A"/>
> <usage table="B"/>
> </usages>
>
> <tables>
> <table name="A"/>
> <table name="B"/>
> <table name="C"/>
> </tables>
> </data>
>
> Teraz chciałbym napisać takie XSLT żeby mi wybrało elementy z tables
> takie,
> które występują w elementach usage, tzn. takie że atrybut table w usage
> jest
> taki sam jak atrybut name w table. Nie bardzo mam pomysł jak to zrobić.
> Próbowałem coś na kształt:
> <xsl:for-each select="tables/table[count(usages/usage[@table=@name])=0]">
> </xsl:for-each>
select="table[/data/usages/usage[@table=current()/@name]]"
I takie wyrazenie oddaje wprost twoje wymaganie.
Mozna to jednak zrobic zarowno sprytniej jak i wydajniej.
<xsl:key name="uTables" match="/data/usages/usage" use="@table"/>
...
<xsl:apply-templates select="table"/>
...
<xsl:template match="table"/>
<xsl:template match="table[key('uTables',@name)]">
...
</xsl:template>
> ale jak widać bez powodzenia. Da się to zrobić w XSLT?
Jak widac da sie. Co wiecej, nazwa klucza jest /concat'owalnym/ stringiem.
Co mozna wykorzystac do quasi-dynamicznego parametryzowania wywolan ;)
sz.
Technical Details
Message-ID:
<frb5us$bo5$1@atlantis.news.neostrada.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.internetia.pl!newsfeed.tpinternet.pl!newsfeed.neostrada.pl!atlantis.news.neostrada.pl!news.neostrada.pl!news.tpi.pl!not-for-mailReferences:
<frb54a$gcc$1@inews.gazeta.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.internetia.pl!newsfeed.tpinternet.pl!newsfeed.neostrada.pl!atlantis.news.neostrada.pl!news.neostrada.pl!news.tpi.pl!not-for-mail From: "szomiz" <szomiz@kocha.dostawac.reklamy.przez.net> Newsgroups: pl.comp.xml Subject: Re: XSLT wybranie node'ów odpowiadających innym node'om Date: Thu, 13 Mar 2008 13:15:12 +0100 Organization: TP - http://www.tp.pl/ Lines: 52 Message-ID: <frb5us$bo5$1@atlantis.news.neostrada.pl> References: <frb54a$gcc$1@inews.gazeta.pl> Reply-To: "szomiz" <xml@op.pl> NNTP-Posting-Host: hau2.internetdsl.tpnet.pl X-Trace: atlantis.news.neostrada.pl 1205410588 12037 79.187.20.2 (13 Mar 2008 12:16:28 GMT) X-Complaints-To: usenet@tpi.pl NNTP-Posting-Date: Thu, 13 Mar 2008 12:16:28 +0000 (UTC) X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2900.3138 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3198 X-RFC2646: Format=Flowed; Original MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit