我有一个简单的 xml 文件,我需要将其转换为包含一些嵌套的无序列表的 html 这是 xml:
<Beer>
<name>Guinnes Draught</name>
<type>stout</type>
<manufacturer>Arthur Guinness Son & Co</manufacturer>
<ingredients>
<ingredient>malt</ingredient>
<ingredient>hop</ingredient>
<ingredient>water</ingredient>
<ingredient>barley</ingredient>
<ingredient>yeast</ingredient>
</ingredients>
<alcChars>
<alcohol>4.2</alcohol>
<density>15</density>
<calories>150</calories>
<filtered>true</filtered>
<package>glass bottle</package>
<volume>0.33</volume>
</alcChars>
</Beer>
这是我的 xsl 文件(已编辑):
<xsl:template match="/">
<html>
<head>
<title>Beer description</title>
</head>
<body>
<div>Beer:</div>
<ul>
<xsl:apply-templates />
</ul>
</body>
</html>
</xsl:template>
<xsl:template match="name">
<li>Name - <xsl:value-of select="." /> </li>
</xsl:template>
<xsl:template match="type">
<li>Type - <xsl:value-of select="." /> </li>
</xsl:template>
<xsl:template match="manufacturer">
<li>Manufacturer - <xsl:value-of select="." /> </li>
</xsl:template>
<xsl:template match="ingredients">
<li>Ingredients: <br/>
<ul>
<xsl:for-each select="ingredient">
<li> <xsl:value-of select="." /> </li>
</xsl:for-each>
</ul>
</li>
</xsl:template>
<xsl:template match="alcChars | nonAlcChars" >
<li>Characteristics: <br/>
<ul>
<xsl:for-each select="*">
<li> <xsl:value-of select="." /> </li>
</xsl:for-each>
</ul>
</li>
</xsl:template>
显然这段代码有问题,因为输出文件由带有标题的头部和只有一个<ul>
元素的主体组成。这<ul>
包含所有 xml 数据,但它甚至没有包含在<li>
. 我对 xslt 很陌生,如果有任何建议可以帮助我获得类似的东西,我将不胜感激
<ul>
<li> Name - Guinness </li>
<li> Type - Stout </li>
<li> Chars: <br/>
<ul>
<li> Alc - 4.5 </li>
<li> Dens - 8 </li>
<!-- etc. -->
从我的xml。