Как бы я переписал этот XSLT на C # и получить те же результаты? - PullRequest
0 голосов
/ 06 июля 2010

По сути, у меня есть несколько 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...";
        }
    }

Спасибо!

1 Ответ

0 голосов
/ 08 июля 2010

В итоге я использовал XPathNodeIterator для выбора нужных мне узлов, и оттуда я просто использовал цикл foreach для прохождения каждого узла.

...