我已经使用XSLT将XHTML文件转换为其他XHTML文件。它已成功转换,输出看起来与所需的相同,但转换后的输出在浏览器中打开时不会显示任何内容,而在Dreamweaver中,所有标记的颜色从</head>
标记开始保持黑色而不是通常的多色。找到附加输出的屏幕截图以及我的代码。请帮我解决这个问题。
谢谢你!
输入文件
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="generator" content=
"HTML Tidy for Linux/x86 (vers 11 February 2007), see www.w3.org" />
<meta http-equiv="Content-type" content="text/html; charset=us-ascii" />
<script type="t/j" src="abc.js">
</script>
<title></title>
</head>
<body>
<div id="o">
<div id="m">
<div id="nD">
<p id="nT">Part 1</p>
</div>
<div class="TF" id="123">
<script type="t/j" src="xyz.js"></script>
<script type="t/j" src="abc.js"></script>
<div class="iD">
<img alt="" src="ic.gif" /> <span class="iDe">ABC</span><br />
<div class="iDev">
<div id="ta12" class="bl" style="dis:bl"></div>
<div class="q">
<div id="t0b" class="block">
1<span style="color">TEXT1</span>
</div><br />
T <input type="radio" name="o0" id="t0" onclick="getFeedback()" />
F <input type="radio" name="op0" id="f0" onclick="getFeedback()" />
<div id="18">C</div>
<div id="sfb"></div>
</div><br />
</div>
</div>
</div>
</div>
</div>
</body>
</html>
我的XSLT:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="xhtml">
<xsl:output method="xml" indent="yes" encoding="UTF-8"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="xhtml:body">
<script type="t/j" src="pqr.js" xml:space="preserve"/>
<script type="t/j" src="stu.js" xml:space="preserve"/>
<body onload="loadPage()" onunload="unloadPage()">
<xsl:apply-templates select="@*|node()"/>
</body>
</xsl:template>
<xsl:template match="xhtml:div[@id='123']/@*">
<xsl:attribute name="class">QT</xsl:attribute>
<xsl:attribute name="id">456</xsl:attribute>
</xsl:template>
<xsl:template match="xhtml:script[@src='xyz.js']">
<xsl:copy>
<xsl:apply-templates select="@*[not(@src)]"/>
<xsl:attribute name="src">lmn.js</xsl:attribute>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="xhtml:body//xhtml:script[@src='abc.js']"/>
<xsl:template match="@onclick"/>
<xsl:template match="xhtml:body//xhtml:div[@id='19']"/>
<xsl:template match="xhtml:div[@class='iD']">
<form name="form">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
<xsl:apply-templates select="following-sibling::xhtml:div[1]" mode="inside-form"/>
<br/>
<input type="submit" name="sub" value="Done"/>
</form>
</xsl:template>
<xsl:template match="xhtml:div[@id='ta12']">
<xsl:copy>
<xsl:attribute name="class">pa</xsl:attribute>
<xsl:attribute name="value">10</xsl:attribute>
</xsl:copy>
</xsl:template>
<xsl:template match="xhtml:div[@id='t0b']">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:attribute name="id">ta0b8</xsl:attribute>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="xhtml:input[@name='o0']">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:attribute name="name">key0b8</xsl:attribute>
<xsl:attribute name="class">block</xsl:attribute>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="xhtml:input[@name='op0']">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:attribute name="name">key0b8</xsl:attribute>
<xsl:attribute name="class">block</xsl:attribute>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
输出屏幕截图 -
请参见上图,所有标签从关闭头标签开始为黑色,设计部分为空白。
答案 0 :(得分:2)
如果我改变了,我会得到输出:
<xsl:output method="xml" indent="yes" encoding="UTF-8"/>
为:
<xsl:output method="html" indent="yes" encoding="UTF-8"/>