Ваш XML в порядке.Я исправил некоторые ошибки в вашем XSL.Попробуйте это:
<?xml-stylesheet type="text/xsl"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="4.0"/>
<xsl:template match="/">
<html>
<head>
<title>Election Night Results</title>
<link href="autotxt.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<p><strong>wName:</strong><xsl:value-of select="/delivery/wName"/></p>
<p><strong>wContact:</strong><xsl:value-of select="/delivery/wContact"/></p>
<h2>Parts</h2>
<table>
<tr>
<th>Item</th>
<th>Quantity</th>
<th>Price</th>
</tr>
<xsl:for-each select="/delivery/manifest/item">
<tr>
<td><xsl:value-of select="itemName"/></td>
<td><xsl:value-of select="itemQty"/></td>
<td><xsl:value-of select="itemPrice"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Эта строка:
<xsl:value-of select="/delivery/wName"/>
Выбирает элемент wName из элемента доставки, который, как вы указали, был корневым элементом.
Эта строка:
<xsl:for-each select="/delivery/manifest/item">
Указывает интерпретатору XSL циклически проходить через каждый элемент item в / delivery / manifest
И в этой строке:
<li><xsl:value-of select="itemName"/></li>
Выводит текстовый узел внутри ltemNameэлемент в элемент HTML.Поскольку вы находитесь внутри элемента foreach, который выбирает элементы / delivery / manufest / item, вам нужно только указать имя элемента в элементе item, который вы хотите вывести, в данном случае itemName.
Эта строка говорит переводчику прекратить зацикливание:
</xsl:for-each>
Надеюсь, это поможет?