XSLT v2 in XSLT v1
Hallo zusammen,
ich habe ein Problem mit der Konvertierung vom XML Dateien via XSLT. Version 2 und Version 1.
Und zwar ist es durch meinen Hoster nicht möglich mittels eines PHP Skripts ein XSLT version 2 Dokument zu Transformieren.
Diese Skript funktioniert nur mit XSLT v1:
Wie kann ich diesen Teil der XSLT v2 in XSLT v1 umsetzen? Bzw. geht das Überhaupt?
Ausgangs XML ist diese:
Raus kommen soll diese Struktur:
Würde mich riesig über eure Antworten freuen!
Grüße,
chrisen
ich habe ein Problem mit der Konvertierung vom XML Dateien via XSLT. Version 2 und Version 1.
Und zwar ist es durch meinen Hoster nicht möglich mittels eines PHP Skripts ein XSLT version 2 Dokument zu Transformieren.
Diese Skript funktioniert nur mit XSLT v1:
#!/usr/local/php5.6/bin/php
<?php
$xml = new DOMDocument;
$xml->load('//Import/Rohdatei/product.xml');
$xsl = new DOMDocument;
$xsl->load('//Import/XSLT/Articles.xslt');
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl);
$newDOM = $proc->transformToDoc($xml);
$newDOM->formatOutput = true;
$newDOM->save("//Ort/Artikel.xml")
?>
Wie kann ich diesen Teil der XSLT v2 in XSLT v1 umsetzen? Bzw. geht das Überhaupt?
<xsl:for-each-group select="*[starts-with(local-name(),'property')]" group-starting-with="*[starts-with(local-name(),'propertyGroupName')]">
<propertyValue>
<propertyGroupName><xsl:value-of select="current-group()[1]" /></propertyGroupName>
<propertyOptionName><xsl:value-of select="current-group()[2]" /></propertyOptionName>
<propertyValueName><xsl:value-of select="current-group()[3]" /></propertyValueName>
</propertyValue>
</xsl:for-each-group>
Ausgangs XML ist diese:
<propertyGroupName3>1A</propertyGroupName3>
<propertyOptionName3>2A</propertyOptionName3>
<propertyValueName3>3A</propertyValueName3>
<propertyGroupName4>1B</propertyGroupName4>
<propertyOptionName4>2B</propertyOptionName4>
<propertyValueName4>3B</propertyValueName4>
<propertyGroupName5>1C</propertyGroupName5>
<propertyOptionName5>2C</propertyOptionName5>
<propertyValueName5>3C</propertyValueName5>
<propertyGroupName7>1D</propertyGroupName7>
<propertyOptionName7>2D</propertyOptionName7>
<propertyValueName7>3D</propertyValueName7>
Raus kommen soll diese Struktur:
<propertyValue>
<propertyGroupName>1A</propertyGroupName>
<propertyOptionName>2A</propertyOptionName>
<propertyValueName>3A</propertyValueName>
</propertyValue>
<propertyValue>
<propertyGroupName>1B</propertyGroupName>
<propertyOptionName>2B</propertyOptionName>
<propertyValueName>3B</propertyValueName>
</propertyValue>
<propertyValue>
<propertyGroupName>1C</propertyGroupName>
<propertyOptionName>2C</propertyOptionName>
<propertyValueName>3C</propertyValueName>
</propertyValue>
<propertyValue>
<propertyGroupName>1D</propertyGroupName>
<propertyOptionName>2D</propertyOptionName>
<propertyValueName>3D</propertyValueName>
</propertyValue>
Würde mich riesig über eure Antworten freuen!
Grüße,
chrisen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 315344
Url: https://administrator.de/forum/xslt-v2-in-xslt-v1-315344.html
Ausgedruckt am: 09.01.2025 um 15:01 Uhr
3 Kommentare
Neuester Kommentar
Hallo @chrisen,
kannst du mit folgendem "xsl for-each" Schnippsel machen (in dein bestehendes XSLT einbauen), das ist XSLT v1 kompatibel und macht das gleiche wie das XLST v2 von oben:
Grüße Uwe
kannst du mit folgendem "xsl for-each" Schnippsel machen (in dein bestehendes XSLT einbauen), das ist XSLT v1 kompatibel und macht das gleiche wie das XLST v2 von oben:
<xsl:for-each select="*[starts-with(local-name(),'propertyGroupName')]">
<xsl:variable name="pos" select="position()" />
<propertyValue>
<propertyGroupName><xsl:value-of select="."/></propertyGroupName>
<propertyValueName><xsl:value-of select="../*[starts-with(local-name(),'propertyOptionName')][$pos]"/></propertyValueName>
<propertyOptionName><xsl:value-of select="../*[starts-with(local-name(),'propertyValueName')][$pos]"/></propertyOptionName>
</propertyValue>
</xsl:for-each>
Würde mich riesig über eure Antworten freuen!
Ich mich auch ab und zu über ein kühles Bierchen Grüße Uwe
Zischhhhhhh, Merci !!