Pergunta

Eu tenho um documento XSLT e quero emitir uma tag âncora (a) com alguns atributos cujos valores dependem de outras coisas. Assim, eu uso a tag xsl: atributo com uma escolha/se abaixo dela (ou vice-versa). Então, meu código se parece com o seguinte:

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

No entanto, o problema está então, na saída HTML, todas as linhas/espaços estão lá, o que acaba fazendo meu link ter um espaço extra à esquerda (e está sublinhado, tornando -o óbvio). Portanto, a solução óbvia é fazer isso:

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

para se livrar do espaço. Não é muito importante no código acima, mas minha página real tem muito mais lógica, tornando isso realmente feio. A única outra coisa que consigo pensar para limpar isso é colocar a lógica fora da geração de links, mas depois estou repetindo as coisas mais e tendo que criar mais variáveis. O que é razoável, mas ainda não é totalmente ideal. Este é apenas um exemplo em que eu queria fazer isso, aconteceu várias outras vezes, então eu estava me perguntando se existem outras maneiras de resolver isso.

Foi útil?

Solução

Talvez você possa usar isso no início do documento XSLT:

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

Atualizar, isso funciona:

<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>

Outras dicas

Seria um simples xsl:strip-space No topo de sua folha de estilo, seja suficiente?

<?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>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top