2014-10-01 50 views
0

我遇到了一個挑戰,我努力尋找正確的方法。所需的信息位於兩個不同的節點中,但屬於設備的相同信息。如何從以前的節點中提取數據

後來的節點包含前一節點按照畫面的目標信息:XML nodes

電話裝置具有其中在所述設備的信息被存儲,IP電話和工作站兩個節點。在工作站下,主要信息與一個將其鏈接到IP電話部分的密鑰一起存儲。

我有以下代碼:

<?xml version='1.0'?> 
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
     <xsl:template match="/"> 
     <html> 
      <body> 
     <table border="1"> 
      <tr> 
      <td><strong>Name</strong></td> 
      <td><strong>Software Version</strong></td> 
     <td><strong>Status</strong></td> 
      </tr> 
      <xsl:for-each select="ENTRY/ENTRY/ENTRY/ENTRY/ENTRY"> 
     <xsl:if test="@CLASS='Workstation'"> 
      <tr> 
     <td><xsl:value-of select="@NAME"/></td> 
     <xsl:for-each select="ATTRIBUTE"> 
      <xsl:if test="@NAME='Managed IP Phone'"> 
      <xsl:call-template name="Phone_Data"> 
       <xsl:with-param name="IPPhone" select="VALUE"/> 
      </xsl:call-template> 
      </xsl:if> 
     </xsl:for-each> 
     <td>.</td> 
      </tr> 
     </xsl:if> 
     </xsl:for-each> 
    </table> 
     </body> 
    </html> 
</xsl:template> 

    <!-- Additional templates to pull 2nd phone node data. --> 
    <xsl:template name="Phone_Data"> 
    <xsl:param name="IPPhone"/> 
    <td> <xsl:value-of select="$IPPhone"/> </td> <!-- --> 
<xsl:for-each select="../ENTRY"> 
    <xsl:if test="@NAME='IP Phones'"> 
    <xsl:for-each select="ENTRY"> 
     <xsl:if test="@NAME=$IPPhone"> 
     <xsl:for-each select="ATTRIBUTE"> 
     <!-- This is an attribute under the IP Phones - GBADM104_ENTRY --> 
     <xsl:if test="@NAME='Software Version'"> 
     <td><xsl:value-of select="VALUE"/></td> 
     </xsl:if> 
    </xsl:for-each> 
     </xsl:if> 
    </xsl:for-each> 
     </xsl:if> 
</xsl:for-each> 
    </xsl:template> 

    </xsl:stylesheet> 

從GBADM104_ENTRY即將下工作站節點,它不提供我的信息我的預期下IP從GBADM104_ENTRY得到在截圖中的電話節點。

由於我是新手,我明顯在Phone_Data模板中犯了一個錯誤,以使用我需要的數據來定位節點。我不知道是否可以給我建議如何以正確的方式做到這一點?

<?xml version="1.0" encoding="utf-8"?> 
    <!-- Generated by DSEdit --> 
    <ENTRY NAME="CustomerSite" CLASS="Site"> 
    <ENTRY NAME="Production" CLASS="Configuration Set"> 
     <ENTRY NAME="REG6699CIC01" CLASS="Server"> 
     <ENTRY NAME="IP Phones" CLASS="IP Phones"> 
      <ENTRY NAME="51948094-c6e6-4fb9-bb76-ba1986c51429" CLASS="IP Phone"> 
      <ATTRIBUTE NAME="VAD"> 
       <VALUE>No</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Software Version"> 
       <VALUE>3.2.7.0198</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Feature Call Park"> 
       <VALUE>Yes</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Status"> 
       <VALUE>Current</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Station Type"> 
       <VALUE>Workstation</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="ReloadedLast"> 
       <VALUE>20140825143741Z</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="MAC Address"> 
       <VALUE>0004F24F4012</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Name"> 
       <VALUE>GBADM103</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Date Last Modified"> 
       <VALUE>1406660976</VALUE> 
      </ATTRIBUTE> 
      </ENTRY> 
      <ENTRY NAME="51dbb1fe-9957-420a-bfc3-3f4d9bc1b2fc" CLASS="IP Phone"> 
      <ATTRIBUTE NAME="Software Version"> 
       <VALUE>3.2.7.0198</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Status"> 
       <VALUE>Current</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Station Type"> 
       <VALUE>Workstation</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="ReloadedLast"> 
       <VALUE>20140912074858Z</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="MAC Address"> 
       <VALUE>0004F2B37167</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Name"> 
       <VALUE>GBADM104</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Date Last Modified"> 
       <VALUE>1410881183</VALUE> 
      </ATTRIBUTE> 
      </ENTRY> 
      <ENTRY NAME="51eace77-7f6d-467a-bbac-b27329229c53" CLASS="IP Phone"> 
      <ATTRIBUTE NAME="VAD"> 
       <VALUE>No</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Software Version"> 
       <VALUE>3.2.7.0198</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Status"> 
       <VALUE>Current</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Station Type"> 
       <VALUE>Workstation</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="ReloadedLast"> 
       <VALUE>20140814104810Z</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="MAC Address"> 
       <VALUE>0004F24F3E3B</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Persistent"> 
       <VALUE>Yes</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="IP Address"> 
       <VALUE>10.254.250.61</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Name"> 
       <VALUE>GBADS201</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Date Last Modified"> 
       <VALUE>1406899229</VALUE> 
      </ATTRIBUTE> 
    </ENTRY> 
     <ATTRIBUTE NAME="Security"> 
     <VALUE>Minimal</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Call Ringback Timeout"> 
     <VALUE>0</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="VQM Collector Periodic Trigger"> 
     <VALUE>0</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Codec Pref"> 
     <VALUE>0|G.711 mu-law|</VALUE> 
     <VALUE>1|G.711 a-law|</VALUE> 
     <VALUE>2|G.729AB|</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Active"> 
     <VALUE>Yes</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Use 486 For Reject"> 
     <VALUE>No</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Emergency Customer Name"> 
     <VALUE>Regus</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Call Waiting Tone"> 
     <VALUE>No</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Connection Type"> 
     <VALUE>SIPAddress</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Sync Forward To IC Status"> 
     <VALUE>No</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="IsSupportedRingSets"> 
     <VALUE>Yes</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="SIP ID Address SYNC"> 
     <VALUE>Sync Dynamic</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="VQM Collector Session"> 
     <VALUE>No</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="SIP Receive Port"> 
     <VALUE>5060</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Audio Path"> 
     <VALUE>Always In</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="VAD"> 
     <VALUE>No</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Proxy Group"> 
     <VALUE>3b6b817b-73e5-4db5-b6d5-57eb0f9b26ff</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Polycom Override Date Date Top"> 
     <VALUE>D</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Software Version"> 
     <VALUE>3.2.7.0198</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Emergency Location Description"> 
     <VALUE>15305 Dallas Parkway Suite 300, Addison, TX, 75001</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Polycom Headset Microphone Gain"> 
     <VALUE>21</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Feature Call Park"> 
     <VALUE>Yes</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Region Location"> 
     <VALUE>North America</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Status"> 
     <VALUE>Current</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Polycom Override Date Format"> 
     <VALUE>D</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Emergency Numbers"> 
     <VALUE>911</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Feature URL Dialing"> 
     <VALUE>No</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="DTMF Off Time"> 
     <VALUE>80</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Station Type"> 
     <VALUE>Workstation</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="VQM Collector Periodic"> 
     <VALUE>No</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="One Touch Voicemail"> 
     <VALUE>No</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Ring Always"> 
     <VALUE>Yes</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Regional Tone Set"> 
     <VALUE>Language_Default</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="VQM RTCP-XR"> 
     <VALUE>No</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="ExpansionModules"> 
     <VALUE>0</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Polycom Call Waiting"> 
     <VALUE>beep</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Enable Handsfree"> 
     <VALUE>Yes</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Polycom NumberFirstCID"> 
     <VALUE>No</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Interface Language"> 
     <VALUE>English_United_States</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Headset Echo-Noise Suppression"> 
     <VALUE>No</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Feature Call List"> 
     <VALUE>Yes</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Polycom Override Date Long Format"> 
     <VALUE>D</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="SIP Session Timeout"> 
     <VALUE>60</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="ReloadedLast"> 
     <VALUE>20140905170113Z</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Phone Manufacturer"> 
     <VALUE>Polycom</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Disable Delayed Media"> 
     <VALUE>No</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Station Appearances"> 
     <VALUE>0|Private|USISM010|Yes</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Inbound SIP Security Challenge"> 
     <VALUE>none</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Call per Station"> 
     <VALUE>1</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Bus Gain"> 
     <VALUE>0</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="RTP QOS Byte"> 
     <VALUE>B8</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Call Dialtone Timeout"> 
     <VALUE>15</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Feature Call List Placed"> 
     <VALUE>Yes</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Password"> 
     <VALUE>F08470F66758CE835CA9DD495F57E5B433F03937D78CFA01CAC315492D7F167C</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Location NTP Server Overrides DHCP"> 
     <VALUE>No</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Electronic Hookswitch Mode"> 
     <VALUE>0</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Authentication"> 
     <VALUE>Yes</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Echo Cancellation"> 
     <VALUE>No</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Phone Limits Calls Per Line Key"> 
     <VALUE>No</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Feature Presence"> 
     <VALUE>No</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="TimeZone"> 
     <VALUE>CST</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Phone Model"> 
     <VALUE>IP331</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Persist Handset Volume"> 
     <VALUE>Yes</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="SIP Register Interval"> 
     <VALUE>86400</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="MWI Message Light"> 
     <VALUE>Yes</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Audio Protocol"> 
     <VALUE>RTP</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="VQM Collector Period"> 
     <VALUE>20</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Polycom Override 24 Hour Clock"> 
     <VALUE>D</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Polycom Headset Sidetone Gain"> 
     <VALUE>-3</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Use SIP Session Timer"> 
     <VALUE>Yes</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Media Port Start Range"> 
     <VALUE>2222</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Dialplan Digitmap Timeout"> 
     <VALUE>3|1|3|3</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Call Offering Timeout"> 
     <VALUE>0</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="DefaultLabelType"> 
     <VALUE>Station</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Feature Group Call Pickup"> 
     <VALUE>Yes</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Syslog Transport"> 
     <VALUE>1</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="MAC Address"> 
     <VALUE>0004F2A72B5F</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Location Description"> 
     <VALUE>Colonnade</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Sync DND To IC Status"> 
     <VALUE>No</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Polycom Headset Speaker Gain"> 
     <VALUE>4</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Persistent"> 
     <VALUE>Yes</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Disable App Logs When Using Syslog"> 
     <VALUE>Yes</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Location Time Zone Overrides DHCP"> 
     <VALUE>Yes</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="User Name"> 
     <VALUE>38bc4dfa7e384f29bb7e62fc24dac94d</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="IP Address"> 
     <VALUE>10.175.250.106</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Terminate Call Analysis On Connect"> 
     <VALUE>Yes</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Disconnect on Broken RTP"> 
     <VALUE>0</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Syslog Render Level"> 
     <VALUE>0</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Headset Mode"> 
     <VALUE>Yes</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="DTMF On Time"> 
     <VALUE>80</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="DTMF Type"> 
     <VALUE>RFC2833</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Persist Headset Volume"> 
     <VALUE>Yes</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Feature Call List Received"> 
     <VALUE>Yes</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="SIP QOS Byte"> 
     <VALUE>Not Set</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Dial On Offhook"> 
     <VALUE>No</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Use Proxy"> 
     <VALUE>Not Set</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Network Gain"> 
     <VALUE>0</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Disallow Media Server Passthru"> 
     <VALUE>No</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Feature Directory"> 
     <VALUE>Yes</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="External Devices Determine Codecs"> 
     <VALUE>No</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Connection Call Warm Down Time"> 
     <VALUE>5</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Feature Messaging"> 
     <VALUE>No</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="DTMF Payload"> 
     <VALUE>101</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Handset Echo-Noise Suppression"> 
     <VALUE>No</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Disable Delayed Media reINVITE"> 
     <VALUE>No</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Name"> 
     <VALUE>USISM010</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Persist Handsfree Volume"> 
     <VALUE>Yes</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="IP3X0 Line 2 Key Function"> 
     <VALUE>Line2</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Feature Call List Missed"> 
     <VALUE>No</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Emergency Outbound ANI"> 
     <VALUE>19727152000</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Dialplan Digitmap"> 
     <VALUE>x.T|*T|*905|*90[1-4]x.T</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Allow SIP Registration"> 
     <VALUE>Yes</VALUE> 
     </ATTRIBUTE> 
     <ATTRIBUTE NAME="Date Last Modified"> 
     <VALUE>1372825753</VALUE> 
     </ATTRIBUTE> 
    </ENTRY> 
     </ENTRY> 
     <ENTRY NAME="Workstations" CLASS="Workstations"> 
      <ENTRY NAME="GBADM103" CLASS="Workstation"> 
      <ATTRIBUTE NAME="Security"> 
       <VALUE>Minimal</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Active"> 
       <VALUE>Yes</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Counted Licenses"> 
       <VALUE>I3_LICENSE_BASIC_STATION</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Connection Type"> 
       <VALUE>SIPAddress</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="SIP ID Address"> 
       <VALUE>GBADM103</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Station Type"> 
       <VALUE>Workstation</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Managed Label"> 
       <VALUE>GBADM103</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Line"> 
       <VALUE>sip:[email protected]:5060</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Licenses Enabled"> 
       <VALUE>Yes</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="MAC Address"> 
     <VALUE>0004F2B37157</VALUE> 
     </ATTRIBUTE> 
      <ATTRIBUTE NAME="Managed IP Phone"> 
       <VALUE>51948094-c6e6-4fb9-bb76-ba1986c51429</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Date Last Modified"> 
     <VALUE>1410882147</VALUE> 
     </ATTRIBUTE> 
      </ENTRY> 
      <ENTRY NAME="GBADM104" CLASS="Workstation"> 
      <ATTRIBUTE NAME="Counted Licenses"> 
       <VALUE>I3_LICENSE_BASIC_STATION</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="SIP ID Address"> 
       <VALUE>GBADM104</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Managed Label"> 
       <VALUE>GBADM104</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Extension"> 
       <VALUE>903104</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Line"> 
       <VALUE>sip:[email protected]:5060</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="MAC Address"> 
       <VALUE>0004F2B37167</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Persistent"> 
       <VALUE>Yes</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Managed IP Phone"> 
       <VALUE>51dbb1fe-9957-420a-bfc3-3f4d9bc1b2fc</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Date Last Modified"> 
       <VALUE>1410881183</VALUE> 
      </ATTRIBUTE> 
      </ENTRY> 
      <ENTRY NAME="GBADS201" CLASS="Workstation"> 
      <ATTRIBUTE NAME="Counted Licenses"> 
       <VALUE>I3_LICENSE_BASIC_STATION</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Connection Type"> 
       <VALUE>SIPAddress</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="SIP ID Address"> 
       <VALUE>GBADS201</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Station Type"> 
       <VALUE>Workstation</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Managed Label"> 
       <VALUE>GBADS201</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="MAC Address"> 
       <VALUE>UK1058597LT.uk-eire.regus.local</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Managed IP Phone"> 
       <VALUE>51eace77-7f6d-467a-bbac-b27329229c53</VALUE> 
      </ATTRIBUTE> 
      <ATTRIBUTE NAME="Date Last Modified"> 
       <VALUE>1372819315</VALUE> 
      </ATTRIBUTE> 
      </ENTRY> 
     </ENTRY> 
     </ENTRY> 
    </ENTRY> 
    </ENTRY> 
+0

輸入圖片很漂亮,但輸入XML會更有用。 – kjhughes 2014-10-01 20:38:49

+0

截圖中的XML可以在這裏找到:http://tinyurl.com/lnstls4 – NiteOwls 2014-10-02 00:08:15

+0

你應該通過[**編輯你的問題**](http://meta.stackexchange。 COM /問題/ 21788 /如何-做編輯工作)。 – kjhughes 2014-10-02 00:16:24

回答

1

我在這裏大多猜測。以下樣式表:

XSLT 1.0

<?xml version='1.0'?> 
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > 
<xsl:output method="xml" omit-xml-declaration="yes" version="1.0" encoding="utf-8" indent="yes"/> 

<xsl:key name="entry-by-name" match="ENTRY" use="@NAME" /> 

<xsl:template match="/"> 
    <html> 
     <body> 
      <table border="1"> 
       <tr> 
        <th>Name</th> 
        <th>Software Version</th> 
        <th>Status</th> 
       </tr> 
       <xsl:for-each select="ENTRY/ENTRY/ENTRY/ENTRY[@CLASS='Workstation']"> 
        <tr> 
         <td> 
          <xsl:value-of select="@NAME"/> 
         </td> 
         <td> 
          <xsl:value-of select="key('entry-by-name', ATTRIBUTE[@NAME='Managed IP Phone']/VALUE)/ATTRIBUTE[@NAME='Software Version']/VALUE"/> 
         </td> 
         <td>.</td> 
        </tr> 
       </xsl:for-each> 
      </table> 
     </body> 
    </html> 
</xsl:template> 

</xsl:stylesheet> 

施加到您的示例性輸入(!爲良好性校正的)將產生以下結果

<html> 
    <body> 
     <table border="1"> 
     <tr> 
      <th>Name</th> 
      <th>Software Version</th> 
      <th>Status</th> 
     </tr> 
     <tr> 
      <td>GBADM103</td> 
      <td>3.2.7.0198</td> 
      <td>.</td> 
     </tr> 
     <tr> 
      <td>GBADM104</td> 
      <td>3.2.7.0198</td> 
      <td>.</td> 
     </tr> 
     <tr> 
      <td>GBADS201</td> 
      <td>3.2.7.0198</td> 
      <td>.</td> 
     </tr> 
     </table> 
    </body> 
</html> 

呈現爲:

enter image description here

注意使用謂詞選擇感興趣的節點,並利用關鍵從XML輸入的另一個分支查找數據。

+0

是的,(第一個)錯誤是OP在'xsl:for-each/@ select'中有太多'ENTRY'步驟:5他應該有4個。改變這個會給你製作的表格(但是你的修復包含了額外的風格改進)。當你發佈你的答案時,我試圖確定OP打算如何處理'.'狀態列;我認爲這對於OP來說是充足的,尤其是考慮到他的問題中缺乏預期的輸出結果。 – kjhughes 2014-10-02 17:24:58

+0

非常感謝您的回覆。請不要在Visual Studio或IE瀏覽器中運行原始代碼不會返回標籤名稱,軟件版本和狀態以外的任何數據。爲for-each select語句添加另一個ENTRY /將返回所需的數據。 – NiteOwls 2014-10-03 10:01:28

+0

@NiteOwls正如我在我的回覆中提到的那樣,您在這裏發佈的輸入是**而不是格式良好的。它最後包含一個額外的'',這幾乎肯定是爲什麼這不會在您的真實投入上運行的原因。 - 除此之外,您的問題是否得到解答? – 2014-10-03 13:58:34