XSLT换行符在MS Build任务中不起作用

时间:2017-08-14 15:45:11

标签: xml xslt msbuild msbuild-task

我尝试将xml文件转换为具有MS Build XslTransformationTask (https://msdn.microsoft.com/en-us//library/ff598688.aspx)的文本文件。

我的问题是,如果我还将它们与其他(非空格)文本组合,我只能打印新行。例如,<xsl:text>&#10;</xsl:text>不会生成换行符,但<xsl:text>&#10;sampletext</xsl:text>会生成换行符。 我尝试了其他变种,例如<xsl:text>&#xd;</xsl:text><xsl:text>&#xa;</xsl:text>,结果相同。

MS Build Task:

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

XSLT doc:     

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

1 个答案:

答案 0 :(得分:0)

希望这有帮助

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

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

创建

1
2
3