Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用XSLT1.0在XML中显示不可见的换行符_Xml_Xslt - Fatal编程技术网

如何使用XSLT1.0在XML中显示不可见的换行符

如何使用XSLT1.0在XML中显示不可见的换行符,xml,xslt,Xml,Xslt,这就是我的XML输出中显示的内容(请注意换行符) 这是一个测试 这是一个测试 这是一个测试 在我的样式表中 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="urn:user-scripts"> <xsl:output method="html" omit

这就是我的XML输出中显示的内容(请注意换行符)


这是一个测试
这是一个测试
这是一个测试
在我的样式表中

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="urn:user-scripts">
<xsl:output method="html" omit-xml-declaration="yes" standalone="yes" indent="yes" cdata-section-elements="script msxsl:script"/>


<xsl:template match="/">
    <xsl:apply-templates/>
</xsl:template>
<xsl:template match="/Root">
    <xsl:apply-templates select="Item"/>
</xsl:template>
<xsl:template match="Item[@type='Comment']"> 

    <html>
        <head>
            <title>
                Comment: <xsl:value-of select="comment_no"/>
            </title>
        </head>
        <style>
            * {
            font-family: "Arial", sans-serif;
            font-size: 10pt;
            }
            body {
            min-width: 775px;
            max-width: 775px;
            margin-left: auto;
            margin-right: auto;
            }
            td {
            padding: 0px;
            }
            .layoutTable {
            width: 100%;
            }
            .fieldValue {
            width: 99%;
            padding-left: 7px;
            }
            .layoutTable {
            width: 100%;
            }
            div.layoutBin {
            page-break-inside: avoid;
            overflow: hidden;
            border: solid;
            border-width: 1px;
            margin-bottom: 10px;
            padding-left: 3px;
            padding-right: 3px;
            }
        </style>

        <body>
            <div class="layoutBin" id="keyInfo">
                <div class="left" style="width: 25%">
                    <table class="layoutTable">
                        <tr>
                            <td class="fieldValue">
                                <xsl:value-of select="comment"/>
                            </td>
                        </tr>
                    </table>
                </div>    
            </div>
        </body>
    </html>
</xsl:template>
</xsl:stylesheet>

评论:
* {
字体系列:“Arial”,无衬线;
字号:10pt;
}
身体{
最小宽度:775px;
最大宽度:775px;
左边距:自动;
右边距:自动;
}
运输署{
填充:0px;
}
.可布局{
宽度:100%;
}
.字段值{
宽度:99%;
左侧填充:7px;
}
.可布局{
宽度:100%;
}
分区布局箱{
内部分页符:避免;
溢出:隐藏;
边框:实心;
边框宽度:1px;
边缘底部:10px;
左:3倍;
右侧填充:3px;
}
将删除换行符,而“我的浏览器”将在单行中显示结果


如何保留/显示换行符?

在HTML中,换行符通常不重要。它们的处理方式与其他空白相同-转换为单个单词空间。因此,通过查看页面无法判断DOM中是否存在文字换行

您有几个选择:

  • 使用CSS“
    空白:pre
    空白:预换行。(这是最简单的,因为您已经在编写自己的CSS了)。注意:这也会使插入的所有其他文本变得重要,因此您可能需要使用
    xsl:text
    标记
  • 处理文本节点以插入(自动关闭)HTML
    br
    标记代替换行符
  • 处理文本节点以将其拆分为HTML
    div
    s(或段落或类似内容)
  • 你选择哪一个取决于你想对文本做什么


    元素最初可能看起来就是您要查找的。将它放在样式表的顶部,其中包含以空格分隔的元素列表,您希望逐字保留这些元素的空白-但是,只有在使用
    xsl:strip space
    时才需要它,而您似乎没有使用它。

    在HTML中,换行符通常不重要。换行符与其他空格的处理方式相同-转换为单个单词空格。因此,通过查看页面无法判断DOM中是否存在文字换行

    您有几个选择:

  • 使用CSS“
    空白:pre
    空白:预换行。(这是最简单的,因为您已经在编写自己的CSS了)。注意:这也会使插入的所有其他文本变得重要,因此您可能需要使用
    xsl:text
    标记
  • 处理文本节点以插入(自动关闭)HTML
    br
    标记代替换行符
  • 处理文本节点以将其拆分为HTML
    div
    s(或段落或类似内容)
  • 你选择哪一个取决于你想对文本做什么


    元素最初可能看起来就是您要查找的。将它放在样式表的顶部,用空格分隔的元素列表逐字保留其空格-但是,只有在使用
    xsl:strip space
    时才有必要这样做,而您似乎没有这样做。

    请编辑您的Q,说明您使用的xslt引擎和版本。祝你好运。请发布一个可复制的示例,包括完整的样式表。使用您的示例不会删除换行符-但如果您正在输出HTML,浏览器将不会呈现换行符。已经有人问过同样的问题:您能告诉我如何将其应用到我的示例中吗?我完全看不懂那篇文章中建议的解决方案(这里完全是新手),请编辑您的Q,说明您使用的xslt引擎和版本。祝你好运。请发布一个可复制的示例,包括完整的样式表。使用您的示例不会删除换行符-但如果您正在输出HTML,浏览器将不会呈现换行符。已经有人问过同样的问题:您能告诉我如何将其应用到我的示例中吗?我完全看不到那篇文章中建议的解决方案(这里是新手)
    xsl:strip space
    xsl:preserve space
    处理只包含空格字符的文本节点-因此在这里是不相关的。CSS选项似乎没有改变任何东西。不确定如何执行#2和#3-我如何为此编写xsl代码?
    xsl:strip space
    xsl:preserve space
    处理只包含空白字符的文本节点-因此在这里不相关。CSS选项似乎没有改变任何东西。不确定如何执行#2和#3-如何为此编写xsl代码?
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="urn:user-scripts">
    <xsl:output method="html" omit-xml-declaration="yes" standalone="yes" indent="yes" cdata-section-elements="script msxsl:script"/>
    
    
    <xsl:template match="/">
        <xsl:apply-templates/>
    </xsl:template>
    <xsl:template match="/Root">
        <xsl:apply-templates select="Item"/>
    </xsl:template>
    <xsl:template match="Item[@type='Comment']"> 
    
        <html>
            <head>
                <title>
                    Comment: <xsl:value-of select="comment_no"/>
                </title>
            </head>
            <style>
                * {
                font-family: "Arial", sans-serif;
                font-size: 10pt;
                }
                body {
                min-width: 775px;
                max-width: 775px;
                margin-left: auto;
                margin-right: auto;
                }
                td {
                padding: 0px;
                }
                .layoutTable {
                width: 100%;
                }
                .fieldValue {
                width: 99%;
                padding-left: 7px;
                }
                .layoutTable {
                width: 100%;
                }
                div.layoutBin {
                page-break-inside: avoid;
                overflow: hidden;
                border: solid;
                border-width: 1px;
                margin-bottom: 10px;
                padding-left: 3px;
                padding-right: 3px;
                }
            </style>
    
            <body>
                <div class="layoutBin" id="keyInfo">
                    <div class="left" style="width: 25%">
                        <table class="layoutTable">
                            <tr>
                                <td class="fieldValue">
                                    <xsl:value-of select="comment"/>
                                </td>
                            </tr>
                        </table>
                    </div>    
                </div>
            </body>
        </html>
    </xsl:template>
    </xsl:stylesheet>