首页 > 解决方案 > Mysql 到 XSLT 替换 \r\n

问题描述

我正在使用来自 MySQLi 查询的数据并将其放入最终替换 Word 中的 document.xml 文件的 XSLT 文件中。我遇到的问题是 \r 和 \n 进入我的 Word 文档。

XSLT 文件非常大,因此我不会在此处粘贴所有代码,但是,下面是其中一个字段的示例:

            <w:p w:rsidR="00C61454" w:rsidRPr="00430555" w:rsidRDefault="00AE5B7C" w:rsidP="00C61454">
              <w:pPr>
                <w:rPr>
                  <w:rFonts w:ascii="Calibri" w:hAnsi="Calibri" w:cs="Segoe UI"/>
                </w:rPr>
              </w:pPr>
              <w:proofErr w:type="spellStart"/>
              <w:r w:rsidRPr="00AE5B7C">
                <w:rPr>
                  <w:rFonts w:ascii="Calibri" w:hAnsi="Calibri" w:cs="Segoe UI"/>
                  <w:sz w:val="18"/>
                  <w:szCs w:val="18"/>
                </w:rPr>
                <w:t><xsl:value-of select="comments"/></w:t>
              </w:r>
              <w:proofErr w:type="spellEnd"/>
            </w:p>

在上面的代码中,注释被从 mysqli 查询放入 xslt。还有一些其他字段可能包含 \r\n,因此适用于整个文件的内容最好。

如果在 SELECT 脚本中进行替换有效,我也可以采用该方法,但是,作为新手,我不知道如何替换多个项目(\r 和 \n),也不知道用什么替换它们在 Word 中创建换行符/回车符。

标签: mysqlxmlxsltms-wordopenxml

解决方案


在 XSLT/XPath 中,normalize-space()将合并嵌入的空白并修剪周围的空白。也许它可以帮助您处理不需要的\r\n角色。

另请参阅如何在 XML 文件中添加换行符(换行符)? (换行符和换行符的语义可能取决于处理应用程序。)

最后,在 OOXML(Microsoft Word 的 DOCX 格式背后的标记标准)中,使用<w:br/>(在运行元素w:t内的文本元素之间w:r)强制硬换行。


推荐阅读