美好的一天,
我有以下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="."/>
然后我得到所有三个值,但是在一行上。
我错过了什么?
TIA,
COSON
答案 0 :(得分:3)
你的问题是你在产品(你只有一个)中为每个人做了。你可能意味着这样的事情:
<?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>