XSLT和换行

时间:2009-05-07 19:18:20

标签: xslt attributes

我正在使用XSLT重新格式化一些XML,以(a)将元素转换为属性,以及(b)按字母顺序对所有内容进行排序。它工作除了属性都在一行。我理解这通常是可取的,但在这种情况下,当我在Notepad ++(或其他)中打开文件时,我需要每个属性出现在一个单独的行上。

我可以使用xsl:text添加XML样式的换行符,但这不是我想要的。分隔符属性的值不起作用(这是在.NET的XSL库下)。我想要'非XML'换行符,例如。非XML感知编辑器将解释为在其自己的行上显示每个属性的类型。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

我认为你不能用XSLT做到这一点。你正在寻找的是一个漂亮的XML打印机。为什么不对XSLT的输出进行后期处理?我通常通过“xmllint --format -”来管理这些内容,但这并不能完成你想要的格式化。自己滚动有多难?特别是,如果它只需要执行您正在使用的XML子集(如果您不关心命名空间等,这些内容会变得更容易。)。

答案 1 :(得分:0)

目前尚不清楚“XML”与“非XML”换行符的含义,但这是您想要的:

<?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" indent="yes"/>

    <xsl:template match="/">
      <node>
        <xsl:text>&#010;</xsl:text>
      </node>
    </xsl:template>
</xsl:stylesheet>

答案 2 :(得分:0)

您是指属性中的换行符属性值中的吗?如果是后者,则无法完成,due to the XML attribute normalization requirements

  

这是因为XML 1.0要求将属性值中的换行符标准化为空格,但要求对换行符的字符引用不要进行规范化。数据模型中的属性值表示规范化后的属性值。如果树中属性值中出现的换行符作为换行符而不是字符引用输出,则通过重新分析XML创建的树中的属性值将包含空格而不是换行符,这意味着树具有没有正确输出。