2014-09-10 3 views
0

Мой вход XML:Можем ли мы использовать xsl: strip-space в xsl: copy-of function?

<sb:author> 

    <ce:given-name> 

     A. 

    </ce:given-name> 

    <ce:surname> 

     Bernal 

    </ce:surname> 

</sb:author> 

желаемый результат XML:

<sb:author> 

    <ce:given-name>A.</ce:given-name> 

    <ce:surname>Bernal</ce:surname> 

</sb:author> 

В моем XSL я использовал

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

<xsl:strip-space elements="ce:given-name ce:surname"/> 

<xsl:copy-of select="normalize-space(sb:author)" /> 

, но он не работает. Может ли кто-нибудь помочь мне удалить эти пробелы?

+0

возможно дубликат [конкатенации двух полей в XSL] (HTTP: // StackOverflow. com/questions/10215605/concatenation-two-fields-in-xsl) – Archlight

+0

, если вы используете 'copy-of', он просто клонирует узлы, а пробелы также будут скопированы. –

+0

'strip-space' разделяет только текстовые узлы, которые являются _entirely_ whitespace. Текстовые узлы, содержащие любые символы без пробелов, не затрагиваются. –

ответ

1

Вы можете использовать тождественное преобразование и добавить этот шаблон:

<xsl:template name="text()[normalize-space() != '']"> 
    <xsl:value-of select="normalize-space()" /> 
</xsl:template> 
-2

использовать их в комбо:

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

<xsl:output indent="yes"/> 
Смежные вопросы