1

いくつかのデータを含む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はすべてを表示したり、すべてを非表示にしたり、タイトルだけを非表示にしたりすることしかできません!??!

私が目標を達成する方法について何かアイデアはありますか?

ありがとうございました。

4

0 に答える 0