【发布时间】:2021-11-04 10:48:23
【问题描述】:
我有一个 xml 文件:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="trans.xsl" type="text/xsl"?>
<profile>
<name>Leonard</name>
<age>99</age>
</profile>
及其xslt 转换文件:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="profile">
<form>
<xsl:for-each select="child::*">
<label>
<xsl:value-of select="name()"/>:
<input name="{name()}" type="text" />
</label>
<br />
</xsl:for-each>
</form>
</xsl:template>
</xsl:stylesheet>
如何使用 Fetch API 来获取 DOM 中已经转换的内容? 这个例子
fetch('ref.xml', {})
.then(response => response.text())
.then(str => {
(new window.DOMParser()).parseFromString(str, "text/xml")
const app = document.getElementById("content");
app.innerHTML = str;
})
返回未转换的 XML。
PS:我想使用这种方法,因为 jQuery 显然不那么流行了,HTML5 导入功能将来会被删除(它们在我的浏览器上不起作用),最后<object> <embed> <iframe> 标签确实允许我继承 css 并访问内部标签。
【问题讨论】:
-
“获取已经转换的内容”?哪个工具应该已经转换了内容?您可以将 XML 和 XSLT 提供给 XSLTProcessor 并使用
transformToFragment或transformToDocument方法运行转换。您的 fetch 调用执行的 HTTP 请求不会触发 XSLT 处理。
标签: xml xslt xslt-1.0 fetch-api