Wie kann ich eine if-Anweisung in meine Schleifenbedingung in XSLT aufnehmen?
Ich habe 2 oder 3 verschiedene Szenarien, die die Daten definieren, die ich durchschleifen möchte. Zum Beispiel kann es eine Produkt-ID geben oder auch nicht. Wenn ja, möchte ich nur die Datensätze durchlaufen, die diese Produkt-ID enthalten, ansonsten möchte ich alle Datensätze. Ich habe versucht, etwas Ähnliches zu tun:
<xsl:variable name="knowledgebaseLoop">
<xsl:choose>
<xsl:when test="string-length($productId) > 0">
<xsl:copy-of select="$currentPage/child::* [ID = $parentId]"/>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="$currentPage/child::* [ID = $parentId]"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:for-each select="knowledgebaseLoop">
<xsl:if test="position() > $recordsPerPage * number($pageNumber - 1) and position() <= number($recordsPerPage * number($pageNumber - 1) + $recordsPerPage )">
<div id="main_body_listing">
<div class="listing_title2"><a href="{umbraco.library:NiceUrl(current()/@id)}"><xsl:value-of select="current()/@nodeName"/></a></div>
<xsl:value-of select="current()/summary"/>
</div>
</xsl:if>
</xsl:for-each>
Aber es ist nicht in der Lage, die XSLT zu parsen. Ich weiß, die 2 Bedingungen sind die gleichen, ich war im Begriff, eine neu zu schreiben, sobald ich es funktioniert. Vielen Dank im Voraus für jede Hilfe!
UPDATE:
Hier ist ein XML-Beispiel:
<Knowledgebase id="1073" parentID="-1" level="1" writerID="0" creatorID="0" nodeType="1062" template="1083" sortOrder="5" createDate="2011-04-20T13:43:41" updateDate="2011-05-11T14:34:23" nodeName="Knowledgebase" urlName="knowledgebase" writerName="Chris" creatorName="Chris" path="-1,1073" isDoc=""><pageTitle>Knowledgebase</pageTitle><metaDescription>knowledgebase</metaDescription><metaKeywords>knowledgebase</metaKeywords><umbracoUrlName /><Article id="1074" parentID="1073" level="2" writerID="0" creatorID="0" nodeType="1063" template="1084" sortOrder="1" createDate="2011-04-20T13:44:13" updateDate="2011-05-16T09:39:12" nodeName="What is the answer to this question?" urlName="what-is-the-answer-to-this-question" writerName="Chris" creatorName="Chris" path="-1,1073,1074" isDoc=""><title>Change 2 Test 2</title><summary>Change 2 Test 2</summary><description>
<p><strong>Change 2 Test 2<br />
</strong></p>
</description><relatedProducts>1071,1076</relatedProducts><pageTitle>asd</pageTitle><metaDescription>asd</metaDescription><metaKeywords>asd</metaKeywords><umbracoUrlName /></Article><Article id="1082" parentID="1073" level="2" writerID="0" creatorID="3" nodeType="1063" template="1084" sortOrder="2" createDate="2011-05-04T09:59:31" updateDate="2011-05-11T14:34:23" nodeName="Question 2" urlName="question-2" writerName="Chris" creatorName="Content Writer" path="-1,1073,1082" isDoc=""><title>test</title><summary>test 22</summary><description>
<p>tst</p>
</description><relatedProducts>1075</relatedProducts><pageTitle /><metaDescription></metaDescription><metaKeywords></metaKeywords><umbracoUrlName /></Article><Article id="1146" parentID="1073" level="2" writerID="4" creatorID="3" nodeType="1063" template="1084" sortOrder="3" createDate="2011-05-13T15:36:14" updateDate="2011-05-13T15:37:21" nodeName="Question 3" urlName="question-3" writerName="Content Approver" creatorName="Content Writer" path="-1,1073,1146" isDoc=""><title>Test</title><summary></summary><description>
<p>Test</p>
</description><relatedProducts /><pageTitle>Test</pageTitle><metaDescription>test</metaDescription><metaKeywords>test</metaKeywords><umbracoUrlName /></Article></Knowledgebase>
Ich brauche immer die Artikel, bei denen die übergeordnete ID 1073 ist. Wenn und nur wenn eine Produkt-ID existiert, möchte ich die Artikel, bei denen die Produkt-ID in der Liste der verwandten Produkte steht. Nochmals vielen Dank!