我有一個XSLT文件,顯示CD的標題和藝術家名稱。我有3個模板,第一個模板顯示標題,第二個模板顯示藝術家名稱,第三個模板包含隱藏表格。隱藏表格使用複選框顯示。我想重用標題和藝術家模板,以便在第三個模板可見時將其顯示爲表格數據。XSLT:在另一個模板中重新使用模板
問題是第三個模板沒有顯示在瀏覽器上,因爲我不知道要分配給匹配屬性。任何幫助,高度讚賞。謝謝。
預期結果: http://oi61.tinypic.com/6ibkur.jpg [1] 的index.html
<html>
<head>
<script>
function loadXMLDoc(filename)
{
if (window.ActiveXObject)
{
xhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
else
{
xhttp = new XMLHttpRequest();
}
xhttp.open("GET", filename, false);
try {xhttp.responseType = "msxml-document"} catch(err) {} // Helping IE11
xhttp.send("");
return xhttp.responseXML;
}
function displayResult()
{
xml = loadXMLDoc("cdcatalog.xml");
xsl = loadXMLDoc("cdcatalog_apply.xsl");
// code for IE
if (window.ActiveXObject || xhttp.responseType == "msxml-document")
{
ex = xml.transformNode(xsl);
document.getElementById("example").innerHTML = ex;
}
// code for Chrome, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
{
xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(xsl);
resultDocument = xsltProcessor.transformToFragment(xml, document);
document.getElementById("example").appendChild(resultDocument);
}
}
</script>
</head>
<body onload="displayResult()">
<div id="example" />
</body>
</html>
cdcatalog.xml
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
</cd>
<cd>
<title>Hide your heart</title>
<artist>Bonnie Tyler</artist>
</cd>
<cd>
<title>Greatest Hits</title>
<artist>Dolly Parton</artist>
</cd>
</catalog>
cdcatalog_apply.xsl
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<style type="text/css">
.pdesc{
display:none;
}
input[type=checkbox]:checked + .pdesc {
display: block;
}
</style>
</head>
<body>
<h1>CD Collection</h1>
<xsl:apply-templates select="catalog/cd">
</xsl:apply-templates>
</body>
</html>
</xsl:template>
<xsl:template match="cd">
<TR >
<xsl:apply-templates select="title"/>
<xsl:apply-templates select="artist"/>
</TR>
</xsl:template>
<xsl:template match="title" name="title">
<p>
<xsl:value-of select="."/>
</p>
</xsl:template>
<xsl:template match="artist" name="artist">
<p>
<xsl:value-of select="."/>
</p>
</xsl:template>
<xsl:template match="X"><!-- I don't know what to put in the match -->
<label >Show More</label>
<input type="checkbox" ></input>
<div class="pdesc">
<h2>CD Details</h2>
<table border="1" >
<tr bgcolor="#9acd32">
<th>Title</th>
<th>Artist</th>
<tr>
<td> <xsl:call-template name="title"/></td>
<td> <xsl:call-template name="artist"/></td>
</tr>
</tr>
</table>
</div>
</xsl:template>
</xsl:stylesheet>
這裏的預期結果是什麼? – 2014-12-05 17:52:55
嗨michael.hor257k,我已經更新了我的帖子,預期結果。所以當複選框被選中時,表格變得可見。 – user2994263 2014-12-05 18:05:52
而不是在瀏覽器中顯示HTML的視圖,你可以告訴我們預期的輸出源代碼? – 2014-12-05 18:22:32