Javascript 使用XSL和JS读取多行XML值
我在处理XSL文件中的多行XML值时遇到了一个问题。 例如,我有以下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表格单元格,但它不
<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>