Sto avendo difficoltà con un modello che deve controllare 3 nodi differenti e se non sono vuote, stampare i datitest XSL vuote stringhe con <xsl:if> e smistamento
Sto usando <xsl:if test="string-length(node) != 0">
per ciascun nodo poi facendo l'uscita ma non sta stampando nulla. È come se il test restituisse zero.
Ho selezionato il nodo padre di ciascun nodo su cui voglio verificare la lunghezza come modello, ma non funziona ancora.
Un'altra cosa, come si ordina l'elenco utilizzando <datefrom>
. Ho provato a utilizzare questo, ma ricevo un errore sul caricamento del foglio di stile. Se prendo il genere funziona
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template name="hoo" match="/">
<html>
<head>
<title>Registered Festival Organisers and Festivals</title>
<link rel="stylesheet" type="text/css" href="userfestival.css" />
</head>
<body>
<h1>Registered Festival Organisers and Festivals</h1>
<h3>Ordered by the festival date ascending</h3>
<xsl:apply-templates select="folktask/member"/>
<xsl:if test="position()=last()">
<div class="count"><h2>Total number of festival organisers: <xsl:value-of select="count(/folktask/member/user/account/userlevel[text()=3])"/></h2></div>
<div class="count"><h2>Total number of festivals: <xsl:value-of select="count(/folktask/member/festival)"/></h2></div>
</xsl:if>
</body>
</html>
</xsl:template>
<xsl:template match="folktask/member">
<xsl:if test="user/account/userlevel='3'">
<xsl:sort select="festival/event/datefrom"/>
<div class="userdiv">
<xsl:apply-templates select="user"/>
<xsl:apply-templates select="festival"/>
</div>
</xsl:if>
</xsl:template>
<xsl:template match="user">
<xsl:apply-templates select="@id" mode="userid"/>
<xsl:apply-templates select="personal/name"/>
<xsl:apply-templates select="personal/address1"/>
<xsl:apply-templates select="personal/city"/>
<xsl:apply-templates select="personal/county"/>
<xsl:apply-templates select="personal/postcode"/>
<xsl:apply-templates select="personal/telephone"/>
<xsl:apply-templates select="personal/mobile"/>
<xsl:apply-templates select="personal/email"/>
<xsl:apply-templates select="personal"/>
<xsl:apply-templates select="account/username"/>
<xsl:apply-templates select="account"/>
</xsl:template>
<xsl:template match="festival">
<xsl:apply-templates select="@id" mode="festid"/>
<xsl:apply-templates select="event/eventname"/>
<xsl:apply-templates select="event/url"/>
<xsl:apply-templates select="event/datefrom"/>
<xsl:apply-templates select="event/dateto"/>
<xsl:apply-templates select="event/location"/>
<xsl:apply-templates select="event/eventpostcode"/>
<xsl:apply-templates select="event/coords/lat"/>
<xsl:apply-templates select="event/coords/lng"/>
<xsl:apply-templates select="contact/conname"/>
<xsl:apply-templates select="contact/conaddress1"/>
<xsl:apply-templates select="contact/conaddress2"/>
<xsl:apply-templates select="contact/concity"/>
<xsl:apply-templates select="contact/concounty"/>
<xsl:apply-templates select="contact/conpostcode"/>
<xsl:apply-templates select="contact"/>
<xsl:apply-templates select="contact/conemail"/>
</xsl:template>
<xsl:template match="@id" mode="userid">
<div class="heading bold"><h2>USER ID: <xsl:value-of select="." /></h2></div>
</xsl:template>
<xsl:template match="personal/name">
<div class="small bold">NAME:</div>
<div class="large"><xsl:value-of select="." /></div>
</xsl:template>
<xsl:template match="personal/address1">
<div class="small bold">ADDRESS:</div>
<div class="large"><xsl:value-of select="." /></div>
</xsl:template>
<xsl:template match="personal/city">
<div class="small bold">CITY:</div>
<div class="large"><xsl:value-of select="." /></div>
</xsl:template>
<xsl:template match="personal/county">
<div class="small bold">COUNTY:</div>
<div class="large"><xsl:value-of select="." /></div>
</xsl:template>
<xsl:template match="personal/postcode">
<div class="small bold">POSTCODE:</div>
<div class="large"><xsl:value-of select="." /></div>
</xsl:template>
<xsl:template match="personal/telephone">
<div class="small bold">TELEPHONE:</div>
<div class="large"><xsl:value-of select="." /></div>
</xsl:template>
<xsl:template match="personal/mobile">
<div class="small bold">MOBILE:</div>
<div class="large"><xsl:value-of select="." />
</div>
</xsl:template>
<xsl:template match="personal/email">
<div class="small bold">EMAIL:</div>
<div class="large">
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:text>mailto:</xsl:text>
<xsl:value-of select="." />
</xsl:attribute>
<xsl:value-of select="." />
</xsl:element>
</div>
</xsl:template>
<xsl:template match="personal">
<div class="small bold">SEX:</div>
<div class="colored bold">
<xsl:choose>
<xsl:when test="sex='Male'">
<div class="sex male"><xsl:value-of select="sex/."/></div>
</xsl:when>
<xsl:otherwise>
<div class="sex female"><xsl:value-of select="sex/."/></div>
</xsl:otherwise>
</xsl:choose>
</div>
</xsl:template>
<xsl:template match="account/username">
<div class="small bold">USERNAME:</div>
<div class="large"><xsl:value-of select="." /></div>
</xsl:template>
<xsl:template match="account">
<div class="small bold">ACCOUNT TYPE:</div>
<div class="colored ">
<xsl:choose>
<xsl:when test="userlevel='1'">
<div class="nml bold">Normal User</div>
</xsl:when>
<xsl:when test="userlevel='2'">
<div class="vol bold">Volunteer</div>
</xsl:when>
<xsl:when test="userlevel='3'">
<div class="org bold">Organiser</div>
</xsl:when>
<xsl:otherwise>
<div class="name adm bold">Administrator</div>
</xsl:otherwise>
</xsl:choose>
</div>
</xsl:template>
<xsl:template match="@id" mode="festid">
<div class="heading2 bold"><h2>FESTIVAL ID: <xsl:value-of select="." /></h2></div>
</xsl:template>
<xsl:template match="eventname">
<div class="small bold">EVENT NAME:</div>
<div class="large bold"><xsl:value-of select="." /></div>
</xsl:template>
<xsl:template match="url">
<div class="small bold">URL:</div>
<div class="large">
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:value-of select="." />
</xsl:attribute>
<xsl:value-of select="." />
</xsl:element>
</div>
</xsl:template>
<xsl:template match="datefrom">
<div class="small bold">DATE FROM:</div>
<div class="large"><xsl:value-of select="." /></div>
</xsl:template>
<xsl:template match="dateto">
<div class="small bold">DATE TO:</div>
<div class="large"><xsl:value-of select="." /></div>
</xsl:template>
<xsl:template match="location">
<div class="small bold">LOCATION:</div>
<div class="large"><xsl:value-of select="." /></div>
</xsl:template>
<xsl:template match="eventpostcode">
<div class="small bold">POSTCODE:</div>
<div class="large"><xsl:value-of select="." /></div>
</xsl:template>
<xsl:template match="coords/lat">
<div class="small bold">LATITUDE:</div>
<div class="large"><xsl:value-of select="." />
</div>
</xsl:template>
<xsl:template match="coords/lng">
<div class="small bold">LONGITUDE:</div>
<div class="large"><xsl:value-of select="." />
</div>
</xsl:template>
<xsl:template match="conname">
<div class="small bold">NAME:</div>
<div class="large"><xsl:value-of select="." /></div>
</xsl:template>
<xsl:template match="conaddress1">
<div class="small bold">ADDRESS:</div>
<div class="large"><xsl:value-of select="." /></div>
</xsl:template>
<xsl:template match="conaddress2">
<xsl:if test="string-length(conaddress2)!=0">
<div class="small bold"><xsl:text> </xsl:text></div>
<div class="large">
<xsl:value-of select="." />
</div>
</xsl:if>
</xsl:template>
<xsl:template match="concity">
<div class="small bold">CITY:</div>
<div class="large"><xsl:value-of select="." /></div>
</xsl:template>
<xsl:template match="concounty">
<div class="small bold">COUNTY:</div>
<div class="large"><xsl:value-of select="." /></div>
</xsl:template>
<xsl:template match="conpostcode">
<div class="small bold">POSTCODE:</div>
<div class="large"><xsl:value-of select="." /></div>
</xsl:template>
<xsl:template match="contact">
<xsl:if test="string-length(contelephone)!=0">
<div class="small bold">TELEPHONE:</div>
<div class="large">
<xsl:value-of select="contelephone/." />
</div>
</xsl:if>
<xsl:if test="string-length(conmobile)!=0">
<div class="small bold">MOBILE:</div>
<div class="large">
<xsl:value-of select="conmobile/." />
</div>
</xsl:if>
<xsl:if test="string-length(fax)!=0">
<div class="small bold">FAX:</div>
<div class="large">
<xsl:value-of select="fax/." />
</div>
</xsl:if>
</xsl:template>
<xsl:template match="conemail">
<div class="small bold">EMAIL:</div>
<div class="large">
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:text>mailto:</xsl:text>
<xsl:value-of select="." />
</xsl:attribute>
<xsl:value-of select="." />
</xsl:element>
</div>
</xsl:template>
</xsl:stylesheet>
E una sezione del mio xml. Se hai bisogno di me per modificare il mio post in modo da poter vedere il codice completo lo farò, ma il resto funziona bene.
<folktask>
<member>
<user id="4">
<personal>
<name>Connor Lawson</name>
<sex>Male</sex>
<address1>12 Ash Way</address1>
<address2></address2>
<city>Swindon</city>
<county>Wiltshire</county>
<postcode>SN3 6GS</postcode>
<telephone>01791928119</telephone>
<mobile>07338695664</mobile>
<email>[email protected]</email>
</personal>
<account>
<username>iTuneStinker</username>
<password>3a1f5fda21a07bfff20c41272bae7192</password>
<userlevel>3</userlevel>
<signupdate>2010-03-26T09:23:50</signupdate>
</account>
</user>
<festival id="1">
<event>
<eventname>Oxford Folk Festival</eventname>
<url>http://www.oxfordfolkfestival.com/</url>
<datefrom>2010-04-07</datefrom>
<dateto>2010-04-09</dateto>
<location>Oxford</location>
<eventpostcode>OX1 9BE</eventpostcode>
<coords>
<lat>51.735640</lat>
<lng>-1.276136</lng>
</coords>
</event>
<contact>
<conname>Stuart Vincent</conname>
<conaddress1>P.O. Box 642</conaddress1>
<conaddress2></conaddress2>
<concity>Oxford</concity>
<concounty>Bedfordshire</concounty>
<conpostcode>OX1 3BY</conpostcode>
<contelephone>01865 79073</contelephone>
<conmobile></conmobile>
<fax></fax>
<conemail>[email protected]</conemail>
</contact>
</festival>
</member>
</folktask>
Non sono stati forniti il codice XSLT con il problema principale. Per quanto riguarda '', può essere solo un figlio (immediato!) Di '' o ''. –
Post modificato per mostrare l'intero codice per il foglio di stile XSL – AdRock