いくつかのデータを含む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はすべてを表示したり、すべてを非表示にしたり、タイトルだけを非表示にしたりすることしかできません!??!
私が目標を達成する方法について何かアイデアはありますか?
ありがとうございました。