2

良い一日、

次の XML ファイルがあります。

<?xml version="1.0" encoding="utf-8" ?>
<company>
    <name>XYZ Inc.</name>
    <address1>One Abc Way</address1>
    <address2>Some avenue</address2>
    <city>Tech city</city>
    <country>Neverland</country>
    <products>
        <product id="123">Toaster</product>
        <product id="293">Oven</product>
        <product id="241">Egg Beater</product>
    </products>
</company>

および次の XSLT ファイル:

<table>
    <xsl:for-each select="/company/products">
        <tr>
            <td>Product:</td>
            <td>
                <xsl:value-of select="product"/>
            </td>
        </tr>
    </xsl:for-each>
</table>

しかし、次の C# コードを実行すると:

        string xmlFile = Path.Combine(xmlFolder, "Company.xml");
        string xsltFile = Path.Combine(xsltFolder, "Company.xslt");
        string htmlOutputFile = Path.Combine(templateFolder, "Company.html");

        XPathDocument myXPathDoc = new XPathDocument(xmlFile);
        XslCompiledTransform myXslTrans = new XslCompiledTransform(true);
        myXslTrans.Load(xsltFile);

        XmlTextWriter myWriter = new XmlTextWriter(htmlOutputFile, null);
        myXslTrans.Transform(myXPathDoc, null, myWriter);

しかし、結果の HTML ドキュメントを開くと、最初の製品しか表示されません。

<table>
    <tr>
        <td>
            Product:
        </td>
        <td>
            Toaster
        </td>
    </tr>
</table>

ここで、「。」を使用したかどうかに気付きました。の製品の代わりに

<td><xsl:value-of select="."/>

次に、3 つの値をすべて 1 行で取得します。

私は何が欠けていますか?

ティア、

コソン

4

1 に答える 1

3

あなたの問題は、製品(あなたが持っているのは 1 つだけ) に対して for-each を実行していることです。代わりに、おそらく次のようなことを意味していました。

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">

<table>
    <xsl:for-each select="/company/products/product">
        <tr>
            <td>Product:</td>
            <td>
                <xsl:value-of select="."/>
            </td>
        </tr>
    </xsl:for-each>
</table>                    
</xsl:template>

</xsl:stylesheet>
于 2012-08-22T18:18:03.197 に答える