我想知道是否有可能出现这样的情况:我可以将与xsl链接的内联xml放入html的主体中,例如:
<html>
<body>
text
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="articles.xsl"?>
<articles>
<article title="title"/>
</articles>
text
</body>
</html>
答案 0 :(得分:0)
见
第2.4节http://www.w3.org/TR/2012/NOTE-html-xml-tf-report-20120209/
建议有两种方法
(a)将XML放在script
元素
(b)使用XHTML。
不建议在HTML中直接嵌套XML,因为HTML解析器会将XML视为错误的HTML,并尝试修复它。
答案 1 :(得分:0)
正如Michael Kay建议的那样,您可以在XHTML中嵌入XML并将样式表应用于整个文档。然后,您可以将XSL转换应用于整个文档,将标识转换应用于所有HTML元素,并将特定模板应用于嵌入的非HTML元素。
以下是一个例子:
输入XHTML
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="ie8fix.xsl"?>
<!DOCTYPE html SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>test</title>
</head>
<body>
text
<articles xmlns="">
<article title="title"/>
</articles>
text
</body>
</html>
<强> XSLT 强>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml">
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="articles">
<div class="articles">
<h1>articles</h1>
<xsl:apply-templates select="article" mode="transform"/>
</div>
</xsl:template>
<xsl:template match="article" mode="transform">
<article><!-- HTML5 article element -->
<h2><xsl:value-of select="@title"/></h2>
<xsl:apply-templates select="node()" mode="transform"/>
</article>
</xsl:template>
</xsl:stylesheet>
输出XHTML
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="ie8fix.xsl"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>test</title>
</head>
<body>
text
<div class="articles">
<h1>articles</h1>
<article>
<h2>title</h2>
</article>
</div>
text
</body>
</html>
另一种选择是在使用JavaScript和XSLTProcessor
加载页面后转换XML。