Avatar billede Slettet bruger
15. december 2006 - 12:50 Der er 1 løsning

Udvælgelse af bestemte data

Hej

Jeg har en XML-fil med følgende format:

<tic>
<message id="DRD_5853" version="3" owner="DRD" situation="5853">
…data…
</message>
</tic>

Jeg vil lave en udvælgelse hvor jeg kun viser de felter hvor owner er = DRD som i ovenstående.

Jeg forsøger med følgende i en XSL-fil men det giver ikke rigtig noget resultat:

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<head>
<title>Vejarbejder i Aalborg Kommune</title>
</head>
<body bgcolor="#ffffff">
<table bgcolor="#ffffff" border="0" cellpadding="2" cellspacing="2" width="600">
<xsl:for-each select="tic/message">
<xsl:template match="tic/message">
<xsl:if test = "@owner = 'DRD'">
<tr>

Hvad gør jeg forkert?
Avatar billede Slettet bruger
15. december 2006 - 13:33 #1
For det første skal du bruge det oficielle XSLT namespace i stedet for det gamle "Working Draft", dvs.:

  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

For det andet ser det ud som om du lægger en template indeni en for-each - det kan man ikke. Hvis det eneste du vil have ud, er message elementer med @owner="DRD", så lav en template der definerer den måde du vil have en generel message til at se ud, f.eks.:

<xsl:template match="message">
<p>
  Besked: <xsl:value-of select="."/>
</p>
</xsl:template>

Derefter fortæller du i din rod-template at du kun er interesseret i at få DRD's beskeder:

<xsl:template match="/">
... (før messages)

  <xsl:apply-templates select="tic/message[@owner = 'DRD']" />

... (efter messages)
</xsl:template>

/CS
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester