Вопрос

Я хочу удалить все пробелы, чтобы мой последний код выглядел как один блок текста.

Вот мой заголовок

<?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" />

что, кажется, работает большую часть времени, но у меня проблемы. Видеть источник

Проблемная область кажется

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

Я использую Symphony CSM для генерации данных. Я просто хочу удалить все пробелы, но я хочу сохранить свои модели отступления для читаемости.

Это было полезно?

Решение

Проблемная область кажется

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

Решение есть:

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

Сделайте примечание: Использование <xsl:text> Инструкция по устранению существующих манечных символов и явно укажите, какой именно текст должен быть выводится.

Другие советы

Из http://www.w3.org/tr/xslt#strip

После того, как дерево для исходного документа или документа StyleShip было построено, но до того, как оно будет обработано XSLT, некоторые текстовые узлы разряжаются. Текстовый узел никогда не разряжается, если он не содержит только пробелистые символы.

Этот

",

clinical research coordinator, at

"

а также

"
or

"

не являются лишь пустыми текстовыми узлами, тогда они не должны быть полосаты от таблицы стиля.

Вот почему xsl:text инструкция для. Использовать:

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

а также

<xsl:text> or </xsl:text> 
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top