2017-08-14 8 views
0

J'essaie de transformer un fichier xml en fichier texte avec MS Build XslTransformationTask (https://msdn.microsoft.com/en-us//library/ff598688.aspx).XSLT newline ne fonctionne pas dans la tâche MS Build

Mon problème est que je ne peux imprimer de nouvelles lignes que si je les combine aussi avec d'autres textes (non-espace). Par exemple, <xsl:text>&#10;</xsl:text> ne produit pas de saut de ligne, mais <xsl:text>&#10;sampletext</xsl:text>. J'ai essayé d'autres variantes comme <xsl:text>&#xd;</xsl:text> et <xsl:text>&#xa;</xsl:text> avec le même résultat.

MS construire Tâche:

<Target AfterTargets="Build" Name="Test"> 
<XslTransformation XslInputPath="config.xslt" XmlInputPaths="config.schema.xml" OutputPaths="out.txt" /> 
</Target> 

doc XSLT:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method='text' /> 

<xsl:template match="/root/properties"> 

<xsl:for-each select="./*"> 

<!--working new line character:--> 
<xsl:text>&#10;name: </xsl:text> 
<xsl:value-of select="name(.)" /> 

<!--not working:--> 
<xsl:text>&#10;</xsl:text> 

</xsl:for-each> 

</xsl:template> 

<xsl:template match="text()" /> 
</xsl:stylesheet> 

Répondre

0

Hope this helps

<xml> 
    <property>1</property> 
    <property>2</property> 
    <property>3</property> 
</xml> 

Exemple XSL

<?xml version="1.0" ?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method='text' /> 

<xsl:template match="/"> 
    <xsl:for-each select='//property'> 
     <xsl:if test='position() > 1 '><xsl:text>&#xd;</xsl:text></xsl:if> 
     <xsl:value-of select='.'/> 
    </xsl:for-each> 
</xsl:template> 

Crée

1 
2 
3