I definiert ein param Array $gen
als:Verwendung für xsl param in XPath
<xsl:variable name="inline-array">
<item>western</item>
<item>Romance</item>
<item>Adventure</item>
<item>Drama</item>
<item>Comedy</item>
<item>Horror</item>
<item>Action</item>
</xsl:variable>
<xsl:param name="gen" select="document('')/*/xsl:variable[@name='inline-array']/*"/>
ich eine XML VXML von XSLT übertragen möchten. Param $gen
und $gen2
versäumt, den Wert zu wählen, wenn ich es in Xpath
<xsl:value-of select>:
<filled namelist="MovieSummary">
<if cond="MovieSummary == '{$gen[1]}'">
<prompt>
<xsl:value-of select ="//genre[.='western']/../title"/>. <xsl:value-of select ="//genre[.='western']/../summary"/>
</prompt>
<xsl:for-each select="$gen[position()>1]">
<xsl:variable name="gen2"><xsl:value-of select="."/></xsl:variable>
<elseif cond="MovieSummary == '{$gen2}'"/>
<prompt>
<xsl:value-of select ="//genre[.='$gen2']/../title"/>. <xsl:value-of select ="//genre[.='$gen2']/../summary"/>
</prompt>
</xsl:for-each>
<else/>
</if>
</filled>
Es konnte den Wert wählen, wenn ich $gen2
anstelle von „Romance“ oder einem anderen Zeichenfolge verwenden. Aber cond="MovieSummary == '{$gen[1]}'"
funktioniert gut. Es kann nur erzeugen so etwas wie:
<if cond="MovieSummary == 'western'">`enter code here`
<prompt>Range Feud.
Clint Turner is arrested for the murder of his girlfriend Judy's
father, a rival rancher who was an enemy of his own father.
</prompt>
<elseif cond="MovieSummary == 'Romance'"/>
<prompt>. </prompt>
<else/>
</if>
Ich habe versucht:
select ="//genre[.=$gen2]/../summary";
select ="//genre[.={$gen2}]/../summary";
select ="//genre[.='{$gen2}']/../summary"
Alle fehlgeschlagen.
Der meiste von Ihnen gepostete Code ist nicht sichtbar. Formatiere es so, dass es sichtbar ist. Und ich bin mir nicht sicher, ob Sie genügend Daten bereitgestellt haben, um daran zu arbeiten. –
Bitte senden Sie ein vollständiges, reproduzierbares Beispiel (einschließlich einer Eingabe) und geben Sie an, ob XSLT 1.0 oder 2.0 verwendet wird. –