Avatar billede dr_nielsen Nybegynder
28. april 2004 - 16:00 Der er 8 kommentarer og
3 løsninger

xmlns skal fortolkes i xslt

XML:
<Document xmlns="urn:Microsoft.Search.Response.Document">
  <Title>Dokument title</Title>
  <Date>1601-01-01T00:00:00</Date>
</Document>

XSL:
<xsl:template match="Document">
  <div class="section"><xsl:apply-templates /></div>
</xsl:template>

Hvorledes beder jeg min xsl om at se på xmlns="" og fortolke udfra det.
som det ser ud nu bliver alt bare transformeret uden hensyn til HTML-Markup
Avatar billede nute Nybegynder
28. april 2004 - 16:25 #1
kan du lige forklare lidt nærmere ? er ikke helt med på hvad du ønsker ...
Avatar billede Slettet bruger
29. april 2004 - 10:31 #2
Jeg gætter på du vil gøre een ting hvis dit namespace er f.eks. "urn:Microsoft.Search.Response.Document", og en anden ting hvis det er noget andet - se det er jo det lækre ved namespaces - du definerer hvert sit prefix til dem i Stylesheet'et og matcher elementer herfra - eks:

<xsl:stylesheet
  xmlns:xsl="..."
  xmlns:Doc="urn:Microsoft.Search.Response.Document"
  xmlns:Rock="urn:Microsoft.Search.Response.Rockument"
>

<xsl:template match="Doc:Document">
  ...
</xsl:template>

<xsl:template match="Rock:StageElement">
  ...
</xsl:template>

/CS
Avatar billede dr_nielsen Nybegynder
29. april 2004 - 10:56 #3
Du er på rette vej, og forstår vist mit spm. Men sagen er den at der ikke er brugt prefix i den XML-stream jeg modtager (Det er et SPS søgeresultat)

Dette element ligger i toppen af dokumentet og er i et namespace uden prefix:
<ResponsePacket xmlns="urn:Microsoft.Search.Response" >

Og dette element er indlejret i <ResponsePacket> og er også i en variant af samme namespace (går jeg ud fra):
<Document type="tyoen" relevance="231" xmlns="urn:Microsoft.Search.Response.Document">

Men I min xsl validerer det jo ikke at gøre følgende for at importere begge namespaces:
<xsl:transform version="1.0"
  xmlns="urn:Microsoft.Search.Response"
  xmlns="urn:Microsoft.Search.Response.Document"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

Namespaces har jeg fattet nu, det er cool, men I don’t quite get this one.
Avatar billede nute Nybegynder
29. april 2004 - 11:04 #4
dr_nielsen >> dette har jo dybest set ikke noget med namespaces at gøre. Den 'xmlns' du har liggende på din <ResponsePacket> node, kan ikke ses på som noget andet end en attribut.
Avatar billede dr_nielsen Nybegynder
29. april 2004 - 11:17 #5
Jeg er ikke helt enig, xsl fortolker elementet som værende del af det namespace (det er det som ikke virker pt.), men hvis jeg fjerne "attributten" fungere alt som det skal.
Så den er desværre mere end en attribut.
Avatar billede nute Nybegynder
29. april 2004 - 11:28 #6
greystate har skidseret brugen af namespace. så længe du ikke lægger dine noder i et specifikt namespace (<ns1:dokument/> og <ns2:dokument/>), så vil alle noder eksistere indenfor ddet samme namespace. for mig er det stadig en attribut ...
Avatar billede Slettet bruger
29. april 2004 - 11:33 #7
For mig at se er det standard Namespace stuff - MS gør det bare lidt vanskeligere at overskue ved ikke at bruge prefixes, men hele tiden default'e. Lav prefixes i XSLT og find elementerne vha. dem:

<xsl:transform version="1.0"
  xmlns:res="urn:Microsoft.Search.Response"
  xmlns:resdoc="urn:Microsoft.Search.Response.Document"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="res:Response/resdoc:Document">
osv...

/CS

(PS: Teknisk set er "xmlns" ikke en attribut, fordi den ikke optræder i ".attributes" i DOM - )
Avatar billede Slettet bruger
29. april 2004 - 11:35 #8
Ups - de ligger vist omvendt, hvis jeg læser rigtigt:

<xsl:template match="resdoc:Document/res:Response">
...
</xsl:template>

/CS
Avatar billede nute Nybegynder
29. april 2004 - 11:37 #9
oki ... så har man også lært noget nyt :o]
Avatar billede dr_nielsen Nybegynder
29. april 2004 - 12:03 #10
U are so right, tak
Avatar billede Slettet bruger
29. april 2004 - 12:19 #11
I er bare så flinke :-)
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