2011-09-16 7 views
0

XML에서 데이터를 읽고 웹 페이지의 테이블에 표시하는 웹 응용 프로그램이 있습니다. xslt를 사용하여 테이블을 정의하고 xml에서 데이터를 가져 와서 테이블 방식으로 표시합니다.xml에서 데이터 표시

내 요구 사항은 XML 파일에서 사용할 수있는 데이터가없는, 가정, 난 스크린 샷에서 나는 아래 첨부와 같이 "어떤 데이터가 발견되지 않았다"와 같은 메시지가 테이블에 표시 할 :

enter image description here

여기 내 xml 및 xslt 파일을 첨부했습니다. 다른 사람이 내 코드의 형식으로 솔루션을 제공 할 수 있습니까?

XSLT 파일

<?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> 

      <xsl:for-each select="MMDiagnostics/Conference"> 
      <h1> 
       Media Mixer - <xsl:value-of select="name"/> 
      </h1> 
      </xsl:for-each> 
     </div> 

     &#160; 



     <div class="RadGrid RadGrid_Default" id="SummaryData" style="position:absolute;width:790px;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:for-each select="MediaMixer/Conference"> 
        <!--<xsl:sort select="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:for-each> 

       </table> 
       </td> 
      </tr> 
      </table> 

      &#160; 

      <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;">ID 1</td> 
        <td class="rgHeader SummaryTableHdrRow" style="white-space: nowrap;font-weight:bold;" >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:for-each select="MediaMixer/Conference/Participant"> 

        <xsl:if test="(position() mod 2 = 0)"> 
         <tr class="rgAltRow SummaryTableDataRow"> 



         <td valign = "top"> 
          <xsl:value-of select="ID1"/> 
         </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="ID1"/> 
          </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> 

       </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> 

XML 파일

<?xml-stylesheet type="text/xsl" href="MMDiagnostics.xslt"?> 

<MediaMixer> 

    <Conference> 
    <Name>Test</Name> 
    <ConfId>1002</ConfId> 
    <CompositeAddress>238.57.0.1</CompositeAddress> 
    <CompositePort>48000</CompositePort> 
    <CompositeSsrc>243324353</CompositeSsrc> 
    <NoOfParticipants>2</NoOfParticipants> 

    <Participant> 
     <ID1>80542151</ID1> 
     <ID2>4</ID2> 
     <ParticipantAddress>192.168.177.40</ParticipantAddress> 
     <ParticipantListeningPort>22000</ParticipantListeningPort> 
     <MMListeningPort>45000</MMListeningPort> 
     <SSRCFromParticipant>216541</SSRCFromParticipant> 
     <SSRCFromMM>56481</SSRCFromMM> 
    </Participant> 

    <Participant> 
     <ID1>80542151</ID1> 
     <ID2>7</ID2> 
     <ParticipantAddress>192.168.177.40</ParticipantAddress> 
     <ParticipantListeningPort>22000</ParticipantListeningPort> 
     <MMListeningPort>45000</MMListeningPort> 
     <SSRCFromParticipant>216541</SSRCFromParticipant> 
     <SSRCFromMM>56481</SSRCFromMM> 
    </Participant> 

    <Participant> 
     <ID1>7825482</ID1> 
     <ID2>0</ID2> 
     <ParticipantAddress>192.168.177.22</ParticipantAddress> 
     <ParticipantListeningPort>22002</ParticipantListeningPort> 
     <MMListeningPort>45002</MMListeningPort> 
     <SSRCFromParticipant>3256</SSRCFromParticipant> 
     <SSRCFromMM>14822456</SSRCFromMM> 
    </Participant> 

    </Conference> 

    <Conference> 
    <Name>Test002</Name> 
    <ConfId>1002</ConfId> 
    <CompositeAddress>238.57.0.1</CompositeAddress> 
    <CompositePort>48005</CompositePort> 
    <CompositeSsrc>353324353</CompositeSsrc> 
    <NoOfParticipants>2</NoOfParticipants> 

    <Participant> 
     <ID1>70542151</ID1> 
     <ID2>0</ID2> 
     <ParticipantAddress>192.168.177.45</ParticipantAddress> 
     <ParticipantListeningPort>22004</ParticipantListeningPort> 
     <MMListeningPort>45004</MMListeningPort> 
     <SSRCFromParticipant>316541</SSRCFromParticipant> 
     <SSRCFromMM>26481</SSRCFromMM> 
    </Participant> 

    <Participant> 
     <ID1>70542151</ID1> 
     <ID2>0</ID2> 
     <ParticipantAddress>192.168.177.45</ParticipantAddress> 
     <ParticipantListeningPort>22004</ParticipantListeningPort> 
     <MMListeningPort>45004</MMListeningPort> 
     <SSRCFromParticipant>316541</SSRCFromParticipant> 
     <SSRCFromMM>26481</SSRCFromMM> 
    </Participant> 

    <Participant> 
     <ID1>70542151</ID1> 
     <ID2>0</ID2> 
     <ParticipantAddress>192.168.177.45</ParticipantAddress> 
     <ParticipantListeningPort>22004</ParticipantListeningPort> 
     <MMListeningPort>45004</MMListeningPort> 
     <SSRCFromParticipant>316541</SSRCFromParticipant> 
     <SSRCFromMM>26481</SSRCFromMM> 
    </Participant> 

    <Participant> 
     <ID1>70542151</ID1> 
     <ID2>0</ID2> 
     <ParticipantAddress>192.168.177.45</ParticipantAddress> 
     <ParticipantListeningPort>22004</ParticipantListeningPort> 
     <MMListeningPort>45004</MMListeningPort> 
     <SSRCFromParticipant>316541</SSRCFromParticipant> 
     <SSRCFromMM>26481</SSRCFromMM> 
    </Participant> 

    <Participant> 
     <ID1>70542151</ID1> 
     <ID2>0</ID2> 
     <ParticipantAddress>192.168.177.45</ParticipantAddress> 
     <ParticipantListeningPort>22004</ParticipantListeningPort> 
     <MMListeningPort>45004</MMListeningPort> 
     <SSRCFromParticipant>316541</SSRCFromParticipant> 
     <SSRCFromMM>26481</SSRCFromMM> 
    </Participant> 

    <Participant> 
     <ID1>5625482</ID1> 
     <ID2>0</ID2> 
     <ParticipantAddress>192.168.177.20</ParticipantAddress> 
     <ParticipantListeningPort>22006</ParticipantListeningPort> 
     <MMListeningPort>45006</MMListeningPort> 
     <SSRCFromParticipant>8256</SSRCFromParticipant> 
     <SSRCFromMM>41822456</SSRCFromMM> 
    </Participant> 

    </Conference> 

</MediaMixer> 

답변

0
<?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> 

     <xsl:for-each select="MMDiagnostics/Conference"> 
     <h1> 
      Media Mixer - <xsl:value-of select="name"/> 
     </h1> 
     </xsl:for-each> 
    </div> 

    &#160; 



    <div class="RadGrid RadGrid_Default" id="SummaryData" style="position:absolute;width:790px;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:choose> 
       <xsl:when test="count(//Participant)>0"> 
       <xsl:for-each select="MediaMixer/Conference"> 
       <!--<xsl:sort select="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:for-each> 

       </xsl:when> 
       <xsl:otherwise> 
        <tr> 
        <td> No data has been discovered..</td> 
        </tr> 

       </xsl:otherwise> 
       </xsl:choose> 

      </table> 
      </td> 
     </tr> 



     </table> 

     &#160; 

     <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;">ID 1</td> 
       <td class="rgHeader SummaryTableHdrRow" style="white-space: nowrap;font-weight:bold;" >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:for-each select="MediaMixer/Conference/Participant"> 

       <xsl:if test="(position() mod 2 = 0)"> 
        <tr class="rgAltRow SummaryTableDataRow"> 



        <td valign = "top"> 
         <xsl:value-of select="ID1"/> 
        </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="ID1"/> 
         </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> 

      </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> 
+0

안녕하세요 ... u는 PLS 내가 완료 근래 와트 읽을 수 있습니다 ... 통해 UR 코드를 수행 할 수 없습니다 지금까지 내 코드 줄을 줄 내 xsl에서 ?? –

+0

죄송합니다. 문서의 존재 여부를 확인하여 첫 번째 항목을 뒤섞어서 표시합니다.이 글은 문서의 요소를 계산합니다. – alistair

+0

html, head 및 body 태그 (본문 내용 아님)를 조건 바깥으로 옮길 수도 있습니다 . – alistair