2011-02-03 29 views
0

我已經寫了一些php代碼來解析已經使用SimpleXML的xml文件,它非常混亂,但可以包含如果有幫助。使用哪種語言來解析xml進行導航

這就是XML文件看起來像(導航文件,那是真的做古怪且不能更改)

<root name="menutest"> 
     <menu> 
      <nav name="home" path="index.php" /> 

      <nav name="menulink1" path="link1.php"> 
       <nav name="menulink1child1" path="menulink1childlink1.php"> 
       <nav name="menulink1child1child1" 
         path="menulink1childlink1childlink1.php" /> 
       </nav> 
      </nav> 

      <nav name="menulink2" path="link2.php"> 
      <nav name="menulink1child2" path="menulink2childlink2.php"> 
       <nav name="menulink2child2child2" 
        path="menulink2childlink2childlink2.php" /> 
      </nav> 
      </nav> 

      <nav name="menulink3" path="link3.php"> 
      <nav name="menulink3child3" path="menulink3childlink3.php"> 
       <nav name="menulink3child3child3" 
         path="menulink3childlink3childlink3.php" /> 
      </nav> 
      </nav> 

      <nav name="menulink4" path="link4.php"> 
      <nav name="menulink4child4" 
        path="menulink4childlink4.php"> 
       <nav name="menulink4child4child4" 
        path="menulink4childlink4childlink4.php" /> 
      </nav> 
      </nav> 
     </menu> 
    </root> 

只使用SimpleXML來解析和XPath選擇的節點,然後我就在想使用$ _SERVER請求的頁面URL,以便我可以檢測到應該打開哪些菜單項以使用正確的CSS樣式,例如添加樣式NAV NAME =「menulink1child1child1。 注意,只有1個導航元素應選擇頂層頁面和隨後的子元素,當他們進入該元素

homepage: home | menulink1 | menulink2| menulink3 | menulink4 | 
menulink1: menulink1 
      -- childlink1 
      | menulink2 | menulink3 | menulink4 
的子頁

注意該菜單是垂直的,不是水平的,所以子元素必須出現在父元素的正確順序,不只是下面自動在網頁上:)

我的疑問句的新行重刑是;解析需要條件來選擇子元素的xml導航文件的最佳方式是什麼?我應該看看使用XSL來轉換xml嗎?

TIA 賈裏德

+0

你看過SimpleXML嗎? – Darren 2011-02-03 21:15:48

+0

@Darren是的,這是我一直用來解析XML,但我發現當用戶轉到某個級別的站點時,很難遍歷到正確的節點。 – Jared 2011-02-03 21:21:07

回答

0

值得學習XSLT的投資。這是一種讓一些人一見鍾情的語言,許多人在掌握之前放棄了這種語言,但一旦你意識到了這一點,它就可以很好地解決這類問題,並且可以同時用於服務器端,客戶端和客戶端。