2010-07-06 23 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循环来通过每个节点。

相关问题