Pregunta

Quiero que todo el espacio en blanco se elimine, por lo que mi código final se parece a un solo bloque de texto.

Aquí está mi encabezado

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

<xsl:output method="xml"
doctype-public="-W3CDTD XHTML 1.0 Strict//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
omit-xml-declaration="yes"
encoding="UTF-8"
indent="no" />

Lo que parece funcionar la mayor parte del tiempo, pero estoy teniendo problemas. Ver fuente

El área problemática parece ser

<!-- clinical research coordinator -->
<xsl:template match="clinical-research-coordinators">

<xsl:variable name="id" select="item/@id" />
<xsl:variable name="entry" select="//people/entry[@id=$id]" />

<xsl:value-of select="$entry/display-name" />, 

clinical research coordinator, at 

<xsl:element name="a">

    <xsl:attribute name="href">mailto:<xsl:value-of select="$entry/email" /></xsl:attribute>
    <xsl:attribute name="class">email</xsl:attribute>

    <xsl:value-of select="$entry/email" />

</xsl:element>

or 

<xsl:value-of select="$entry/phone" />  

</xsl:template>

Estoy usando Symphony CSM para generar los datos. Solo quiero que se eliminen todos los espacios en blanco, pero quiero mantener mis patrones de sangría para su legibilidad.

¿Fue útil?

Solución

El área problemática parece ser

<!-- clinical research coordinator -->
<xsl:template match="clinical-research-coordinators">
    <xsl:variable name="id" select="item/@id" />
    <xsl:variable name="entry" select="//people/entry[@id=$id]" />
    <xsl:value-of select="$entry/display-name" />,   clinical research coordinator, at   
    <xsl:element name="a">
        <xsl:attribute name="href">mailto:
            <xsl:value-of select="$entry/email" />
        </xsl:attribute>
        <xsl:attribute name="class">email</xsl:attribute>
        <xsl:value-of select="$entry/email" />
    </xsl:element>
      or   
    <xsl:value-of select="$entry/phone" />
</xsl:template>

La solucion es:

<!-- clinical research coordinator -->
<xsl:template match="clinical-research-coordinators">
    <xsl:variable name="id" select="item/@id" />
    <xsl:variable name="entry" select="//people/entry[@id=$id]" />
    <xsl:value-of select="$entry/display-name" />,   clinical research coordinator, at <xsl:text/>  
    <xsl:element name="a">
        <xsl:attribute name="href">mailto:
            <xsl:value-of select="$entry/email" />
        </xsl:attribute>
        <xsl:attribute name="class">email</xsl:attribute>
        <xsl:value-of select="$entry/email" />
    </xsl:element>
      <xsl:text> or </xsl:text>   
    <xsl:value-of select="$entry/phone" />
</xsl:template>

Hacer nota: El uso del <xsl:text> Instrucción para eliminar los caracteres en blanco existentes y para especificar explícitamente qué texto se debe emitir exactamente.

Otros consejos

De http://www.w3.org/tr/xslt#strip

Después de que se haya construido el árbol para un documento fuente o un documento de hoja de estilo, pero antes de que XSLT lo procese, algunos nodos de texto se despojan. Un nodo de texto nunca se despide a menos que contenga solo caracteres en blanco.

Este

",

clinical research coordinator, at

"

y

"
or

"

No son nodos de texto solo de espacio en blanco, entonces no deben rayarse desde la hoja de estilo.

Por eso el xsl:text La instrucción es para. Usar:

<xsl:text>, clinical research coordinator, at </xsl:text> 

y

<xsl:text> or </xsl:text> 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top