Hallo hackmac,
Brauche es nur in diesem einen speziellen Anwendungsfall. Danach ist das Kapitel für mich abgeschlossen.
Na dann, teste diesen Code mit einem XSLT 2.0-Prozessor wie Saxon (aktuell 9.4) oder AltovaXML (aktuell 2012)
[Bezug, Aufrufsyntax und mehr zum Thema XSLT]:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:fn="http://www.w3.org/2005/xpath-functions"
exclude-result-prefixes="fn xs">
<xsl:output method="xhtml" version="1.0" encoding="UTF-8" indent="yes"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
<xsl:template match="datenstrom">
<html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
<head><title>Test</title></head>
<body>
<p>Sehr geehrter Herr <xsl:value-of select="name"/>,</p>
<p>Nachfolgend Ihre Bestellung.</p>
<xsl:for-each-group select="*[fn:local-name()[fn:starts-with(.,'feld')]]"
group-by="fn:substring-before(local-name(),'_')">
<p>aus dem Typ<xsl:value-of select="fn:position()"/>:</p>
<ul>
<xsl:for-each select="current-group()">
<li><xsl:value-of select="."/></li>
</xsl:for-each>
</ul>
</xsl:for-each-group>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
HTML-Ergebnis:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Test</title>
</head>
<body>
<p>Sehr geehrter Herr Mustermann,</p>
<p>Nachfolgend Ihre Bestellung.</p>
<p>aus dem Typ1:</p>
<ul>
<li>Conten1</li>
<li>Conten2</li>
</ul>
<p>aus dem Typ2:</p>
<ul>
<li>Content3</li>
<li>Content4</li>
</ul>
</body>
</html>
Sinnvoll wäre noch ein Element anrede oder selbiges Attribut bei name.
Versuche dennoch Grundkenntnisse zu erwerben, ansonsten führt die Nutzung des Beispiels nur zu vielen weiteren Fragen …
Grüße,
Thomas