基本上,我有一些我写过的xslt,我想将相同的功能迁移到C#。我知道我必须使用XPath等,但我无法正确访问正确的节点和属性。
以下是我要翻译的功能:
<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,这是我将在for循环中进行比较的文本。
我只需要一些帮助,找出如何以我在这里使用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 :(得分:0)
我最终只是使用XPathNodeIterator来选择我想要的节点,并且从那里我只使用了一个foreach循环来遍历每个节点。