Domanda

Ho un documento XSLT e voglio uscita un tag di ancoraggio (a) con alcuni attributi i cui valori dipendono altre cose .. Così, io uso il xsl: tag attributo con un scegliere / se sotto di essa (o vice- versa). Quindi, il mio aspetto codice come questo:

<a href="/somepage.html">
  <xsl:if test="current_page='this_page'">
   <xsl:attribute name='class'>active</xsl:attribute>
  </xsl:if>
My Page
</a>

Tuttavia, il problema è dunque, nel codice HTML di output, tutti i ritorno a capo / spazi ci sono, che finisce per fare il mio link hanno uno spazio aggiuntivo a sinistra di esso (ed è sottolineato, il che rende evidente). Quindi la soluzione più ovvia è quella di fare questo:

<a href="/somepage.html"><xsl:if test="current_page='this_page'"><xsl:attribute name='class'>active</xsl:attribute></xsl:if>My Page</a>

per sbarazzarsi dello spazio. Non troppo grande di un affare nel codice di cui sopra, ma la mia pagina reale ha una logica molto più ad esso, rendendo questo davvero brutto. L'unica altra cosa che posso pensare a pulire questo è quello di mettere la logica al di fuori della generazione di collegamento, ma poi mi sto ripetendo le cose più e di dover creare più variabili. Che è ragionevole, ma ancora non del tutto ideale. Questo è solo un esempio in cui ho voluto fare questo, i suoi accaduto diverse altre volte così mi stavo chiedendo se ci sono altri modi di risolvere questo.

È stato utile?

Soluzione

Forse si potrebbe usare questo all'inizio del documento XSLT:

<xsl:strip-space elements="a"/>

Aggiornamento, funziona questo:

<a href="/somepage.html">
  <xsl:if test="current_page='this_page'">
   <xsl:attribute name='class'>active</xsl:attribute>
  </xsl:if>
  <xsl:text>My Page</xsl:text>
</a>

Altri suggerimenti

Sarebbe una semplice xsl:strip-space nella parte superiore del foglio di stile che si sia sufficiente?

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:output method="html" indent="yes"/>

  <xsl:strip-space elements="*"/>

  ...

</xsl:stylesheet>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top