我有一个包含一些数据的 xml 文件。我想显示数据的“扩展”视图或概览。我设法使用 XSL 显示扩展视图,并且我没有使用 javascript 来隐藏概述的一些内容。
这是我的xml文件:
<BS>
<project>
<name>project1</name>
<references id="1">
<ref>ref1</ref>
<ref>ref2</ref>
<ref>ref3</ref>
</references>
<references id="2">
<ref>ref4</ref>
<ref>ref5</ref>
<ref>ref6</ref>
</references>
</project>
<project>
<name>project2</name>
<references id="1">
<ref>ref7</ref>
<ref>ref8</ref>
<ref>ref9</ref>
</references>
</project>
</BS>
和我的 XSL:
<?xml version="1.0" encoding="ISO-8859-1"?>
<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
<head>
<script language="javascript" type="text/javascript">
function HideClass(matchClass)
{
var elems = document.getElementsByTagName('*'),i;
for (i in elems)
{
if((elems[i].className).indexOf(matchClass) > -1)
{
elems[i].style.display = 'none';
}
}
}
function ShowClass(matchClass)
{
var elems = document.getElementsByTagName('*'),i;
for (i in elems)
{
if((elems[i].className).indexOf(matchClass) > -1)
{
elems[i].style.display = 'block';
}
}
}
function ShowOverview()
{
var elems = document.getElementsByTagName('*'),i;
for (i in elems)
{
if((elems[i].className).indexOf('id1') > -1)
{
elems[i].style.display = 'block';
}
else
{
elems[i].style.display = 'none';
}
}
}
</script>
</head>
<body>
<xsl:for-each select="BS/project">
<h3><xsl:attribute name="class"><xsl:value-of select="name"/>-id1</xsl:attribute>
<xsl:value-of select="name"/>
</h3>
<xsl:for-each select="references">
<div><xsl:attribute name="class"><xsl:value-of select="name"/>-id<xsl:value-of select="@id"/></xsl:attribute>
Status: OK<br/>
References id: <xsl:value-of select="@id"/>
<table>
<xsl:for-each select="ref">
<tr><td>
<xsl:value-of select="text()"/>
</td></tr>
</xsl:for-each>
</table>
</div>
<br/>
</xsl:for-each>
<!-- link Hide-->
<xsl:element name="a">
<xsl:attribute name="href">#</xsl:attribute>
<xsl:attribute name="onclick">HideClass('<xsl:value-of select="name"/>');return false;</xsl:attribute>
<i><xsl:text>Hide </xsl:text><xsl:value-of select="name"/></i>
</xsl:element>
<!-- end of link -->
<br/>
<!-- link Show-->
<xsl:element name="a">
<xsl:attribute name="href">#</xsl:attribute>
<xsl:attribute name="onclick">ShowClass('<xsl:value-of select="name"/>');return false;</xsl:attribute>
<i><xsl:text>Show </xsl:text><xsl:value-of select="name"/></i>
</xsl:element>
<!-- end of link -->
<br/>
</xsl:for-each>
<hr/>
<a href="#" onclick="ShowOverview();return false;"> Show only overview</a>
</body>
</html>
但它不起作用。我想在“加载页面”上显示所有内容(这是有效的!)并在单击“隐藏项目 1”时隐藏项目 1(及其所有内容)。
此外,我想显示“所有项目的概述”:
- 标题(例如 <h3> 项目 1</h3> )
- 第一个引用(状态,ref id=1 和包含 ref 的表)
在单击“仅显示概述”时为每个项目。
但是我的 XSL 只能显示所有内容、隐藏所有内容或仅隐藏标题!??!
您对我如何实现目标有任何想法吗?
谢谢你。