Hallo zusammen,
mein problem liegt in der Verschachtelung von mehreren When-Bedingungen. Das XSL-File sieht folgendermaßen aus:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- XSL-Transformation fuer Distler-Flyer -->
<xslutput method="xml" indent="yes" encoding="utf-8" standalone="yes"/>
<xsl:template match="/">
<Root>
<xsl:apply-templates select="/CatalogType/MediaItemList"/>
</Root>
</xsl:template>
<xsl:template match="MediaItemList">
<xsl:for-each select="MediaItem">
<xsl:apply-templates select="."/>
</xsl:for-each>
</xsl:template>
<xsl:template match="MediaItem">
<!-- Bedingung Schiene A -->
<xsl:choose>
<xsl:when test='count(UserFields/UserField_14) > 0'>
<!-- Produktteaser -->
<Produktteaser>
<xsl:value-of select="UserFields/UserField_2"/><xsl:text></xsl:text>
</Produktteaser>
<!-- Produkttitel -->
<Produkttitel>
<xsl:value-of select="UserFields/UserField_3"/><xsl:text></xsl:text>
</Produkttitel>
<!-- Produktbeschreibung -->
<Produktbeschreibung>
<xsl:value-of select="UserFields/UserField_4"/><xsl:text></xsl:text>
</Produktbeschreibung>
<!-- Pflichtext -->
<xsl:choose>
<xsl:when test='count(UserFields/UserField_7) > 0'>
<Pflichttext>Diese Worte sollen dann platziert werden.</Pflichttext>
</xsl:when>
</xsl:choose>
<!-- Grundpreis -->
<xsl:choose>
<xsl:when test='count(UserFields/UserField_9) > 0'>
<Grundpreis>Entspricht € <xsl:value-of select="UserFields/UserField_9"/>.</Grundpreis>
</xsl:when>
</xsl:choose>
<!-- UVP -->
<xsl:choose>
<xsl:when test='count(UserFields/UserField_7) > 0'>
<UVP>UVP*: € <xsl:value-of select="UserFields/UserField_7"/></UVP>
</xsl:when>
</xsl:choose>
<!-- Mengenangabe -->
<Mengenangabe>
<xsl:value-of select="UserFields/UserField_6"/><xsl:text></xsl:text>
</Mengenangabe>
<!-- VK -->
<VK>
<xsl:value-of select="UserFields/UserField_8"/>
</VK>
<!-- Produktbild -->
<Produktbild>
<xsl:attribute name="href">
<xsl:value-of select="AssetProperties/Filepath"/>
</xsl:attribute>
</Produktbild>
</xsl:when>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
Für die Bedingung
„ <xsl:choose>
<xsl:when test='count(UserFields/UserField_7) > x'>
<Pflichttext>Diese Worte sollen dann platziert werden.</Pflichttext>
</xsl:when>
</xsl:choose>“
funktioniert das XSL-File schon nicht mehr. Die ursprüngliche XML-Datei hat in dem „UserField_7“ den Wert „1“.
Darf man Bedingungen in XSL nicht verschachteln oder liegt mein Problem an einer anderen Stelle?
Zudem gibt der Transformator das gewünschte Feld aus sobald das „UserField_4“ einen Inhalt hat.
Tausend Dank für eure Tipps im Voraus!
Der Beitrag ging ehemals hier los ---> http://entwickler-forum.de/showthread.php?p=172337
Bewerten Sie diesen Beitrag von xml-disco Beitrag melden Beitrag bearbeiten/löschen
mein problem liegt in der Verschachtelung von mehreren When-Bedingungen. Das XSL-File sieht folgendermaßen aus:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- XSL-Transformation fuer Distler-Flyer -->
<xslutput method="xml" indent="yes" encoding="utf-8" standalone="yes"/>
<xsl:template match="/">
<Root>
<xsl:apply-templates select="/CatalogType/MediaItemList"/>
</Root>
</xsl:template>
<xsl:template match="MediaItemList">
<xsl:for-each select="MediaItem">
<xsl:apply-templates select="."/>
</xsl:for-each>
</xsl:template>
<xsl:template match="MediaItem">
<!-- Bedingung Schiene A -->
<xsl:choose>
<xsl:when test='count(UserFields/UserField_14) > 0'>
<!-- Produktteaser -->
<Produktteaser>
<xsl:value-of select="UserFields/UserField_2"/><xsl:text></xsl:text>
</Produktteaser>
<!-- Produkttitel -->
<Produkttitel>
<xsl:value-of select="UserFields/UserField_3"/><xsl:text></xsl:text>
</Produkttitel>
<!-- Produktbeschreibung -->
<Produktbeschreibung>
<xsl:value-of select="UserFields/UserField_4"/><xsl:text></xsl:text>
</Produktbeschreibung>
<!-- Pflichtext -->
<xsl:choose>
<xsl:when test='count(UserFields/UserField_7) > 0'>
<Pflichttext>Diese Worte sollen dann platziert werden.</Pflichttext>
</xsl:when>
</xsl:choose>
<!-- Grundpreis -->
<xsl:choose>
<xsl:when test='count(UserFields/UserField_9) > 0'>
<Grundpreis>Entspricht € <xsl:value-of select="UserFields/UserField_9"/>.</Grundpreis>
</xsl:when>
</xsl:choose>
<!-- UVP -->
<xsl:choose>
<xsl:when test='count(UserFields/UserField_7) > 0'>
<UVP>UVP*: € <xsl:value-of select="UserFields/UserField_7"/></UVP>
</xsl:when>
</xsl:choose>
<!-- Mengenangabe -->
<Mengenangabe>
<xsl:value-of select="UserFields/UserField_6"/><xsl:text></xsl:text>
</Mengenangabe>
<!-- VK -->
<VK>
<xsl:value-of select="UserFields/UserField_8"/>
</VK>
<!-- Produktbild -->
<Produktbild>
<xsl:attribute name="href">
<xsl:value-of select="AssetProperties/Filepath"/>
</xsl:attribute>
</Produktbild>
</xsl:when>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
Für die Bedingung
„ <xsl:choose>
<xsl:when test='count(UserFields/UserField_7) > x'>
<Pflichttext>Diese Worte sollen dann platziert werden.</Pflichttext>
</xsl:when>
</xsl:choose>“
funktioniert das XSL-File schon nicht mehr. Die ursprüngliche XML-Datei hat in dem „UserField_7“ den Wert „1“.
Darf man Bedingungen in XSL nicht verschachteln oder liegt mein Problem an einer anderen Stelle?
Zudem gibt der Transformator das gewünschte Feld aus sobald das „UserField_4“ einen Inhalt hat.
Tausend Dank für eure Tipps im Voraus!
Der Beitrag ging ehemals hier los ---> http://entwickler-forum.de/showthread.php?p=172337
Bewerten Sie diesen Beitrag von xml-disco Beitrag melden Beitrag bearbeiten/löschen