øser lige ud af min viden;) - som er lille på området her..
men jeg tror godt jeg kender svaret, men skal bare lige være med på det du vil.. det lyder som om du du kan bygge videre på din if.. altså din xpath expression skal bare lige tjekke om den er tom eller ej..
vil gerne hjælpe, men du må sige til hvis jeg har misforstået dig.. om ikke andet er der denne konstruktion..
<xsl:choose> <xsl:when test="/Page/Layout/Row/Cell[@Id='7']/ContentArea/Document[. != '']"> din style 1 her ??? </xsl:when> <xsl:otherwise> din style 2 her ??? </xsl:otherwise> </xsl:choose>
På forsiden har jeg nogle elementer i højre side, der for er det noget i <ContentArea>. På modul siden har ikke noget i højre side og der er <ContentArea> tom. (i <Cell id="7"> )
Jeg har forsøgt med begge dine, og de giver inden forskel, de er validerer begge "false", altså der kommer ingen "class="big" på mit <div id="Content">
ahh vent.. okay det ser sådan der ud efter du har smidt dit din xlst kode ind eller?
jeg kunne nemlig heller ikke finde det i det originale, men okay hvis det er derfor så kan jeg godt forstå det, men du må gerne lige svare på det alligevel så jeg er sikker
xml documentet er valid, du skal bare fjerne whitespace omkring <xml> deklerationen i toppen, som IE laver....
Ja Document er child til ContentArea, og derfor vil jeg validere om det eksisterer eller ej, eksisterer det - ja så er der noget i RightContent, eksistere Document ikke som et child til ContentArea så er der ikke noget indhold i højre side ? - taler vi totalt forbi hinadnen ?
jeg tror jeg kan se problemet.. i min kode før tjekker jeg på "InnerText" i Document.. men der er ingen så vidt jeg kan se andet en andre nodes. vi bliver nød til at tjekke på en af dens attributter! er denne okay? ElementId
så f.eks
<xsl:choose> <xsl:when test="/Page/Layout/Row/Cell[@Id='7']/ContentArea/Document[@ElementId != '']"> din style 1 her ??? </xsl:when> <xsl:otherwise> din style 2 her ??? </xsl:otherwise> </xsl:choose>
ja det er ret mystisk når den godt kan finde frem til det.. altså hertil //Cell[@Id='7']/ContentArea
for det andet burde jo også være reelt nok, men jeg har mulighed for at teste det i morgen da jeg har et xpath validator på arbejdet så kan jeg se om den virker eller ej
Har jeg følgende : <div id="Content" xsl:use-attribute-sets="ContentAttributes">
og uden for template har jeg : <xsl:attribute-set name="ContentAttributes"> <xsl:attribute name="class"> <xsl:if test="/Page/Layout/Row/Cell[@Id='7']/ContentArea[not(*)]">big</xsl:if> </xsl:attribute> </xsl:attribute-set>
jeg tester mine forslag i morgen på min workstation, men om ikke andet så har jeg stadig ikke valid XML selv.. selv om jeg fjerner white space øverst.. eller det gør jeg ikke for der er intet når jeg gemmer det på min pc:)
så "teknisk" set har jeg ikke set dokumentet som det rigtigt bør være
jokkejensen >> Nu har jeg åbnet den for at teste, men xml'en er altså stadig ikke valid hos mig.. altså den brokker sig ikke over noget min validator, men problemet er at alle noder i <ContentArea> bliver læst som text og ikke noder!!
Det er altså den eneste forklaring jeg har.
med mindre det virker hos dig?? i min validator er det data i Contentare og ikke noder..
installer og åben så din xml fil.. så kan du se det hele i træstruktur:) og så kan du se hvad jeg mener.. det er 100000 gange mere overskueligt at arbejde med XML sådan:)
JEg bruger noget der hedder xmlSpy og det er ret fint til mit behov, kan også åbne det i træstruktur. og genrere xpath for mig..
Men lige den her fatter jeg ikke..
mht til : No snippet for template with id: 5, type: Logon; er det kun på mit xml layout den fremkommer. Endten er den "lukket" <ContentArea /> eller også er der et eller andet indhold i den.
(Jeg har tilføjet en logon til xml layoutet. så nu skriver den det ikke over længere.
som jeg siger så er det det et valid xml dokument... men den læser ikke indholdet i lige præcis id 7's contentarea som nodes men som data.. tekst altså..
og så vil det ikke virker.. hvis det bliver læst som nodes så virker det..
det er op til dig selv om du til tage med ord for det elle ej;)
Synkron er bygget på en måde.. så den præsentere noget xml ... det xml kan jeg så formatere med xslt..
Jeg har "selv" lavet så jeg kan udskrive ren xml, ved at matche / i en række templates og udskrive med <xsl:copy-of> du skal derfor ikke tage dig af formateringen i xml=1 layoutet - det er en jeg selv står for, og den kan derfor være noget buggy - XML arket jeg arbejeder med er valid, og du kan selv lave..
Altså er xml=1 versionen også bare en kopi af xml'et der bliver udskrevet, noget jeg kan arbejde videre på.. Tag dig derfor ikke af den forkerte formatering og whitespace fejl i toppen.
så kan jeg godt forstå hvorfor det ikke virker og så kan jeg ikke rigtig hjælpe med problemet for det er xml'en der skal laves om.
hvis det ikke ser sådan ud hos dig... så ved jeg ikke hvorfor det ikke åbner korrekt hos mig for jeg har fjernet white spaces som du siger. ellers må du ligge en original xml op til downloade hvor ie ikke har rørt ved den.
ejhhhhhhhhhhhh der kommer et korrekt xml dokument fra synkron løsningen...
Det udskriver jeg så bare som xml med xslt.. ala Match="/" <copy-of select="node()">, men jeg har lavet en fejl, så den escaper tegnene... det rigtige xml dokument er korrekt - men mit output af det fejler.. Ved ikke hvordan jeg ellers kan forklare.
men det er også lige godt, smid et svar som tak for din tid :)
ja men jeg forstod ikke rigtig hvad der skete der:S Jeg forstår bare at det dokument jeg kunne hente ikke kunne bruges til de forslag jeg kom med fordi elementerne under ContentArea blev læst forkert - som mit screendump viser
Hvis jeg ikke har løst noget problem eller peget dig i den rigtige retning så skal jeg ikke have point for min tid...
men der kom da mange indlæg i denne tråde må jeg indrømme he he
*** så håber jeg du fik noget ud af mit input herinde ***
he he;)
Synes godt om
Ny brugerNybegynder
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.