Javascript 使用XSL和JS读取多行XML值

Javascript 使用XSL和JS读取多行XML值,javascript,xml,xslt,Javascript,Xml,Xslt,我在处理XSL文件中的多行XML值时遇到了一个问题。 例如,我有以下XML部分: <book> <id>1</id> <content>qwerty asdfg zxcvb </content> </book> 1. qwerty asdfg zxcvb 我试图使用XSL functional获取节点的值,并将其写入HTML表格单元格,但它不

我在处理XSL文件中的多行XML值时遇到了一个问题。 例如,我有以下XML部分:

<book>
    <id>1</id>
    <content>qwerty
             asdfg
             zxcvb
    </content>
 </book>

1.
qwerty
asdfg
zxcvb
我试图使用XSL functional获取节点
的值,并将其写入HTML表格单元格,但它不起作用

下面是我用来获取表中必要单元格并在其中写入多行值的JS代码:

document.getElementById("row1").getElementsByTagName("td")[1].innerHTML = "<xsl:value-of select="book/content"/>";
document.getElementById(“row1”).getElementsByTagName(“td”)[1]。innerHTML=“”;
使用单线值时,它可以正常工作。我相信innerHTML属性不能读取多行值。还有其他机会解决我的问题吗


谢谢

如果您不需要IE支持

document.getElementById("row1").getElementsByTagName("td")[1].innerHTML = `<xsl:value-of select="book/content"/>`;

那么,您需要使用Javascript来处理哪些浏览器,使用哪个XSLT处理器?现代Javascript允许多行字符串,对于旧的字符串,您需要转义换行符,这在XSLT1中有点复杂。我只使用IE和XSLT1.0。问题是xml节点的内容可能不同。它可以是单线值,也可以是多线值,所以我不能专门针对这个问题中的示例中的常量值进行换行。不要告诉我们它不起作用,告诉我们它是如何失败的。显示数据时没有换行符是否存在问题?如果是,,这是因为HTML将换行符呈现为空格。这里我只使用IE。您是在IE内部还是在服务器上运行XSLT?我只是通过IE.XML链接运行XML文件到XSLT。如果您在浏览器中使用XSLT代码创建HTML,那么当然,不使用脚本填充
td
元素似乎更容易,而应该这样做直接使用XSLT。我们需要更多地了解XSLT和它生成的HTML的上下文,以帮助实现这种方法。它工作正常,但多行值在“td”元素的一行中写入。真的要修理吗?
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt"
    xmlns:user="http://example.com/user-functions"
    exclude-result-prefixes="msxsl user"
    version="1.0">

    <msxsl:script language="JScript" implements-prefix="user">
        function escapeLineBreaks(input) {
          if (typeof input != 'string') {
            input = input.item(0).text;
          }
          return input.replace(/\n/g, '\\n').replace(/\r/g, '\\r');
        }
    </msxsl:script>

    <xsl:template match="/">
        <html>
            <body>
                <table>
                    <tr id="row1">
                        <td>a</td>
                        <td></td>
                    </tr>
                </table>
                <script>
                    document.getElementById('row1').cells[1].innerHTML = "<xsl:value-of select="user:escapeLineBreaks(book/content)"/>";
                </script>
            </body>
        </html>
    </xsl:template>

</xsl:stylesheet>