Hallo,
vielen Dank für die sehr hilfreiche Antwort!
Die Möglichkeit mit dem Prefix im XML-Dokument fällt leider weg, bleibt also nur noch die Änderung des XSLT-Codes. Hast du vielleicht noch ne Idee wie man das mit dem <xsl:apply-templates /> hinbekommen könnte? Ich brauch das in dieser Reihenfolge:<body>
<xsl:apply-templates select="*[name()='Head']"/>
<xsl:apply-templates select="*[name()='BOM']"/>
<xsl:apply-templates select="*[name()='Head']" mode="toc"/>
</body>wie wähle ich aber diese Templates aus? So geht das nicht.
Du muss den Pfad anpassen, wie würdest du es "normal" machen?
Basierend auf mein vorheriges XSL:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<head>
<title>Untitled</title>
</head>
<body>
<xsl:apply-templates select="./*[name() = 'Article']" />
</body>
</html>
</xsl:template>
<xsl:template match="*[name() = 'Article']">
<div>
<xsl:apply-templates select="./*[name() = 'data']" />
</div>
</xsl:template>
<xsl:template match="*[name() = 'data']">
<h1><xsl:value-of select="."/></h1>
</xsl:template>
</xsl:stylesheet>Wenn der Pfad bei dir anderes ist, muss du das leider entsprechend angeben
<xsl:apply-templates select="*[name() = 'Article']/*[name() = 'ELEMENT]" /><xsl:apply-templates select="*[name() = 'Article']/*[name() = 'ELEMENT][@attribut = 'WERT']" /> etc.
Ich muss doch dann bei jedem einzelnen Element mit
<h1><xsl:value-of select="*[name()='ELEMENT']"/></h1>
den entsprechenden Wert rausholen oder???Ja.
Irgendwie ziemlich scheisse dass des nicht gscheit unterstützt wird!
Leider, und XSLT 2 ist noch nicht wirklich zum produktiven Einsatzt geeignet.
Grüße
ThomasPS: eigentlich müsstest du statt name() local-name() verwenden, aber in deinem Fall ist es gleich.
Klingt plausibel, ich brings aber irgendwie immer noch nicht zum laufen, bin einfach zu blöd scheinbar!
Hier mein Code:
<xsl:template match="/">
<html>
<head>
<title>Stueckliste</title>
</head>
<body>
<xsl:apply-templates select="./*[name()='Head']"/>
<xsl:apply-templates select="./*[name()='BOM']"/>
<xsl:apply-templates select="./*[name()='Head']" mode="toc"/>
</body>
</html>
</xsl:template>
<!-- Darstellung der Kopfdaten - - - - -->
<xsl:template match="*[name()='Article']/*[name()='Head']">
<table class="tab1" bgcolor="#c0c0c0" bordercolor="black" width="650px" heigth="40px" cellspacing="0" cellpadding="0">
<colgroup>
<col width="60px"></col>
<col width="85px"></col>
<col width="155px"></col>
<col width="30px"></col>
<col width="45px"></col>
<col width="75px"></col>
<col width="200px"></col>
</colgroup>
<tr>
<td class="border1" rowspan="2" height="10px"><p align="center">Siemens PTD T</p></td>
<td class="border1" rowspan="2"><p align="center">engeneering <font size="3">BOM</font></p></td>
<td class="border1" bgcolor="#007575"><font color="white"><p> ident no. -EX</p></font></td>
<td class="border1" bgcolor="#007575"><font color="white"><p> RI</p></font></td>
usw....
Das XML-Dokument schaut folgendermaßen aus:
<Article xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xsi:schemaLocation='http://www.bernd.de Article-Schema.xsd'
xmlns='http://www.bernd.de'>
<Head>
<ART.PartID></ART.PartID>
<ART.ZNr></ART.ZNr>
<ART.WeightC></ART.WeightC>
.
.
.
<ART.Surface></ART.Surface>
<ART.MatText></ART.MatText>
</Head>
<BOM>
<Position>
<ARTART.PosNo></ARTART.PosNo>
<ARTART.PartID></ARTART.PartID>
.
.
.
kannst du was damit anfangen?
Vielen Dank!
Cu Bernd