2010-07-06 50 views
0

基本上,我有一些我寫的xslt,我想將相同的功能遷移到C#。我知道我必須使用XPath等,但我無法正確訪問正確的節點和屬性。如何將這個XSLT重寫爲C#並獲得相同的結果?

這裏是我想翻譯的功能:

<xsl:for-each select="$mediaNode/node"> 
    <xsl:variable name="mediaNodeName" select="translate(@nodeName, '_', '')"/> 
    <xsl:if test="Exslt.ExsltStrings:lowercase(substring($mediaNodeName, 1, $MainNodeNameLength)) = Exslt.ExsltStrings:lowercase($MainNodeName)"> 
     <!-- do stuff with @nodeName and such --> 
    </xsl:if> 
</xsl:for-each> 

這個XSLT模板花費$ galleryOf作爲參數,這是一把umbraco XML NODEID的一個int,它需要$ MainNodeName這是我將在該循環內進行比較的文本。

我只需要一些幫助,弄清楚如何以我在這裏做的時尚,但使用C#來獲得每個節點。

這是我一直努力着:

public static string GetGalleryById(int mediaNodeID, string filename) 
    { 
     string results = ""; 

     // if node exists then look for images 
     if (mediaNodeID > 0) 
     { 
      // get a node iterator for the media node section passed in 
      XPathNodeIterator xni = umbraco.library.GetMedia(mediaNodeID, false); 
      xni = xni.Current.SelectChildren("node", ""); 

      // loop through all of the images in the folder to find ones that match the @param filename 
      while (xni.MoveNext()) 
      { 
       string currentName = 
       currentName = currentName.Replace("_", ""); 


      // // if there's a match then get build the html and add to results 
      // if (currentName.Substring(1, filename.Length).ToLower() == filename.ToLower()) 


      return results; 

     } 
     // otherwise, return no result. 
     else 
     { 
      return "Nothing to see here..."; 
     } 
    } 

謝謝!

回答

0

我結束了剛剛使用XPathNodeIterator來選擇我想要的節點,並從那裏我只是使用foreach循環來通過每個節點。

相關問題