По сути, у меня есть несколько 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, и принимает $ 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...";
}
}
Спасибо!