user851777
user851777

Reputation:

selecting drop-down value in xsl

How to select the drop down value ? Am trying to display some data whenever I select some value in a drop-down in xsl. For example, If A is selected in the drop-down, details pertaining to A will be displayed in a table. Similarly, if B is selcted, only details relevant to B will be displayed. I need to write a line of code in xslt to select the drop down value in an if statement.

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet  version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="/">
    <html>
      <head>
        <title>VPGate Media Mixer</title>
        <meta http-equiv="expires" content="0"/>
        <meta http-equiv="pragma" content="no-cache"/>
        <meta http-equiv="cache-control" content="no-cache, must-revalidate"/>
        <meta http-equiv="refresh" content="15"></meta>
        <script src="/Common/common.js\" type="text/javascript"></script>
        <link rel="stylesheet" type="text/css" href="style001.css" />
        <link rel="stylesheet" type="text/css" href="Grid.Default.css" />
      </head>
      <body class="WorkArea">
        <div class="divSummaryHeader" id="SummaryHeader">
          <h1>Media Mixer - VPGate</h1>         
        </div>

        &#160;
        <div class="RadGrid RadGrid_Default" id="SummaryData" style="position:absolute;width:828px;height:510px;overflow:auto">
          <table border="0" class="rgMasterTable rgClipCells" cellspacing="0" cellpadding="0" >
            <tr>
              <input type="button" class="formEditBtn" id="SubBtn" value="Refresh" onclick="window.location=window.location;"/> 
            </tr>
            <tr>
              <td class="rgHeader SummaryTableHdrRow" style="font-weight:bold;" colspan="2">Conference Summary</td>
            </tr>
            <tr>
              <td>
                <table border="0" class="rgMasterTable rgClipCells" cellspacing="0" cellpadding="0"  >
                  <tr>
                    <td class="rgHeader SummaryTableHdrRow" style="font-weight:bold;">Conference Name</td>
                    <td class="rgHeader SummaryTableHdrRow" style="font-weight:bold;">Conference ID</td>
                    <td class="rgHeader SummaryTableHdrRow" style="font-weight:bold;">Composite Address</td>
                    <td class="rgHeader SummaryTableHdrRow" style="font-weight:bold;">Composite Port</td>
                    <td class="rgHeader SummaryTableHdrRow" style="font-weight:bold;">Composite Ssrc</td>
                    <td class="rgHeader SummaryTableHdrRow" style="font-weight:bold;">No Of Participants</td>
                  </tr>
                  <xsl:if test="MediaMixer!= ''">
                    <xsl:for-each select="MediaMixer/Conference">
                      <!--<xsl:sort select="Name"/>-->
                      <xsl:if test="Name !=''">
                        <xsl:if test="(position() mod 2 = 0)">
                          <tr class="rgAltRow SummaryTableDataRow">
                            <td valign = "top">
                              <xsl:value-of select="Name"/>
                            </td>
                            <td valign = "top">
                              <xsl:value-of select="ConfId"/>
                            </td>
                            <td valign = "top">
                              <xsl:value-of select="CompositeAddress"/>
                            </td>
                            <td valign = "top">
                              <xsl:value-of select="CompositePort"/>
                            </td>
                            <td valign = "top">
                              <xsl:value-of select="CompositeSsrc"/>
                            </td>
                            <td valign = "top">
                              <xsl:value-of select="NoOfParticipants"/>
                            </td>
                          </tr>
                        </xsl:if>
                        <xsl:if test="(position() mod 2 = 1)">
                          <td>
                            <tr class="rgRow SummaryTableDataRow">
                              <td valign = "top">
                                <xsl:value-of select="Name"/>
                              </td>
                              <td valign = "top">
                                <xsl:value-of select="ConfId"/>
                              </td>
                              <td valign = "top">
                                <xsl:value-of select="CompositeAddress"/>
                              </td>
                              <td valign = "top">
                                <xsl:value-of select="CompositePort"/>
                              </td>
                              <td valign = "top">
                                <xsl:value-of select="CompositeSsrc"/>
                              </td>
                              <td valign = "top">
                                <xsl:value-of select="NoOfParticipants"/>
                              </td>
                            </tr>
                          </td>
                        </xsl:if>
                      </xsl:if>
                    </xsl:for-each>
                  </xsl:if>
                  <xsl:if test="MediaMixer = ''">
                    <td valign = "top">
                      <xsl:text>No Data </xsl:text>
                    </td>
                  </xsl:if>
                </table>
              </td>
            </tr>
          </table>
          &#160;

          <div align="center">
            <b> Please select a Conference Name :</b>
            &#160;
            <select name="combo" id="combo">
              <xsl:for-each select="MediaMixer/Conference">
                <option>
                  <xsl:value-of select="Name"/>
                </option>
              </xsl:for-each>
            </select>
          </div>




          <script type="text/C#" runat="server">

          </script>



            <table border="0" class="rgMasterTable rgClipCells" cellspacing="1" cellpadding="1">
            <tr>
              <td class="rgHeader SummaryTableHdrRow" style="font-weight:bold;" colspan="2">Conference Details</td>
            </tr>

            <tr>
              <td>
                <table border="0" class="rgMasterTable rgClipCells" cellspacing="0" cellpadding="0" >
                  <tr>
                    <td class="rgHeader SummaryTableHdrRow" style="font-weight:bold;">Conference Name</td>
                    <td class="rgHeader SummaryTableHdrRow" style="font-weight:bold;">Conference ID</td>
                    <td class="rgHeader SummaryTableHdrRow" style="font-weight:bold;">Participant ID 1</td>
                    <td class="rgHeader SummaryTableHdrRow" style="font-weight:bold;">Participant ID 2</td>
                    <td class="rgHeader SummaryTableHdrRow" style="font-weight:bold;">Participant Address</td>
                    <td class="rgHeader SummaryTableHdrRow" style="font-weight:bold;">Participant Listening Port</td>
                    <td class="rgHeader SummaryTableHdrRow" style="font-weight:bold;">MM Listening Port</td>
                    <td class="rgHeader SummaryTableHdrRow" style="font-weight:bold;">SSRC From Participant</td>
                    <td class="rgHeader SummaryTableHdrRow" style="font-weight:bold;">SSRC From MM</td>
                  </tr>
                  <xsl:if test="MediaMixer!= ''">
                    <xsl:for-each select="MediaMixer/Conference">
                      <xsl:if test="Name='combo.SelectedValue'">


                        <xsl:for-each  select="Participant">
                          <xsl:if test="(position() mod 2 = 0)">
                            <tr class="rgAltRow SummaryTableDataRow">
                              <td valign = "top">
                                <xsl:value-of select="../Name"/>
                              </td>
                              <td valign = "top">
                                <xsl:value-of select="../ConfId"/>
                              </td>
                              <td valign = "top">
                                <xsl:value-of select="translate(ID1,
                                'abcdefghijklmnopqrstuvwxyz',
                                'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" />
                              </td>
                              <td valign = "top">
                                <xsl:value-of select="ID2"/>
                              </td>
                              <td valign = "top">
                                <xsl:value-of select="ParticipantAddress"/>
                              </td>
                              <td valign = "top">
                                <xsl:value-of select="ParticipantListeningPort"/>
                              </td>
                              <td valign = "top">
                                <xsl:value-of select="MMListeningPort"/>
                              </td>
                              <td valign = "top">
                                <xsl:value-of select="SSRCFromParticipant"/>
                              </td>
                              <td valign = "top">
                                <xsl:value-of select="SSRCFromMM"/>
                              </td>
                            </tr>
                          </xsl:if>
                          <xsl:if test="(position() mod 2 = 1)">
                            <td>
                              <tr class="rgRow SummaryTableDataRow">

                                <td valign = "top">
                                  <xsl:value-of select="../Name"/>
                                </td>
                                <td valign = "top">
                                  <xsl:value-of select="../ConfId"/>
                                </td>
                                <td valign = "top">
                                  <xsl:value-of select="translate(ID1,
                                'abcdefghijklmnopqrstuvwxyz',
                                'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" />
                                </td>
                                <td valign = "top">
                                  <xsl:value-of select="ID2"/>
                                </td>
                                <td valign = "top">
                                  <xsl:value-of select="ParticipantAddress"/>
                                </td>
                                <td valign = "top">
                                  <xsl:value-of select="ParticipantListeningPort"/>
                                </td>
                                <td valign = "top">
                                  <xsl:value-of select="MMListeningPort"/>
                                </td>
                                <td valign = "top">
                                  <xsl:value-of select="SSRCFromParticipant"/>
                                </td>
                                <td valign = "top">
                                  <xsl:value-of select="SSRCFromMM"/>
                                </td>
                              </tr>
                            </td>
                          </xsl:if>
                        </xsl:for-each>
                      </xsl:if>
                    </xsl:for-each>
                  </xsl:if>
                  <xsl:if test="MediaMixer= ''">
                    <td valign = "top">
                      <xsl:text>No Data </xsl:text>
                    </td>
                  </xsl:if>
                </table>
              </td>
            </tr>
          </table>
          &#160;
          <div style="display:none">
            <iframe id="frameUpdate" name="frameUpdate" width="100%"></iframe>
          </div>
        </div>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

Upvotes: 0

Views: 2526

Answers (1)

Andreas
Andreas

Reputation: 1250

If you are building a HTML page out of XML data with client side XSLT in the Browser, be aware that XSLT can only define the transformation process. When the HTML is ready, XSLT has finished its job. What you can do is to insert javascript into the XSLT source, that reacts on drop-down changes and hides the inappropiate data. The XSLT can't communicate with the Javascript, because the Javascript will begin to work after the page is complete and XSLT is already finished. But it can fit the javascript into the HTML source. Just imagine how to work this out in plain HTML without XSLT and let XSLT build this HTML.

Upvotes: 1

Related Questions